Ошибка RAID5 mdadm / blk_update_request: ошибка ввода-вывода

322
user3388087

У меня есть пять необработанных образов дисков сервера (хранятся на одном внешнем жестком диске). Каждый из этих дисков содержит два раздела, которые являются "Linux raid autodetect" (fd)и являются членами RAID1 (связанные с загрузкой; 3 устройства (2 активных + 1 резервный)) и RAID5 (другие данные; 5 устройств).

После сопоставления устройств с использованием kpartx(или losetup, на самом деле, не имеет значения) я запускаю mdadmсборку RAID-массивов. RAID1 успешно собран, и я могу монтировать его обычным способом. RAID5 собирается (на самом деле, согласно «активному» /proc/mdstat), но:

  1. Все устройства « неисправны » и « удалены »;
  2. Я вижу дополнительные ошибки в dmesg( blk_update_request: I/O error, dev loop4, sector 16), после чего я получаю больше ошибок ( md: super_written gets error=-5; md/raid:md0: Disk failure on loop5, disabling device.);
  3. Я не могу смонтировать массив RAID5 (достаточно справедливо).

Я перепробовал все предложения, которые мог найти в Интернете:

  1. Используйте --forceклавишу -> не будет работать;
  2. Используйте --createи --assume-clean-> не будет работать;
  3. Используйте --zero-superblock(что похоже на 2) -> не будет работать.
  4. Если проверить с помощью --examine- все устройства-члены находятся в чистом состоянии, контрольная сумма верна и номера событий равны .

Что касается 2 и 3 - кажется, что я не могу писать на эти подключенные устройства. Я strace«d --zero-superblockи, системного write()вызова, я получил EPERM (Operation not permitted). Не могу себе представить, что мешает мне писать на lsblk --fpmподключенные устройства (согласно RAID5 устройство доступно для записи brw-rw----).

Еще одна своеобразная деталь. Выше я упоминал, что попал I/O errorв сектор 16 . Я проверил, что находится в секторе 16 (смещение 8192 байта) в каждом цикле (сопоставленном) устройстве RAID5. Оказалось, что оно начинается с магического числа 0x6d746962(ASCII: " bitm") - вероятно, bitmapсвязано:

00002000 62 69 74 6d 04 00 00 00 48 a7 15 94 56 79 23 ed |bitm....H...Vy#.|<br/> 00002010 7d 7b 33 bc b9 f8 71 7a d0 03 00 00 00 00 00 00 |} KeyWait, tab  } else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) { sendLAltUpOnLCtrlUp := 1 Send  KeyWait, tab }  else {  send  }  return }  ~LCtrl up:: {  if(sendLAltUpOnLCtrlUp == 1) { sendLAltUpOnLCtrlUp := 0 send  } else { send  } return }  ~LAlt up:: {  send  return }  ;; Example how to insert polish diactrics with `RAlt + Shift + A` etc. ;; https://pl.m.wikipedia.org/wiki/Alfabet_polski >!+a::Send  >!a::Send  
2

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

0
user3388087

Итак, наконец, мне удалось собрать RAID5. Как оказалось, проблема была в следующем (я не упомянул об этом в своем вопросе). Образы дисков, которые у меня были, были в формате E01, разбитые на количество частей. До сопоставления разделов я использовал ewfmount(в том числе -X allow_root), чтобы «собрать» несколько E01 в один файл. Оказалось, что FUSE, несмотря на то, что вы видите ваши изображения, смонтированные как RW, каким-то образом блокирует их, создавая устройства read-only(даже если вы редактируете /etc/fuse.conf).

Одна из моих попыток при устранении неисправностей заключалась в том, чтобы экспортировать несколько E01 в пять обычных изображений в формате dd / raw и работать с ними напрямую, исключая ewfmountиз «схемы».

Когда экспорт был завершен, я подключил сырые диски kpartx, и смог собрать RAID5 без проблем.

Множество Operation not permittedили I/O errorпроблемы были очевидны и должны были дать подсказку, но я, по неизвестным причинам, отказал им (пока я не попытался изменить некоторые сектора на подключенных устройствах ddнапрямую и не получилось).

Вот и все.

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