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

14

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, содержащим "root" LV для "/".

Ив Мартин
источник

Ответы:

9

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

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

Gregg
источник
Я согласен, но что бы я ни делал для повторного сканирования диска SCSI, я никогда не видел новый размер диска в fdisk, поэтому застрял до первой перезагрузки. И «partprobe» для меня новая команда. Определенно я должен проверить эту процедуру ... Спасибо.
Ив Мартин
Для информации partprobeэто команда из partedпроекта.
Ив Мартин
Если вы не видите новый размер диска, fdiskзначит проблема не в LVM. Я должен был бы спросить, как вы сканировали, так как это обычно подбирает мне новый размер диска. Я также не делю диски, на которых собираюсь использовать LVM, если смогу помочь. Если у вас pvcreateвесь диск, то обновление таблицы разделов - это всего лишь одна вещь, которую вам нужно сделать, когда вы собираетесь изменить его размер.
Братчли
14

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

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

ls /sys/class/scsi_disk/

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

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

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

Дж. М. Беккер
источник
Работал отлично!
Эмиль Стирке
Вы также можете найти диски по их имени "/ dev /" /sys/block/, так что вы можете использовать, например /sys/block/sda/device/rescan.
mwfearnley
4

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

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

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

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

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

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

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

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
Ив Мартин
источник
Команды в конце не работают # parted / dev / sda2 -1 -> parted: неверный параметр - '1'
Оскар Берггрен
3

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

В Centos вы можете сделать это

ls /sys/class/scsi_host

тогда для каждого хоста

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

(замените # на номер)

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

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

JamesRyan
источник
Моя система - Debian, и я запускаю rescan-scsi-bus.sh из scsitools. Я думаю, что это эквивалентно команде, которую вы предлагаете в / sys / class / scsi_host, но "fdisk" по-прежнему отображает старый размер на моем диске ...
Ив Мартин,
При повторном сканировании распознается ли новый диск vmware?
JamesRyan
Нет. Этот диск уже существует, он не новый. Размер диска был увеличен в клиенте vSphere.
Ив Мартин
Я понимаю это, но вы должны попробовать добавить новый, чтобы увидеть, подхватит ли это ваше сканирование, чтобы сузить проблему
JamesRyan
Я согласен с вами, и я уже знаю на практике, что добавить новый диск SCSI на компьютер с Linux можно в режиме онлайн для всех перечисленных шагов. Поскольку виртуальная машина может работать в течение 10 лет ... Я боюсь, что общее количество дисков в ближайшем будущем ...
Ив Мартин
2

Как обновленный ответ, в 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требуется, и место было сразу доступно.

PeelMan
источник
3
Повезло тебе. Причина в том, что у вас нет таблицы разделов, но есть прямой PV /dev/sdb, который, вероятно, является вашим дополнительным диском с данными вашего приложения, но не вашим первым диском с системой (упомянуть, что я настраиваю свои системы таким же образом!). Мой вопрос касался расширения последнего PV / раздела такого «системного диска» (клонированного из шаблона), поскольку дистрибутивы Linux не поддерживают установку на прямой PV, тогда как ядро ​​Linux и GRUB должны иметь возможность загружаться и работать на системном диске. без таблицы разделов вообще.
Ив Мартин
Честная оценка. Для тех, кто находит это через Google: имейте это в виду.
Пилман
1

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

Chopper3
источник
Я знаю все команды для других шагов. Мой вопрос: как вырастить основной раздел, используемый как PV, без перезагрузки?
Ив Мартин
Извините, вы просто имеете в виду pvresize?
Chopper3
Я согласен, что мой вопрос не был достаточно явным (даже с жирным шрифтом). pvresize упоминается как шаг 2. Я застрял на шаге 1: увеличьте размер раздела "PCAT".
Ив Мартин
Вы уже увеличили размер .vmdk через VSClient?
Chopper3
3
Для подтверждения /sbin/rescan-scsi-busне изменяйте существующий размер диска. Но echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'делает
Ив Мартин
0

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

# 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
mzhaase
источник
Извините, что беспокою, но я считаю, что добавление диска, раздела и PV при каждом увеличении диска "ужасно" и не масштабируется. Мой вопрос был о расширении существующего основного раздела на диске без добавления диска или раздела или PV.
Ив Мартин