Разница между UUID от blkid и mdadm?

Разница между UUID от blkid и mdadm?

Может ли кто-нибудь объяснить разницу между UUID, сообщаемыми blkidи mdadm? На одной из наших систем CentOS, например:

[root@server ~]# blkid | grep /dev/md1
/dev/md1: UUID="32cb0a6e-8148-44e9-909d-5b23df045bd1" TYPE="ext4"

[root@server ~]# mdadm --detail /dev/md1 | grep UUID
UUID : f204c558:babf732d:85bd7296:bbfebeea

Почему они отличаются и как нам изменить используемый UUID mdadm?

Я понимаю, что мы будем использовать tune2fsдля изменения UUID раздела (что изменит то, что возвращает blkid), но не уверен, как изменить то, что mdadmиспользует.

решение1

Первый сообщает UUID файловой системы ext4 на mdблочном устройстве. Он помогает системе однозначно идентифицировать файловую систему среди файловых систем, доступных в системе. Это хранится в структуре файловой системы, то есть в данных, хранящихся на устройстве md.

Второй — UUID устройства RAID. Он помогает подсистеме md однозначно идентифицировать это конкретное устройство RAID. В частности, он помогает идентифицировать все блочные устройства, которые принадлежат массиву RAID. Он хранится в метаданных массива (на каждом члене). Члены массива также имеют свой собственный UUID (в системе md они также могут иметь UUID разделов, если они являются разделами GPT (которые сами по себе будут храниться в таблице разделов GPT) или томами LVM...).

blkidнемного вводит в заблуждение, так как он возвращает идентификатор структуры, хранящейся на устройстве (для тех типов структур, о которых он знает, таких как большинство файловых систем, члены LVM и устройства подкачки). Также обратите внимание, что не редкость иметь блочные устройства со структурами с идентичными UUID (например, моментальные снимки LVM). И блочное устройство может содержать что угодно, включая вещи, чья структура не включает UUID.

Итак, например, у вас может быть система с 3 дисками с разделами GPT. Эти диски могут иметьВсемирное имякоторый идентифицирует его уникально. Допустим, 3 диска разделены на разделы, каждый из которых содержит один раздел ( /dev/sd[abc]1). Каждый раздел будет иметь UUID GPT, сохраненный в таблице разделов GPT.

Если эти разделы образуют массив md RAID5. Каждый получит md UUID как член RAID, а массив получит UUID как устройство md RAID.

Это /dev/md0может быть дополнительно разделено с помощью разбиения MSDOS или GPT-типа. Например, у нас может быть /dev/md0p1раздел с GPT UUID (хранящимся в таблице разделов GPT, которая хранится в данных /dev/md0).

Это, в свою очередь, может быть физическим томом для LVM. Таким образом, он получит PV UUID. Группа томов также будет иметь VG UUID.

В этой группе томов вы создадите логические тома, каждому из которых будет присвоен LV UUID.

На одном из таких LV (например /dev/VG/LV, ) можно создать файловую систему ext4. Эта файловая система получит ext4 UUID.

blkid /dev/VG/LVдаст вам (ext4) UUID этой файловой системы. Но как раздел внутри тома VG, он также получит UUID раздела (некоторые схемы разбиения на разделы, такие как MSDOS/MBR, не имеют UUID). Эта группа томов состоит из членов PV, которые сами по себе являются другими блочными устройствами. blkid /dev/md0p1даст вам UUID PV. Он также имеет UUID раздела в таблице GPT на /dev/md0. /dev/md0сам состоит из других блочных устройств. blkid /dev/sda1вернет UUID участника raid. Он также имеет UUID раздела в таблице GPT на /dev/sda.

решение2

Различные UUID уже были объяснены. Они есть не только у файловых систем. Просто есть UUID для разных вещей: RAID-массив, устройство, раздел, контейнеры LUKS, LVM PV... и, наконец, файловые системы.

Лично меня раздражает то, что даже формат этих UUID отличается.

черный:

# blkid /dev/sda1
/dev/sda1: 
UUID="d8b8b4e5-e47b-2e45-2093-cd36f654020d"
UUID_SUB="3c3e6eac-2139-3f7a-16b7-57280934d88e"
PARTUUID="6a89cedf-69e1-40db-b08c-1c8e45af59f5" 

мдадм:

# mdadm --examine /dev/sda1 | grep UUID
     Array UUID : d8b8b4e5:e47b2e45:2093cd36:f654020d
    Device UUID : 3c3e6eac:21393f7a:16b75728:0934d88e

Как вы можете видеть, это те же самые UUID, но blkidпечатает их с тире -, а mdadmиспользует двоеточия :. Таким образом, вы получаете d8b8b4e5-e47b-2e45-2093-cd36f654020dvs. d8b8b4e5:e47b2e45:2093cd36:f654020d.

Очень раздражает, особенно если вы хотите работать с UUID в скриптах. Неочевидно, как преобразовать из одного форматирования в другое.

решение3

UUID blkid выше "32cb0a6e-8148-44e9-909d-5b23df045bd1" является правильным, именно его ОС будет использовать для поиска RAID-массива.

У mdadm есть свой собственный «внутренний» UUID, который не используется ОС напрямую, а именно его вы используете в файле mdadm.conf, например:

"МАССИВ /dev/md1 уровень=raid1 число-устройств=2 uuid=f204c558:babf732d:85bd7296:bbfebeea"

mdadm не должен называть что-либо UUID, если это отделено от того, что распознают blkid и ОС. Может быть, его следует назвать mduuid или как-то еще, чтобы избежать путаницы.

Связанный контент