У меня есть сервер Ubuntu, работающий как хост kvm. Хост имеет три диска объемом 1,5 Тбайт, а хост использует lvm и имеет группу томов объемом 4 Тбайт, на которой я создал логический том 3 ТБ, называемый nfsserver.I хочу создать гостевой сервер с ubuntu, который я буду использовать как 3-тибайтный файловый сервер
Ubuntu vmbuilder использует mbr для гостевой файловой системы, которая не может обрабатывать жесткие диски 2TB. Я искал, но не могу найти никаких руководств или howtos, рассказывающих или даже упоминающих, как создать гостя с помощью GPT для гостевой файловой системы.
Есть ли еще одно решение для этого, которое мне не хватает?
Команда, которую я использую для создания гостевой 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
С помощью набора корневых элементов, vmbuilder терпит неудачу с «длиной раздела ... превышает максимальный максимум msdos-partition-table». Без него гость строит и работает просто отлично, но только с диском по умолчанию. Когда внутри гостевой системы fdisk -l может видеть, что диск (sda) равен 3 ТБ, а корневой раздел sda1 использует только несколько ГБ этого. Я попытался изменить размер раздела, но это не удается с аналогичной ошибкой «msdos .. max ..».
Я знаю, что я мог бы, возможно, изнутри гостевой системы сохранить небольшой sda1 переделать файловую систему и изменить ее на использование gpt и скопировать сохраненный раздел sda1 (в новый корневой раздел 3 ТБ). Но это кажется трудным обходным решением для меня, и я думаю, что должно быть более простое решение.
lvdisplay на хосте:
--- 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: ответ Томаса ниже было очень полезно при решении моей проблемы, в интересах других, просматривающих этот вопрос, вот подробное описание того, что я сделал: У меня есть VG, называемый server1 с 4TB пространства. Чтобы подготовить некоторые диски для гостя, я создал и отформатировал некоторые LV:
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
Я установил virtinstall (apt-get install virtinst), потому что вы не можете использовать vmbuilder для этого, так как он будет создавать разделы и как указывает Томас, на самом деле для этого нам не нужны / нужны разделы. С помощью virt-install вы можете создать гостя и запустить установку сервера ubuntu в гостевой системе при загрузке - это позволяет вам контролировать, для чего должны использоваться разные диски. Вам нужен раздел на диске, который будет использоваться как / boot, хотя, поскольку установщик либо не может сам создать раздел, либо не сможет выполнить установку Grub. Поэтому мы используем fdisk на хосте перед созданием guest:
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:~$
Я проигнорировал предупреждения из fdisk, он работал нормально. Я загрузил последнюю версию Ubuntu LTS
wget http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd64.iso
И запустил 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
Он работает очень быстро и загружает гостя из загруженного iso. Используя virt-manager с моего настольного компьютера в той же сети, что и хост, я мог подключиться к гостю и пройти установку. Когда вы переходите к точке с разделами, установщик может видеть все ваши LV как диски, и это просто вопрос, для чего нужно что-то использовать.
Я добавил пароль 3TB-диска: выключите гость, отредактируйте гостя и запустите его agian:
virsh shutdown nfsserver
virsh edit nfsserver
Это откроет гостевой xml-файл, определяющий гостя, я добавил свой 3TB LV в качестве дополнительного диска ниже других уже присутствующих дисков: [!d19 ]
<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>
Затем
virsh start nfsserver
И, наконец, в вашем гостю вы можете установить свой новый диск:
sudo mount /dev/vdd /your/mount/point
И если он монтируется, то сделать это Постоянно добавьте эту строку в ваш / etc / fstab:
/dev/vdd /your/mount/point ext4 errors=remount-ro 0 0
Вот и все! Теперь у вас есть гость с огромным диском. Благодаря советам Томаса теперь у вас также есть удивительно легко, если вы хотите клонировать своего гостя или изменять размеры дисков.