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

Как заставить недавно расширенный RAID-массив отображать правильный размер в Debian

Недавно я увеличил объем своего виртуального диска хранения RAID 5 с 6 ТБ до 9 ТБ. Dell OMSA и BIOS для RAID-контроллера показывают, что у меня 8382 ГБ. Что нормально.

Но когда заходишь в Debian и теребишься, он все равно видит только 6 ТБ.

Когда я выполняю команду fdisk -l, я получаю следующее:

Disk /dev/sda: 9000.1 GB, 9000103968768 bytes
255 heads, 63 sectors/track, 1094200 cylinders, total 17578328064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT

Итак, теперь он видит, что это 9 ТБ. А вот раздела sda1 нет. Как мне расширить это, чтобы отразить изменение размера .... БЕЗ ПОТЕРЯ ЛЮБЫХ ДАННЫХ!

Спасибо

Нет простого способа сделать это, если вы не используете LVM.

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

К счастью, ваш раздел начинается с первого сектора, поэтому вам не нужно беспокоиться об этом. Ваша проблема в конце, а это не ваш (новый) последний сектор. Значит вам нужно его обновить. Поэтому вам нужно уничтожить свой раздел и создать новый (без его форматирования!).

fdisk -u /dev/sda

Затем в утилите fdisk:

  • d удалить раздел 1
  • p чтобы убедиться, что у вас не осталось раздела
  • n чтобы создать новый раздел:
    • p сделать его основным разделом
    • 1 сделать его первым разделом
    • 1 чтобы он запустился в секторе 1 (как было)
    • сделайте последний сектор своим 'концом' вашего раздела (должен быть ответ по умолчанию)

Optionnal (чтобы сделать ваш раздел загрузочным):

  • a поднять флаг, а 1 указать раздел

Теперь вам нужно записать свои изменения:

  • w

Теперь вы можете выйти из fdisk и перезагрузить сервер. После этого расширьте раздел на уровне файловой системы (resize2fs /dev/sda1)

Как уже упоминал @duskwuff, это GPT таблица разделов, поэтому fdisk показывает только защитное содержимое MBR. Использовать gdisk -l /dev/sda вместо. У вас может быть более одного раздела, и в этом случае вы сможете изменить размер только последнего.

Обходным путем (не рекомендуется) может быть программный RAID0 (называемый mdraid в Linux), охватывающий раздел, который вы хотите расширить, и раздел, созданный в новом пространстве, видимый ОС как одно большое пространство. Чтобы избежать потери данных, вы должны использовать вариант mdraid без метаданных (mdadm --build ...не mdadm --create ...), чек man mdadm. Однако это снизит производительность, создаст дополнительные трудности при применении к разделу корневой файловой системы и может стереть ваши данные в случае любой ошибки.

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

Чтобы избежать такого рода проблем, я всегда стараюсь использовать разные группы томов для boot / rootfs - разделенного диска и для данных - диска без разделов (расширение его онлайн - это кусок пирога, просто изменение размера файловой системы - resize2fs /dev/sda, если это EXT {2..4}). Это решение на будущее.