Как расширить раздел 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/


Я согласен, но что бы я ни делал для повторного сканирования диска 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 для расширения на новый диск (и сокращения старого, если это замена), поскольку это позволяет всему процессу происходить вживую.


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


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

Честная оценка. Для тех, кто находит это через Google: имейте это в виду.
— Пилман

1

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


Я знаю все команды для других шагов. Мой вопрос: как вырастить основной раздел, используемый как 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

Извините, что беспокою, но я считаю, что добавление диска, раздела и PV при каждом увеличении диска "ужасно" и не масштабируется. Мой вопрос был о расширении существующего основного раздела на диске без добавления диска или раздела или PV.
— Ив Мартин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.