LINUX.ORG.RU
решено ФорумAdmin

почему софтовый raid 1 меньше исходных разделов на 3 мегабайта?

 


0

2

Доброго времени суток. Собрал raid1 и размер созданного массива получился меньше чем разделы из которых он собран на 3 мегабайта. Если я правильно понял то метаданные должны занимать лишь 4КБ в начале раздела (в случае версии 1.2). Вопрос куда делось остальное и в каком месте диска искать?

su@lenovo:/home/user# mdadm --create --metadata=1.2 --verbose /dev/md0 -l 1 -n 2 /dev/sd{d1,e1}
mdadm: size set to 2094080K
mdadm: array /dev/md0 started.
su@lenovo:/home/user# fdisk -l

Disk /dev/sdd: 28,67 GiB, 30765219840 bytes, 60088320 sectors
Disk model: USB 2.0   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75a453b1

Device     Boot Start     End Sectors Size Id Type
/dev/sdd1        2048 4196351 4194304   2G 83 Linux


Disk /dev/sde: 28,67 GiB, 30765219840 bytes, 60088320 sectors
Disk model: USB 2.0   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x76102965

Device     Boot Start     End Sectors Size Id Type
/dev/sde1        2048 4196351 4194304   2G 83 Linux


Disk /dev/md0: 1,102 GiB, 2144337920 bytes, 4188160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

su@lenovo:/home/user# echo $((((4194304*512)/1024)/1024))
2048
su@lenovo:/home/user# echo $((((4188160*512)/1024)/1024))
2045
su@lenovo:/home/user# 


Ответ на: комментарий от Black_Shadow

Подозреваю, что он хочет понимать on-disk layout в общих чертах, но не вникая в детали.

anonymous ()

Если я правильно понял то метаданные должны занимать лишь 4КБ в начале раздела (в случае версии 1.2).

Нет, они должны начинаться со смещения 4к от начала диска

man mdadm , потом / (поиск) и пишешь metadata, Enter

The different sub-versions store the superblock at different locations on the device, either at the end (for 1.0), at the start
(for 1.1) or 4K from the start (for 1.2)

Здесь есть чуть больше, но именно про размер метаданных (aka supeblock) там тоже нет https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

Беглый поиск в гугле ответа не дал. Так что если это необходимо, тебе придётся зарыться в код модуля ядра

Для блочных устройств принято выравнивать начала разделов по границе 1 MiB. Так что предположу, что собственно метаданные занимают 2 MiB, а ещё 1 MiB потерян из-за смещения начала метаданных в 4k. Думаю, так и есть

router ★★★★★ ()

mdadm -E /dev/sdd1 | grep Offset расскажет, где находятся данные. Если хочется точного совпадения размеров, можно собрать зеркало с помощью DM без метаданных:

dmsetup create test-mirror --table "0 $(blockdev --getsz /dev/sdd1) mirror core 1 1024 2 /dev/sdd1 0 /dev/sde1 0 1 handle_errors"

kmeaw ★★★ ()
Ответ на: комментарий от kmeaw

bash mdadm -E /dev/sdd1 | grep Offset смещение значительно меньше 3 мегабайт. В ящике все ещё темно. Второй пример годный, только не понятно - оно будет собираться без потери данных после перезагрузки не имея метаданных. Можно конечно проверить, но опять же, а оно надежно? С mdadm как-то проблем особо не было уже много лет. Олег, спасибо. Выручал не раз.

JoIIyRoger ()
Ответ на: комментарий от JoIIyRoger

Второй пример годный, только не понятно - оно будет собираться без потери данных после перезагрузки не имея метаданных.

После перезагрузки /dev/mapper/test-mirror пропадёт, надо будет снова запустить dmsetup create. Это приведёт к принудительной синхронизации, как при mdadm --create, чего можно избежать с помощью слова nosync (аналог --assume-clean для mdadm).

Можно достичь примерно того же результата с помощью mdadm: mdadm --build /dev/md0 --level raid1 --raid-devices 2 /dev/sdd4 /dev/sde4. К сожалению, mdadm.conf не предоставляет способа для сборки таких массивов, поэтому придётся придумать какой-то свой костыль и запихнуть его в initramfs (или в загрузочные скрипты, если этот массив не является корнем).

kmeaw ★★★ ()
Ответ на: комментарий от JoIIyRoger

смещение значительно меньше 3 мегабайт

Точно ли значительно? mdadm пишет его в 512-байтных секторах.

kmeaw ★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.