Como faço para criar um convidado kvm executando o servidor Ubuntu com um disco rígido de 2 TB?

0

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.

    
por Anders Iversen 06.02.2015 / 15:01

1 resposta

0

Eu não recomendaria que você instalasse o sistema convidado em um único disco de 3 TB. A GPT poderia resolver seu problema, mas pessoalmente acho que você obtém mais benefícios se usar uma abordagem mais modular, e por que razão precisamos de partições em uma máquina virtual? ;) bem, o MBR ainda está ok para inicializar :) Nos últimos anos, achei a configuração a seguir mais flexível quando se trata de convidados:

  • / dev / sda (disco de 100 a 200 MB com MBR antigo simples apenas para inicialização)
  • / dev / sda1 montado em / boot (ext4 ou similar)
  • / dev / sdb montado em / (4 - 6 GB, partição NO, diretamente formatado com ext4 ou similar, usado para o sistema base)
  • / dev / sdc montado em / srv (no seu caso ~ 3 TB, sem partição, formatado diretamente com ext4 ou similar)
  • / dev / sdX: swap ou / var ou outra coisa e somente se precisarmos, novamente: NO Partition

Primeiro, eu instalaria uma máquina Ubuntu básica usando sda e sdb. Como essa configuração consumirá apenas cerca de 4 GB, você também poderá usá-la como modelo para outros convidados. Depois de concluir a configuração, adicione o disco de 3 TB ao seu convidado para que ele seja reconhecido como / dev / sdc. Formate / dev / sdc diretamente e monte-o em / srv (ou em qualquer outro local de sua preferência).

Quando não estiver usando partições, você também pode redimensionar discos a qualquer momento, mesmo enquanto o sistema estiver em execução e até mesmo a partição /.

Espero que isso ajude, feliz KVMing!

    
por Thomas Kaltenbrunner 07.02.2015 / 05:03