Сокращение RAID1 для освобождения места на жестком диске для нового раздела RAID1

255
damaltor

Я установил веб-сервер некоторое время назад и сделал ошибку. У меня есть следующее:

/dev/md0 swap (made from sda1 and sdb1) /dev/md1 /boot (made from sda2 and sdb2) /dev/md2 / (made from sda3 and sdb3) /dev/md3 /home (made from sda5 and sdb5) 

(sda4 и sdb4 - расширенные разделы)

Я набрал ошибку при настройке RAID (я использовал скрипт установщика), и в результате я получил следующие размеры:

swap 10GB /boot 500MB / 50GB /home The Rest (About 1,8TB) 

Все работало нормально .. пока я не загрузил около 80 ГБ файлов в / var / www, и передача упала на полпути. Все сошло с ума. Через некоторое время я узнал, что я просто заполнил раздел /, который разбил сервер MySQL, и сразу понял, что делать / настолько маленьким было глупо (или, по крайней мере, я должен был поместить / var / www в другой раздел). Что ж, сервер используется уже довольно давно, и я действительно не заинтересован в том, чтобы все заново настроить. Я на всякий случай сделал резервные копии, но, как вы все знаете, настройка сервера - это работа, а настройка его в известное состояние при использовании резервных копий - еще большая работа. поэтому я хотел бы решить проблему.

Теперь я хотел бы сделать следующее:

  • уменьшить / home раздел до 1 ТБ
  • добавить новый раздел в свободное место
  • переместить / var / www
  • смонтировать новый раздел в этом месте

Итак, мой план был следующий:

  1. размонтировать / домой
  2. сделать e2fsck на / dev / md3
  3. resize2fs / dev / md3 до размера около 990 ГБ, чтобы иметь 10 ГБ в качестве запаса безопасности
  4. Изменение размера mdadm / dev / md3 до 1 ТБ
  5. resize2fs без указания размера, чтобы увеличить его до максимального значения, доступного на новом md

(пока все хорошо, все до этого момента работало)

  1. добавить новые разделы sda / b6 в свободное место
  2. сделать их налет
  3. смонтировать его в / mnt
  4. скопировать поверх / var / www
  5. diff / var / www и / mnt просто чтобы убедиться
  6. rm -rf * in / var / www
  7. Смонтируйте / dev / md4 в / var / www и добавьте соответствующую запись в fstab, чтобы сделать ее постоянной.

Я сейчас застрял на нет. 6: Рейд сокращен, / dev / md3 имеет размер около 1 ТБ, все отлично, но разделы / dev / sda5 и / dev / sdb5 по-прежнему имеют старый размер. Что я пропустил? Разве разделы не уменьшились с MD? Как мне уменьшить их, не нарушая рейд?

0

2 ответа на вопрос

1
Eugen Rieck

Сокращение RAID не сокращает разделы - вы должны сделать это вручную.

Это не на 100% тривиально, так как ваш рейд MD может содержать суперблок RAID в начале ИЛИ в конце.

Если суперблок RAID находится в начале (версия 1 и выше), он должен быть легким: fdiskили инструментом по вашему выбору и удалить (да: я имею в виду удаление) sda5 после того, как отметили его начальный блок, а затем воссоздать его с помощью тот же стартовый блок и достаточно места. Затем вы можете создать sda6в оставшееся пространство. Я рекомендую вам перезагрузиться, чтобы убедиться, что все работает, как запланировано, прежде чем повторять процесс с sdb.

Если суперблок RAID находится в конце (Версия 0.9), все становится очень грязно - я рекомендую вам использовать mdadm --detail, затем, mdadm --stopнаконец, mdadm --create ... --metadata=1.0переместить его в начало устройства, а затем продолжить, как описано выше.

РЕДАКТИРОВАТЬ

Я не указал (так как я ошибочно предполагал, что это ясно), что вам нужно mdadm --stop ...сначала: при выходе fdiskинструктирует ядро ​​перечитать таблицу разделов, которая отмечает половину рейда как устаревшую.

Просто чтобы убедиться, что вы имеете в виду удаление / добавление раздела ПОСЛЕ удаления его из рейда? damaltor 5 лет назад 0
(Кроме того, Версия 1.2, поэтому Блок должен быть в начале) damaltor 5 лет назад 0
Я определенно имею ввиду ** не ** удаление его из RAID - просто изменение размера раздела, чтобы после перезагрузки использовался воссозданный раздел с существующими данными RAID. Суперблок 1.2 должен быть в порядке. Eugen Rieck 5 лет назад 0
Я сделал это сейчас, я удалил и сделал раздел новым. после перезагрузки устройство было помечено как удаленное из рейда, поэтому я его снова добавил. синхронизировать обратно сейчас, будет обновляться о прогрессе в комментариях здесь. damaltor 5 лет назад 0
Первая повторная синхронизация выполнена. Теперь я изменил размер второго раздела, который также был исключен из рейда, поэтому я добавил его обратно, и теперь они синхронизируются ... снова. Я почти уверен, что будет более быстрый путь, но это, кажется, делает свое дело. вернется после повторного расширения md и файловой системы впоследствии. damaltor 5 лет назад 0
Итак, после ожидания повторной синхронизации на обоих дисках все снова работает нормально. раздел теперь сокращен, и я сделал новый за ним. Спасибо за помощь! damaltor 5 лет назад 0
Я отредактировал свой ответ: вам нужно было бы остановить массив, чтобы избежать перестроения. Извините за это, я предположил, что это было ясно, но, конечно, это не было Eugen Rieck 5 лет назад 0
1
davidgo

К сожалению, это сложнее, чем кажется. Блочные устройства MD используют разделы на базовых дисках - и эти диски должны быть правильного размера - и смежные блоки пространства.

ПРИМЕЧАНИЕ. Операции с дисками такого рода опасны. Сделайте резервную копию в первую очередь.

Поскольку ваш домашний каталог идет после вашего каталога www, его уменьшение освободит место в конце диска - но вам нужно место в начале диска. Возможно, вы сможете использовать gparted для перемещения / sda3, sda5, sdb3 и sdb5 в конец диска, но мне не очень повезло с этим инструментом.

Я бы сделал это (если не начинать с нуля по причинам, указанным ниже): временно переместить / home на / www (или на внешнее хранилище, если оно уже слишком большое), используя fdisk, затем удалить sda3,5 и sdb3,5 удалите sda2 и sdb2 и воссоздайте с тем же начальным блоком, но потом с последним завершающим блоком, убедившись, что вы установили тип раздела (fd для RAID), затем заново создайте sda3,5 и sdb3,5 (или просто sdb3 - если вы уверены, что выиграли) нужно больше 4 разделов) с оставшимся пространством.

После этого перезагрузите и разверните RAID, затем заново создайте md3, / home и скопируйте данные обратно. Вам также нужно будет изменить fstab.

Тем не менее, я бы серьезно подумал о том, чтобы начать снова, используя только 2 раздела RAID - маленький для загрузки и большой для всего остального. Затем я бы использовал LVM поверх большого раздела RAID, чтобы разделить его на блоки типа / www, / home - потому что использование LVM обеспечивает большую гибкость, включая возможность изменять размеры разделов независимо от базовой геометрии, добавлять диски и делать снимки ,

Спасибо за ваши мысли. Зачем мне нужно место в начале диска? Нужно ли иметь новый раздел в начале? Почему нельзя поставить раздел для / var / www после / home? Кроме того, как я должен изменить размер раздела - нужно ли сначала отключить / удалить раздел из traid, изменить его размер, положить обратно? damaltor 5 лет назад 0
«начало диска» было плохо сформулировано - игнорируя слои абстракции, такие как LVM, вы можете только расширять разделы, добавляя их в конец раздела, потому что - я считаю - все основные файловые системы имеют что-то похожее на индекс (в котором перечислены имена файлов и позиции ) в начале раздела. Если вы расширили раздел в начале, этот индекс вдруг окажется не в том месте. davidgo 5 лет назад 0
Порядок монтирования / var / www и / home не имеет значения - мое решение было разработано для освобождения места в нужном месте на диске. davidgo 5 лет назад 0
ну, я хотел сжать раздел, так что, вероятно, все в порядке. в любом случае спасибо, вы помогли мне кучу. damaltor 5 лет назад 0

Похожие вопросы