Назад | Перейти на главную страницу

Как расширить раздел Linux PV после увеличения виртуального диска

VMware позволяет увеличить размер виртуального диска онлайн - когда виртуальная машина работает. Следующие ожидаемые шаги для системы Linux:

  1. расширить раздел: удалить и создать больший с помощью fdisk
  2. увеличить размер PV с помощью pvresize
  3. использовать бесплатные экстенты для lvresize операции
  4. а потом resize2fs для файловой системы

Но я застрял на первом шаге: fdisk и sfdisk по-прежнему отображается старый размер диска.

Мой диск - это виртуальный диск SCSI, подключенный с помощью виртуального контроллера LSI Logic.

Как обновить информацию о размере виртуального диска и таблице разделов, доступную в ядре Linux без перезагрузки ?

Насколько мне известно, все эти шаги возможны для работающей Windows, без перезагрузки и даже без каких-либо действий пользователя благодаря инструментам VMWare. В Linux я тоже собираюсь выполнять все шаги онлайн, и я уже знаю, что шаги 2, 3 и 4 работают онлайн. Но первое - изменение размера раздела, заявленного в таблице разделов (все еще), похоже, требует перезагрузки.

Обновить: Моя система - это Debian Lenny с ядром 2.6.26, а расширенный мной диск является основным диском с большим PV, содержащим «корневой» LV для «/».

Другой предоставленный ответ не касается вашего вопроса, я определил правильную команду для повторного сканирования уже подключенного диска.

Мы должны повторно просканировать ваш уже подключенный диск, сначала определив, какой диск вы хотите повторно просканировать.

ls /sys/class/scsi_disk/

В моем примере я вижу символическую ссылку с именем 0:0:0:0, поэтому мы повторно просканируем этот scsi-диск.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Я просто расширил свой диск VMware, и мне пришлось искать другие ответы, чтобы найти правильную команду. Надеюсь, это избавит будущих искателей от бесполезных попыток.

Сделать это можно без перезагрузки. pvresize не изменяет размер физического тома до тех пор, пока раздел не будет обновлен с добавленным пространством. Вы должны fdisk раздел и воссоздать его с новым полным размером диска, после того, как вы можете повторно сканировать диски, чтобы увидеть дополнительное пространство в первую очередь.

Больше информации: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

Что касается корневой файловой системы / смонтирован на диске, размер которого был изменен, таблица разделов и размер диска не обновляются при повторном сканировании SCSI в Linux 2.6.26.

Я очень надеюсь, что скоро будет лучше с более новыми версиями ядра.

Поэтому мне пришлось:

  • перезагрузитесь в первый раз, чтобы увидеть новый размер диска в fdisk
  • удалить старый первичный раздел PV в fdisk
  • создать запись раздела с тем же номером и начальным сектором до конца диска
  • перезагрузите второй раз ИЛИ запустите partprobe из parted пакет только если / не установлен там
  • Теперь я могу бежать pvresize получить новое свободное место, lvextend и resize2fs выделить больше места для файловой системы

Мне посоветовали просто выбросить эту тупую старую таблицу разделов и запустить pvcreate непосредственно на устройстве, поскольку Grub2 может загружать образ ядра непосредственно из файловой системы в раздел LVM. Но такая настройка совершенно не очевидна для установщиков дистрибутива.

Обновить: Я только что проверил Debian GNU / Linux Jessie 8.2 с ядром 3.16 и parted 3.2, partprobe теперь успешно после редактирования таблицы разделов с cfdisk без перезагрузки. pvresize работает сразу после.

Если вы хотите расширить PV, сохраненный как логический раздел ПК, например /dev/sda5 на расширенном основном разделе /dev/sda2, не используй fdisk но предпочитаю parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

Мой PV не был в разделе, но существовал напрямую на / dev / sdb.

В Ubuntu 16.04.1 я смог сделать следующее, чтобы изменить размер тома с 1024 ГБ до 1,4 ТБ:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Нет fdisk требовалось, и место было немедленно доступно.

Вам необходимо повторно сканировать диски, прежде чем вы сможете сделать больший раздел.

В Centos это можно сделать с помощью

ls /sys/class/scsi_host

затем для каждого хоста

echo "- - -" > /sys/class/scsi_host/host#/scan

(замените # на число)

Также есть еще один шаг к вышеизложенному: расширение ext или любой другой файловой системы, которую вы используете, после изменения размера раздела.

Однако в какой-то момент вам все равно придется размонтировать этот раздел. Что мы обычно делаем, так это добавляем второй диск vmware и используем lvm для расширения на новый диск (и уменьшаем старый, если он заменяет), поскольку это позволяет всему процессу происходить в реальном времени.

Вы не предоставили нам достаточно подробностей, чтобы указать точные команды, которые вам понадобятся, но, по сути, вам нужно использовать lvextend команду для расширения логического тома, затем e2fsck команда, а затем resize2fs команда для расширения вашей файловой системы. Для каждой из этих команд потребуются дополнительные параметры, в частности информация об устройстве и файловой системе, которую мы не можем предоставить, но вам необходимо их знать, просто используйте параметр --help для каждой команды, чтобы узнать, как их использовать, плюс вы, вероятно, в конечном итоге воспользуетесь pvdisplay, lvdisplay и mount команды, помогающие заполнить эти параметры.

Никто не опубликовал полный набор команд, так что начнем:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root