Дозвольте спочатку визнати, що я помилився, і що у мене є резервна копія більшості, але не всіх даних цього RAID. Я все ще маю надію відновити решту даних. У мене немає таких грошей, щоб віднести накопичувачі компанії, що займається відновленням.
Помилка № 0, не маючи 100% резервного копіювання. Я знаю.
У мене mdadm
система RAID5 4х3 ТБ. Диски / dev / sd [be], всі з одним розділом /dev/sd[b-e]1
. Я знаю, що RAID5 на дуже великих накопичувачах ризиковано, але все-таки я це зробив.
Останні події
RAID деградує після двох помилок накопичувача. Один накопичувач [/ dev / sdc] справді відсутній, інший [/ dev / sde] повернувся після циклу живлення, але автоматично не був повторно доданий до RAID. Тож мені залишилося 4 пристрою RAID із лише 2 активними накопичувачами [/ dev / sdb та / dev / sdd].
Помилка №1, не використовуючи копії накопичувачів диска для відновлення RAID. У мене не було ні приводів, ні часу. Помилка №2, не створюючи резервну копію суперблоку та mdadm -E
інших дисків.
Спроба відновлення
Я знову зібрав RAID в деградованому режимі з
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Тоді я міг отримати доступ до своїх даних. Я замінив /dev/sdc
запасний; порожній; однаковий привід.
Я видалив старий /dev/sdc1
з RAID
mdadm --fail /dev/md0 /dev/sdc1
Помилка №3, не роблячи цього перед заміною накопичувача
Потім я розділив нове /dev/sdc
і додав його до RAID.
mdadm --add /dev/md0 /dev/sdc1
Потім він почав відновлювати RAID. ETA 300 хв. Я стежив за процесом через /proc/mdstat
2%, а потім пішов робити інші речі.
Перевірка результату
Через кілька годин (але менше 300 хвилин) я перевірив процес. Він зупинився через помилку читання на /dev/sde1
.
Ось де справді починаються неприємності
Потім я видалив /dev/sde1
RAID і повторно додав його. Я не можу згадати, чому я це зробив; було пізно.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Однак /dev/sde1
зараз був позначений як запасний. Тому я вирішив відтворити весь масив, використовуючи --assume-clean, використовуючи те, що, на мою думку, було правильним порядком і з /dev/sdc1
відсутнім.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Це спрацювало, але файлова система не була розпізнана під час спроби встановити. (Це повинно було бути EXT4).
Замовлення пристрою
Тоді я перевірив нещодавню резервну копію, яку я мав /proc/mdstat
, і знайшов порядок приводу.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Потім я згадав, що цей RAID зазнав втрати накопичувача близько року тому, і відновився після цього, замінивши несправний диск на запасний. Це, можливо, трохи заштрифувало замовлення пристрою ... так що не було приводу [3], а лише [0], [1], [2] та [4].
Я спробував знайти замовлення диска за допомогою сценарію Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl, але не знайшов потрібного порядку.
Запитання
Зараз у мене є два основних питання:
Я накрутив усі суперблоки на накопичувачах, але лише дав:
mdadm --create --assume-clean
команди (так що я не повинен бути перезаписані самі дані про
/dev/sd[bde]1
. Правильно чи я , що в теорії НАБЕГ може бути відновлена [припускаючи , на мить , що/dev/sde1
це нормально] , якщо я просто знайти порядок правильного пристрою?Чи важливо
/dev/sde1
вказати номер пристрою [4] в RAID? Коли я створюю йогоmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
йому присвоюється число [3]. Цікаво, чи це стосується обчислення блоків паритету. Якщо це виявляється важливим, як я можу відтворити масив з
/dev/sdb1[0]
пропущеним [1]/dev/sdd1[2]
/dev/sde1[4]
? Якби я міг змусити це працювати, я міг би запустити його в деградованому режимі і додати новий диск/dev/sdc1
і дозволити йому повторно синхронізуватися.
Добре, якщо ви хочете зазначити мені, що це, можливо, не був найкращим способом дій, але ви виявите, що я це зрозумів. Було б чудово, якщо хтось має якісь пропозиції.