Скорочення RAID1, щоб звільнити місце на жорсткому диску для нового розділу RAID1


0

Я створив веб-сервер деякий час назад і зробив помилку. У мене є наступне:

/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. unmount / home
  2. зробіть e2fsck на / dev / md3
  3. resize2fs / dev / md3 до розміру близько 990GB, щоб мати 10 ГБ як запас безпеки
  4. mdadm змінює розмір / dev / md3 на 1TB
  5. resize2fs, не називаючи розмір, щоб збільшити його до максимально доступного для нового md

(поки що добре, все до цього моменту працювало)

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

Зараз я застряг на ні. 6: Рейд скорочується, / dev / md3 має розмір близько 1 Тб, все прекрасно, але розділи / dev / sda5 і / dev / sdb5 все ще старі. Що я пропустив? Якщо розділи не зменшилися з md? Як я можу скоротити їх, не порушуючи рейд?

Відповіді:


1

Скорочення RAID не зменшує розділів - це потрібно робити вручну.

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

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

Якщо в кінці (версії 0.9) RAID-суперблок (версія 0.9), все стає дуже брудним - рекомендую вам скористатися mdadm --detail, потім mdadm --stop і, нарешті mdadm --create ... --metadata=1.0 щоб перемістити його на початок пристрою, а потім продовжити, як описано вище.

EDIT

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


Просто щоб переконатися, ви маєте на увазі видалення / додавання розділу після його видалення з рейду?
damaltor

(Крім того, версія 1.2, тому блок повинен бути біля початку)
damaltor

Я точно маю на увазі ні вилучення його з RAID - просто зміна розміру розділу, так що після перезавантаження повторно створений розділ з існуючими даними RAID використовується. Суперблок 1.2 повинен бути штраф.
Eugen Rieck

Я зробив це зараз, я видалив і зробив розділ новим. після перезавантаження пристрій позначено як видалений з рейду, тому я знову додав його. синхронізувати зараз, оновитимуть інформацію про прогрес у коментарях.
damaltor

Перша ресинхронізація виконується. Я тепер змінив розмір другого розділу, який потім також вигнали з рейду, тому я додав його назад і вони синхронізуються назад зараз ... знову. Я впевнений, що буде швидкий шлях, але це, здається, робить трюк. повернеться після повторного розширення md і файлової системи.
damaltor

1

На жаль, це складніше, ніж здається. Блокові пристрої MD використовують розділи на базових дисках - і цей диск повинен бути відповідного розміру - і суміжних блоків простору.

ПРИМІТКА. Такі операції є небезпечними. Спершу створіть резервну копію.

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

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

Після цього перезавантажте та розгорніть RAID, потім створіть md3, / home та скопіюйте дані назад. Вам також доведеться змінити fstab.

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


Дякуємо за ваші думки. Чому мені потрібен простір на початку диску? Чи потрібно мати на початку новий розділ? Чому не можна було б розмістити розділ для / var / www після / home? Крім того, як я повинен змінити розділ - мені доведеться невдачу / видалити розділ з traid першим, змінити його розмір, покласти його назад?
damaltor

"початок диска" був погано сформульований - ігнорування шарів абстракції, таких як LVM, дозволяє лише розширювати розділи, додаючи до кінця розділ, тому що - я вважаю - всі основні файлові системи мають щось схоже на індекс (який перераховує назви файлів і позиції) ) на початку розділу. Якщо ви розгортаєте розділ на початку, індекс раптово знаходиться в неправильному місці.
davidgo

Порядок монтажу / var / www та / home не має значення - моє рішення було розроблене для того, щоб звільнити місце на потрібному місці на диску.
davidgo

Ну, я хотів скоротити розділ, так що це, ймовірно, добре. спасибі у будь-якому випадку, ви допомогли мені купу.
damaltor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.