Відмінність UUID від blkid та mdadm?


26

Чи може хтось пояснити різницю між повідомленнями 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використовує.

Відповіді:


23

Перший повідомляє про 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). Кожен розділ матиме GPT UUID, що зберігається у таблиці розділів GPT.

Якщо ці розділи складають md масив RAID5. Кожен отримає md UUID як член RAID, а масив отримає UUID як md RAID-пристрій.

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

Це, в свою чергу, може бути фізичним обсягом для ННМ. Як такий він отримає PV UUID. Група гучності також матиме VG UUID.

У цій групі томів ви створили б логічні томи, кожен отримуючи UVID LV.

На одному з цих LV (подібних /dev/VG/LV) ви можете створити файлову систему ext4. Ця файлова система отримала UUID ext4.

blkid /dev/VG/LVотримає вам (ext4) UUID цієї файлової системи. Але як розділ всередині VG-тому, він також отримає UUID-розділ (деякі схеми розподілу, такі як MSDOS / MBR, не мають UUID). Ця група обсягів складається з членів ПВ, які самі є іншими блоковими пристроями. blkid /dev/md0p1дав би вам PV UUID. Він також має UUID розділу в таблиці GPT на /dev/md0. /dev/md0сама виготовляється з інших блокових пристроїв. blkid /dev/sda1поверне UUID рейду-члена. Він також має UUID розділу в таблиці GPT на /dev/sda.


Як ми можемо змінити UUID пристрою RAID, яким він користується mdadm? Ми просто повторно зобразили сервер, і UUID відрізняються, тому ми хочемо відновити попередні UUID, так що нам не потрібно змінювати всі конфігураційні файли. По суті, /dev/md0є новий UUID, і ми хочемо повернути його до старого (ідентифікованого з резервної копії), тому система завантажується, не потребуючи подальших змін.
Кріс

@Chris, MD UUID (див. man mdadm) Або UUID ext4 (див. man tune2fs)? Чи є проблема завантаження щодо пошуку кореневої файлової системи або щодо складання масиву RAID на основі mdadm.conf, що зберігається в initramfs. Так чи інакше, мені здається простіше оновити mdadm.conf або fstab / grub.cfg, ніж змішуватися з UUID.
Стефан Шазелас

MD UUID - ми відновили сервер із резервного копіювання. Чи знаєте ви, як оновити UUID пристрою RAID? Я не бачу цієї інформації на сторінці сторінки. Ми просто намагаємося розробити найпростіший спосіб його роботи (тестування процедури відновлення).
Кріс

@Chris, ти повинен поставити ще одне питання з цього приводу.
Стефан Шазелас

@Chris: Ви хочете, щоб UUID були іншими. Якщо mdadm бачить кілька дисків, які вважають, що вони належать до одного рейду, навіть якщо це різні рейди (через конфлікти UUID), у вас виникнуть справжні проблеми.
frostschutz

4

Різні UUID вже були пояснені. Не лише файлові системи мають їх. Просто є UUID для різних речей: рейдовий масив, пристрій, розділ, контейнери LUKS, PV-файли LVM ... і нарешті файлові системи.

Мене особисто дратує те, що навіть спосіб форматування цих UUID відрізняється.

blkid:

# 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:

# 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проти d8b8b4e5:e47b2e45:2093cd36:f654020d.

Дуже дратує, особливо якщо ви хочете працювати з UUID в сценаріях. Не очевидно, як конвертувати з одного форматування в інше.


Що з s /: / - / g чи навпаки? ;)
ThiefMaster

дійсно товста кишка :або тире -є просто, щоб люди могли читати довгі UUID шматками і не загубитися десь посередині. UUID насправді є двійковим числом і не має дефісів і крапок. Він реалізований в Linux як беззнаковое масив символів: unsigned char uuid_out[16]. Мабуть, специфікація UUID також має уявлення про варіанти та версії , які ми можемо побачити реалізованими, встановивши найбільш значущий байт uuid_out[6]до 4 .
TrinitronX

-1

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

mdadm має власний "внутрішній" UUID, який не використовується безпосередньо ОС, і це те, що ви використовуєте у файлі mdadm.conf, наприклад:

"ARRAY / dev / md1 level = raid1 num-devices = 2 uuid = f204c558: babf732d: 85bd7296: bbfebeea"

mdadm не повинен викликати нічого UUID, якщо він відокремлений від того, який розпізнає blkid та ОС. Можливо, це слід назвати mduuid чи чимось іншим, щоб уникнути плутанини.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.