Eu tenho um servidor Ubuntu rodando como um host kvm. O host tem três discos de 1,5 TB eo host usa o lvm e tem um grupo de volume de 4 TB, no qual eu criei um volume lógico de 3 TB chamado nfsserver.
Eu quero criar um convidado executando o servidor Ubuntu, que eu vou use como um servidor de arquivos de 3TB.
O Ubuntu vmbuilder usa mbr para o sistema de arquivos guest, que não suporta discos rígidos de > 2 TB.
Já procurei, mas não consegui encontrar nenhum guia ou tutorial, nem sequer mencionei como criar um convidado usando o GPT sistema de arquivos.
Existe outra solução para isso que está faltando?
O comando que estou usando para criar o guest vm:
vmbuilder kvm ubuntu --suite=trusty --flavour=virtual --raw=/dev/server1/nfsserver --rootsize=3000000 --domain=nfsserver --arch=amd64 --mirror=http://dk.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --user=admin --name=Admin --pass=PassXXXX --addpkg=unattended-upgrades --addpkg=acpid --addpkg=linux-image-generic --addpkg=openssh-server --mem=1024 --hostname=nfsserver --bridge=br0
Com o conjunto rootsize, o vmbuilder falha com "o tamanho da partição ... excede o máximo imposto pela tabela de partições do msdos".
Sem ele, o convidado é construído e funciona bem, mas apenas com o disco de tamanho padrão. Quando dentro do sistema convidado fdisk -l pode ver que o disco (sda) é de 3TB, e a partição root sda1 usa apenas alguns GBs disso. Eu tentei redimensionar a partição, mas isso falha com um erro semelhante 'msdos .. max ..'.
Estou ciente que eu poderia, de dentro do sistema convidado, salvar a pequena partição sda1, reparticionar o sistema de arquivos e alterá-lo para usar gpt e copiar de volta a partição sda1 salva (para uma nova partição raiz de 3TB). Mas isso parece uma solução difícil para mim, e estou pensando que deve haver uma solução mais simples.
lvdisplay no host:
--- Logical volume ---
LV Path /dev/server1/nfsserver
LV Name nfsserver
VG Name server1
LV UUID F8wWeB-GSUI-rxd3-TDQ1-yjcI-af50-s9jdXZ
LV Write Access read/write
LV Creation host, time server1, 2015-02-02 15:56:20 +0100
LV Status available
# open 0
LV Size 3.04 TiB
Current LE 797964
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
EDIT: Thomas' answer below was very helpful in solving my problem, for the benefit of others browsing by this question, here is a detailed description of what I did:
Eu tenho um VG chamado server1 com 4 TB de espaço. Para preparar alguns discos para o convidado, criei e formatei alguns LVs:
lvcreate -L 3000G -n nfsserver server1
lvcreate -L 6G -n nfsserver-root server1
lvcreate -L 200M -n nfsserver-boot server1
lvcreate -L 2G -n nfsserver-swap server1
mkfs.ext4 /dev/mapper/server1-nfsserver-boot
mkfs.ext4 /dev/mapper/server1-nfsserver-root
mkfs.ext4 /dev/mapper/server1-nfsserver
mkswap -f /dev/mapper/server1-nfsserver-swap
Eu instalei virtinstall (apt-get install virtinst), porque você não pode usar o vmbuilder para isso, pois ele irá criar partições, e como Thomas aponta nós realmente não precisamos / queremos partições para isso. Com o virt-install você pode criar um guest e rodar a instalação do ubuntu server no guest quando ele for inicializado - isso permite controlar o que os diferentes discos devem ser usados. Você precisa de uma partição no disco para ser usada como / boot, porque o instalador é incapaz de fazer a própria partição ou irá falhar ao instalar o Grub. Portanto, usamos o fdisk no host antes de criar o convidado:
user@server1:~$ sudo fdisk /dev/mapper/server1-nfsserver-boot
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x95a40881.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-409599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-409599, default 409599):
Using default value 409599
Command (m for help): p
Disk /dev/mapper/server1-nfsserver-boot: 209 MB, 209715200 bytes
255 heads, 63 sectors/track, 25 cylinders, total 409600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x95a40881
Device Boot Start End Blocks Id System
/dev/mapper/server1-nfsserver-boot1 2048 409599 203776 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
user@server1:~$ sudo fdisk -l /dev/mapper/server1-nfsserver-boot
Disk /dev/mapper/server1-nfsserver-boot: 209 MB, 209715200 bytes
127 heads, 37 sectors/track, 87 cylinders, total 409600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x95a40881
Device Boot Start End Blocks Id System
/dev/mapper/server1-nfsserver-boot1 2048 409599 203776 83 Linux
user@server1:~$
Eu ignorei os avisos do fdisk, funcionou bem. Eu baixei o mais recente Ubuntu LTS
wget http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd64.iso
E execute virt-install:
virt-install --name=nfsserver --ram=1024 --os-type=linux --os-variant=ubuntutrusty --cdrom=/home/user/ubuntu-14.04.1-server-amd64.iso --disk path=/dev/mapper/server1-nfsserver-boot --disk path=/dev/mapper/server1-nfsserver-root --disk path=/dev/mapper/server1-nfsserver-swap --network bridge=br0 --vcpus=1 --vnc --noautoconsole
Ele roda muito rápido e inicializa o convidado da iso descarregada. Usando o virt-manager do meu computador desktop na mesma rede que o host, eu poderia me conectar ao guest e passar pela instalação. Quando você chega ao ponto com as partições, o instalador pode ver todos os seus LVs como discos, e é apenas uma questão de dizer qual deve ser usado para o quê.
Eu adicionei o pós-disco de 3 TB: Desligue o convidado, edite o convidado e inicie-o novamente:
virsh shutdown nfsserver
virsh edit nfsserver
Isto abre os convidados xml-file definindo o convidado, eu adicionei meu 3TB LV como um disco extra abaixo dos outros discos já presentes:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/mapper/server1-nfsserver'/>
<target dev='vdd' bus='virtio'/>
</disk>
Então
virsh start nfsserver
E, por último, no seu convidado, você pode montar sua nova unidade:
sudo mount /dev/vdd /your/mount/point
E se for montado, então, para torná-lo permanente, adicione essa linha ao seu / etc / fstab:
/dev/vdd /your/mount/point ext4 errors=remount-ro 0 0
É isso! Agora você tem um convidado com um disco enorme. Graças ao conselho de Thomas, agora você também tem incrivelmente fácil, se você quiser clonar seu convidado ou redimensionar as unidades.