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

корпус usb jbod, программный raid1; после перезагрузки mdraid использует неправильные устройства

Я отразил два диска в USB-корпусе на моем Arch Box, создал файловую систему, смонтировал ее, скопировал кучу данных. Все было здорово. Затем я дождался завершения синхронизации md и перезагрузился ...

#lsblk
sdd 8:48 0 7.3T 0 disk
`-sdd1 8:49 0 7.3T 0 part
  `-md127 9:127 0 2.7T 0 raid1
sdf 8:80 0 2.7T 0 disk
`-sdf1 8:81 0 2.7T 0 part
  `-md127 9:127 0 2.7T 0 raid1
sdg 8:96 0 2.7T 0 disk
`-sdg1 8:97 0 2.7T 0 part

(пропущены нерелевантные диски)

Вчера зеркальные устройства были sdd (2.7T) и sde (2.7T). После перезагрузки система переупорядочила устройства так, чтобы эти диски в корпусе USB теперь были sdd (2.7T) и sdg (2.7T), но mdraid решил использовать sdd (7.3T) и sdf (2.7T).

Один результат поиска (Вот) предложил перестроить initramfs, но использовал примеры команд, которые не применимы к arch. Я попробовал свою лучшую догадку, найденную в Arch wiki, "mkinitcpio -p linux". После этого и перезагрузки ничего не изменилось. Однако я немного сомневаюсь в этой процедуре, поэтому, возможно, я выполнил ее неправильно, или это может быть не проблема.

Как лучше всего сообщить mdadm, какие диски должны сохраняться после каждой перезагрузки? Я предполагаю, что при каждой перезагрузке он будет получать разные устройства из этого USB-корпуса по какой-либо причине, поэтому я не могу просто жестко запрограммировать устройства / dev / sd *. Я думал, что UUID, указанный в mdadm.conf, и суперблоки на зеркальных дисках волшебным образом обрабатывают подобные изменения, но я, очевидно, упускал важный шаг где-то на этом пути.

МНОГОЕ ПОДРОБНЕЕ

$ uname -a
Linux zot 5.3.10-arch1-1 #1 SMP PREEMPT Sun, 10 Nov 2019 11:29:38 +0000 x86_64 GNU/Linux

$ lsb_release -a
LSB Version: 1.4
Distributor ID: Arch
Description: Arch Linux
Release: rolling
Codename: n/a

Создал зеркальный том с помощью следующей команды:

# mdadm --misc --zero-superblock /dev/sdd1
# mdadm --misc --zero-superblock /dev/sde1
# mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md/x /dev/sdd1 /dev/sde1
# mdadm --detail --scan >> /etc/mdadm.conf
# mdadm --assemble --scan

Немного сломал мне мозг, пытаясь вычислить, чтобы создать файловую систему, вероятно, следовало игнорировать эту часть вики-арки:

# mkfs.ext4 -v -L x -b 4096 -E stride=16,stripe-width=32 /dev/md/x

Установленный диск X:

# mount /dev/md/x /mnt/x

Во время синхронизации сделал тестовую копию огромного фрагмента моих данных в / mnt / x

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

$ grep -v "^[#]" /etc/mdadm.conf
DEVICE partitions
ARRAY /dev/md/x metadata=1.2 name=zot:x UUID=94dfdaa8:c6a75958:5dedf8ff:6b1926bb

$ dmesg | grep md[0-9]
[ 19.975336] md/raid1:md127: active with 2 out of 2 mirrors
[ 20.017939] md127: detected capacity change from 0 to 3000456183808

# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sdf1[1] sdd1[0]
2930132992 blocks super 1.2 [2/2] [UU]
bitmap: 0/22 pages [0KB], 65536KB chunk

unused devices: <none>

# cat /proc/partitions
major minor #blocks name
<SNIPPED>
9 127 2930132992 md127

# mdadm --detail /dev/md/x
/dev/md/x:
Version : 1.2
Creation Time : Sun Nov 17 12:54:34 2019
Raid Level : raid1
Array Size : 2930132992 (2794.39 GiB 3000.46 GB)
Used Dev Size : 2930132992 (2794.39 GiB 3000.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Mon Nov 18 01:37:17 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : bitmap

Name : zot:x (local to host zot)
UUID : 94dfdaa8:c6a75958:5dedf8ff:6b1926bb
Events : 15186

Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 81 1 active sync /dev/sdf1

# parted /dev/md/x print
Error: /dev/md/x: unrecognised disk label
Model: Linux Software RAID Array (md)
Disk /dev/md/x: 3000GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:

# mount /dev/md/x /mnt/x
mount: /mnt/x: wrong fs type, bad option, bad superblock on /dev/md127, missing codepage or helper program, or other error.

В настоящее время выполняются соответствующие процессы md и md127_raid1 (/ dev / md / x эквивалентно / dev / md127)

(именно в этот момент я подумал запустить lsblk, отсюда и материал в верхней части этого сообщения)