Во-первых, я должен сказать, что я новичок в области управления серверами и виртуализации. После проверки нескольких руководств по этому поводу я попытался расширить хранилище виртуальной машины, созданной в XenServer, с помощью снимка, снятого с другой виртуальной машины. Во-первых, я отключил виртуальную машину и расширил хранилище с 40 ГБ до 80 ГБ через XenCenter. Затем я запустил виртуальную машину и ввел fdisk:
sudo fdisk /dev/xvda
Затем я распечатал таблицу разделов:
Device Boot Start End Sectors Size Id Type
/dev/xvda1 2048 999423 997376 487M 83 Linux
/dev/xvda2 1001470 83884031 82882562 39.5G 5 Extended
/dev/xvda5 1001472 83884031 82882560 39.5G 8e Linux LVM
Я не видел подобной таблицы разделов ни в одном руководстве. Поэтому я попытался создать новую таблицу разделов, похожую на эту. Сначала я удаляю 5 и 2, затем я создал новый расширенный раздел (2) и раздел типа Linux (5). Наконец, я изменил тип 5 на Linux LVM. Итоговая таблица разделов приведена ниже:
Device Boot Start End Sectors Size Id Type
/dev/xvda1 2048 999423 997376 487M 83 Linux
/dev/xvda2 999424 167772159 166772736 79.5G 5 Extended
/dev/xvda5 1001472 167772159 166770688 79.5G 8e Linux LVM
После проверки таблицы я записал ее на диск и перезагрузил виртуальную машину. ВМ запускается без проблем. Я проверил место на диске с помощью sudo df -h
, вот результат:
Filesystem Size Used Avail Use% Mounted on
udev 12G 0 12G 0% /dev
tmpfs 2.4G 8.7M 2.4G 1% /run
/dev/mapper/dbvmviduio--vg-root 35G 1.7G 32G 6% /
tmpfs 12G 0 12G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/xvda1 472M 101M 347M 23% /boot
tmpfs 100K 0 100K 0% /run/lxcfs/controllers
tmpfs 2.4G 0 2.4G 0% /run/user/1000
В конце концов, я пытался бежать resize2fs
как написано в учебниках. Сначала я не знал, как запустить resize2fs на xvda2 или xvda5, я попробовал их оба и получил эти ошибки.
sudo resize2fs /dev/xvda2
resize2fs 1.42.13 (17-May-2015)
resize2fs: Attempt to read block from filesystem resulted in short read while trying to open /dev/xvda2
Couldn't find valid filesystem superblock.
sudo resize2fs /dev/xvda5
resize2fs 1.42.13 (17-May-2015)
resize2fs: Device or resource busy while trying to open /dev/xvda5
Couldn't find valid filesystem superblock.
Есть ли проблема с таблицей разделов? Как я могу решить эти проблемы?
Примечание. Когда мне не удалось решить эти проблемы, я попытался создать только раздел типа Linux (без расширенного), виртуальная машина не запускается после перезагрузки. (После этого я вернулся к снимку).
Я не совсем уверен, какие шаги вы выполнили, но для увеличения объема диска, доступного виртуальной машине Linux, должны произойти три вещи:
Ниже приведены шаги, включенные в данный пример.
Шаг 1. Увеличьте дисковое пространство в XenCenter
Вы это уже сделали.
Шаг 2. Измените таблицу разделов в виртуальной машине
Затем запустите виртуальную машину, так как вам нужно увеличить размер раздела linux / с помощью fdisk. Утилита parted также должна позволять вам изменять размер разделов и быть намного умнее, а также позволять перемещать данные файловой системы, но parted не позволяет вам редактировать работающие разделы. В этом случае, поскольку мы хотим отредактировать, например: / dev / xvda3, который является нашим разделом / и находится в конце виртуального диска, поэтому мне нужно только увеличить размер раздела, а не перемещать его. На работающей виртуальной машине используйте fdisk для увеличения раздела / (/ dev / xvda3):
# fdisk /dev/xvda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000928ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 26 281 2048000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/xvda3 281 1045 6134784 83 Linux
Command (m for help): d
Partition number (1-4): 3
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (281-1566, default 281): 281
Last cylinder, +cylinders or +size{K,M,G} (281-1566, default 1566): 1566
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000928ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 26 281 2048000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/xvda3 281 1566 10325071 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 16: Device or resource busy.
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.
#
Шаг 3. Перезагрузите виртуальную машину.
Теперь, когда последнее предупреждение является точным, вам нужно снова перезагрузить виртуальную машину, чтобы ядро улавливало изменения в геометрии раздела. Однако перезагрузка не изменяет размер доступного дискового пространства раздела /:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda3 5.8G 829M 4.7G 15% /
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 194M 45M 140M 25% /boot
Вы можете исправить это, запустив resize2fs на работающей виртуальной машине, которая автоматически заметит разницу между геометрией раздела и размером файловой системы и расширит файловую систему до максимального размера:
# resize2fs /dev/xvda3
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda3 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/xvda3 to 2581267 (4k) blocks.
The filesystem on /dev/xvda3 is now 2581267 blocks long.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda3 9.7G 830M 8.4G 9% /
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 194M 45M 140M 25% /boot
#
Особая благодарность http://www.simonhiggs.com/articles/xenserver-6.2-exnding-disk-on-a-linux-vm.html
Перед запуском resize2fs вы должны проделать некоторые дополнительные действия ... После того, как вы изменили размер раздела, выполните следующие действия:
Измените размер физического тома на разделе с измененным размером:
sudo lvm pvresize /dev/xvda3
Пересканируйте группу томов:
sudo lvm vgscan
Активировать виртуальную группу:
sudo lvm vgchange -ay
Показать логические тома:
sudo lvdisplay
Имя хранилища вашего корневого тома. Должно получиться так: / dev / vm-name-vg / root
Измените размер логического тома на все дополнительное свободное пространство (не забудьте заменить "/ dev / vm-name-vg / root" на ваше настоящее имя тома из предыдущей команды):
sudo lvm lvresize /dev/vm-name-vg/root -l +100%FREE
Тогда ты можешь сделать
resize2fs /dev/xvda3
теперь он должен работать.
Я не мог заставить себя работать и понять, почему мой способ не работает, но я нашел обходной путь благодаря этому видео .
fdisk /dev/xvda
n
(раздел № 4, / dev / xvda4)w
и сохранили новую таблицу разделовpvcreate /dev/xvda4
vgdisplay
чтобы узнать, какое у меня имя VG (это dbvmviduio-vg)vgextend dbvmviduio-vg /dev/xvda4
lvextend -L+40G /dev/dbvmviduio-vg/root
resize2fs /dev/dbvmviduio-vg/root
и проверил df -h