Расширение раздела GPT / XFS

a462ab1f4612bf94395194e1c11

Хотелось бы логически продолжить пост по изменению размера multipath LUN в Linux.

После расширения размера multipath LUN, нам необходимо расширить раздел, чтобы файловая система увидела дополнительное пространство. Приведенные ниже инструкции предназначены специально для раздела GPT с файловой системой XFS.


1. Немного «исторической» информации

1.1. Таблица разделов GUID
GUID_Partition_Table_Scheme.svg

На рисунке приведена диаграмма, схематично поясняющая формат GUID Partition Table. Каждый логический блок (LBA) имеет размер ровно 512 байт. Отрицательные адреса логических блоков говорят о том, что их нумерация начинается с конца тома (диска), причем последний адресуемый блок имеет адрес −1.

GPT использует современную систему адресации логических блоков (LBA) вместо применявшейся в MBR адресации «Цилиндр — Головка — Сектор» (CHS). MBR, доставшаяся по наследству со всей своей информацией, содержится в блоке LBA 0, оглавление GPT — в блоке LBA 1. В оглавлении содержится адрес блока, где начинается сама таблица разделов, обычно это следующий блок — LBA 2. В случае 64-битной версии ОС Microsoft Windows NT, для таблицы разделов зарезервировано 16 384 байт (при использовании сектора размером 512 байт это будет 32 сектора), так что первым используемым сектором каждого жёсткого диска в ней будет блок LBA 34.

Кроме того, GPT обеспечивает дублирование — оглавление и таблица разделов записаны как в начале, так и в конце диска.

(c) Таблица разделов GUID

1.2. XFS

XFS — высокопроизводительная журналируемая файловая система, созданная компанией Silicon Graphics для собственной операционной системы IRIX. 1 мая 2001 года Silicon Graphics выпустила XFS под GNU General Public License. XFS отличается от других файловых систем тем, что она изначально была рассчитана для использования на дисках большого объёма (более 2 терабайт, см. например, RAID-массивы).

2. Расширение раздела GPT:

Это далеко не первая моя статья про работы с дисками, но как говориться «все в жизни бывает», поэтому теперь в некоторых мануалах будет такое вот предупреждение.

Предупреждение!

Всё что Вы делаете — Вы делаете на свой страх и риск! Перед работой должно быть понимание, что именно необходимо сделать и как восстанавливаться после неудачи.

Сделайте бекапы!

Мне хотелось бы рассказать о двух способах расширения раздела: первый может быть произведен без размонтирования раздела — утилитой gdisk, второй — через parted.

В обоих случаях для применения настроек, вам скорее всего придется перезапустить сервер.

2.1. Расширение GPT утилитой gdisk

Материал основан на Grow a GPT / XFS Partition и собственном, не совсем удачном, опыте.

Основные процедуры очень похожи на с fdisk.

  • Размонтируем раздел
  • Получение информации: начальный сектор, имя, идентификатор раздела
  • Удаление партиции, создание раздела по полученной информации с расширением
  • Повторная проверка изменений, запись и перезагрузка

Пойдем по-порядку.

2.1.1 Размонтируем раздел

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

2.1.2 Получение информации: начальный сектор, имя, идентификатор раздела

Последовательно нажимаем «p» и «i», скриншетим или записываем стартовый сектор, GUID партиции.

5-Print-Partition-Information

2.1.3 Удаление партиции, создание раздела по полученной информации с расширением

Удаление: последовательно нажимаем «d», номер раздела, в нашем случае это «1»
Создание: последовательно нажимаем «n», номер раздела — «1».
8-New-Partition

Тут меня поджидала первая неожиданность, на которую я должным образом не обратил внимание.

Номер сектора начала, должен быть такой же, какой вы заскриншетили ранее — у меня это был 1953.

Однако программе было «не удобно считать» и она его сдвинула на 1952.

Чуть позже удалось выяснить, что уход в экспертный режим (Use ‘l’ on the experts’) также результата не дал, первый сектор всегда смещался.

Partition number (1-128, default 1): 1

First sector (34-52691757662, default = 64) or {+-}size{KMGTP}: 1953
<em>Information: Moved requested sector from 1953 to 1952 in</em>
order to align on 32-sector boundaries.
Use 'l' on the experts' menu to adjust alignment

Как результат, порядка 2 суток простоя раздела, во время которого xfs_growfs пыталась восстановить раздел.

xfs_growfs -d /dev/mapper/p2000_storagep1

Со стороны p2000 (хранилка подключена по iscsi) работа программы выглядела так:
chart2

 

Полка по входящему трафику 1,4Gb- максимальная скорость хранилки по шпинделям.

«xfs_growfs» к сожалению не помог, как удалось восстановиться раздел немного ниже.

2.1.4 Переименовываем раздел, и устанавливаем назад GUID раздела

Последовательно нажимаем «с», имя раздела
Последовательно нажимаем «x», потом «c», GUID раздела

10-Change-Partition-GUID

2.1.5 Проверяем введенные данные и сохраняем изменения

Последовательно нажимаем «p», потом «i».

Очень внимательно все проверяем, если все OK, то сохраняемся — нажимаем «w».

12-Verify-Partition-Information

2.2. Расширение GPT утилитой parted

С parted все намного проще, порядок действий примерно такой же, но при этом раздел должен быть отмонтирован.

umount /dev/mapper/p2000_storage
parted /dev/mapper/p2000_storage

Первым делом снимаем информацию по существующим разделам. У меня она уже была из вывода gdisk.

#Удаляем раздел
rm partition

Дальше немного внимания, если создать раздел как «mkpart GPT xfs 0 100%«, то есть большая вероятность что начальный сектор будет смещен. Именно так было у меня — parted поставил стартовым 53 сектор, после принудительной замены стартового сектора на 1953, мне удалось решить проблему недоступности файловой системы.

mkpart GPT xfs 1053s 100%

Осталось только смонтировать раздел и дать «xfs_growfs» выполнить расширение.

partprobe
xfs_growfs -d /misc/backup

На этом все. Надеюсь данная инструкция поможет вам избежать часть проблем, с которыми столкнулся я.

Вы можете оставить комментарий ниже.