Может ли кто-нибудь объяснить разницу между 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-cd36f654020d
vs. 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 или как-то еще, чтобы избежать путаницы.