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

Почему mdadm --zero-superblock сохраняет информацию файловой системы?

У меня есть два раздела жесткого диска, которые я объединил в RAID1, используя mdadm, и создал файловую систему ext4 на полученном устройстве.

Когда я mdadm --zero-superblock два раздела и воссоздайте RAID, тогда исходные метаданные ext4 волшебным образом сохранятся.

Это почему?

И как я могу сказать mdadm дать мне действительно новый, неинициализированный МД?


подробности

Как я создаю RAID1 и файловую систему:

ls /dev/sdc2  # partition 1
ls /dev/sdd2  # partition 2
mdadm --create --run --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2
mkfs.ext4 -L mylabel /dev/md1

Протрите RAID1:

mdadm --stop /dev/md1
mdadm --zero-superblock /dev/sdc2
mdadm --zero-superblock /dev/sdd2

Восстановить RAID1:

mdadm --create --run --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2

Отображение информации об устройстве (примечание wipefs без -a flag ничего не стирает, а просто показывает информацию):

# wipefs /dev/md1
offset               type
----------------------------------------------------------------
0x438                ext4   [filesystem]
                     LABEL: mylabel
                     UUID:  3d230d31-fb82-46ef-a4e0-e9473e05825c

LABEL: mylabel показывает, что метка ext4 "пережила" очистку суперблока mdadm и воссоздание RAID.

Как это может быть?

Я думал, что после очистки и восстановления суперблока mdadm должен предоставить мне «чистый» вид устройства (то есть все нули), если не задан флаг, который отключает это (например, --assume-clean, который я не приводил).

Поскольку обнуление суперблока mdadm удаляет только метаданные, описывающие массив raid, оно не удаляет информацию о том, что на самом деле находится на остальной части диска. На самом деле это хорошо, так как это означает, что вы можете восстановить том, когда сам массив не собирается по какой-то досадной причине.

И для ясности: поскольку вы создаете массив с использованием томов, а не всего диска, таблица разделов не затрагивается mdadm, поэтому обнуление суперблока рейда не повлияет ни на метку диска, ни на структуру разделов. .

Еще не получили окончательного ответа на вопрос «полностью удалить метаданные рейда»?

вот мой (фрагмент скрипта создания рейда при обнаружении предыдущего RAID):

DISK=drive with partition (eg: /dev/sdc3)
DRIVE=drive without partition (eg: /dev/sdc)
DRIVE_SECTORS=$(fdisk -l $DRIVE | grep Disk | grep sectors | cut -f7 -d ' ')
RAID_OFFSET=$(wipefs $DISK | grep linux_raid_member | sed 's/  */ /g' | cut -d ' ' -f2)
wipefs -o $RAID_OFFSET $DISK
# Zero last 4M of DISK
dd bs=512 if=/dev/zero of=$DRIVE count=8182 seek=$(($DRIVE_SECTORS - 8192))

Надеюсь, это сэкономит кому-то время, которое мне стоило разобраться.