UUID ile blkid ve mdadm arasındaki fark nedir?


26

Birisi UUID’nin bildirdiği blkidve arasındaki farkı açıklayabilir mdadmmi? CentOS sistemlerimizden birinde, örneğin:

[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

Neden farklılar ve kullandıkları UUID'yi nasıl değiştiririz mdadm?

tune2fsBölümün UUID'sini değiştirmek için kullanacağımızı (neyin geri döndüğünü değiştirecek blkid) ama ne kullanacağını nasıl değiştireceğimizi bilmeyeceğimizi biliyorum mdadm.

Yanıtlar:


23

İlki, mdblok cihazdaki ext4 dosya sisteminin UUID'sini bildirir . Sistemin, dosya sistemini, sistemde bulunan dosya sistemleri arasında benzersiz bir şekilde tanımlamasına yardımcı olur. Dosya sisteminin yapısında, md aygıtında depolanan verilerde depolanır.

İkincisi, RAID cihazının UUID'sidir. MD alt sisteminin bu RAID cihazını benzersiz şekilde tanımlamasına yardımcı olur. Özellikle, RAID dizisine ait tüm blok cihazlarını tanımlamaya yardımcı olur. Dizinin meta verilerinde depolanır (her üye için). Dizi üyeleri ayrıca kendi UUID'lerine de sahiptir (md sisteminde, GPT bölümleri (GPT bölüm tablosunda saklanacak olan) veya LVM birimleri ... ise, bölüm UUID'lerine de sahip olabilirler).

blkidgeri döndüren şey, cihazda depolanan yapının (çoğu dosya sistemi, LVM üyeleri ve takas cihazları gibi bildiği yapılar için) kimliği olduğu için biraz yanıltıcıdır. Ayrıca, aynı UUID'lere sahip yapılara sahip blok cihazlarının (örneğin LVM anlık görüntüleri) bulunmasının da alışılmadık olmadığını unutmayın. Ve bir blok cihazı, yapısı UUID içermeyen şeyler de dahil olmak üzere her şeyi içerebilir.

Dolayısıyla, bir örnek olarak, GPT bölümlemeli 3 sürücülü bir sisteme sahip olabilirsiniz. Bu sürücülerin, onu benzersiz şekilde tanımlayan bir Dünya Çapında Adı olabilir . Diyelim ki 3 sürücü her biri birer bölümle ( /dev/sd[abc]1) bölümlendi . Her bölüm GPT bölüm tablosunda depolanan bir GPT UUID değerine sahip olacaktır.

Bu bölümler bir md RAID5 dizisi oluşturursa. Her biri RAID üyesi olarak bir md UUID alır ve dizi md RAID aygıtı olarak bir UUID alır.

Bu, /dev/md0bundan başka, MSDOS'a veya GPT tipi bölümleme ile bölümlenmiş olabilir. Örneğin, /dev/md0p1bir GPT UUID'sine sahip bir bölümümüz olabilir (/ dev / md0 verilerinde depolanan GPT bölüm tablosunda saklanır).

Bu da LVM için fiziksel bir hacim olabilir. Gibi bir PV UUID alacak. Birim grubu ayrıca bir VG UUID değerine sahip olacaktır.

Bu cilt grubunda, her biri LV UUID olan bir mantıksal cilt oluşturursunuz.

Bu LV'lerden birinde (gibi /dev/VG/LV) bir ext4 dosya sistemi oluşturabilirsiniz. Bu dosya sistemi ext4 UUID alırdı.

blkid /dev/VG/LVBu dosya sisteminin (ext4) UUID'sini alırdım. Ancak VG hacminin içindeki bir bölüm olarak, bir bölüm UUID'ye de sahip olacaktır (MSDOS / MBR gibi bazı bölümleme şemalarında UUID'ler yoktur). Bu cilt grubu kendileri diğer blok cihazları olan üyeler PV'lerden oluşuyor. blkid /dev/md0p1size PV UUID'yi verirdi. Ayrıca açık GPT tablosunda bir bölüm UUID vardır /dev/md0. /dev/md0kendisi diğer blok cihazlarından yapılır. blkid /dev/sda1baskın üye UUID'yi iade edecek. Ayrıca açık GPT tablosunda bir bölüm UUID vardır /dev/sda.


Bir RAID aygıtının UUID'sini, tarafından kullanıldığı şekilde nasıl değiştiririz mdadm? Bir sunucuyu yeniden görüntülüyoruz ve UUID'ler farklı, bu nedenle önceki UUID'leri geri yüklemek istiyoruz, böylece tüm yapılandırma dosyalarını değiştirmemize gerek kalmıyor. Temel olarak, /dev/md0yeni bir UUID var ve onu eskisine döndürmek istiyoruz (bir yedeklemeden tanımlanır), böylece sistem daha fazla değişikliğe gerek duymadan önyüklenir.
Chris,

@Chris, MD UUID (bkz. man mdadm) Veya ext4 UUID (bkz. man tune2fs)? Kök dosya sistemini bulma ya da initramfs içinde depolanan mdadm.conf temelli RAID dizisini bir araya getirme hakkında önyükleme sorunu mu var. Her iki durumda da, mdadm.conf veya fstab / grub.cfg dosyasını güncellemek UUID'lerle karışmaktan daha basit geliyor.
Stéphane Chazelas 15:14

MD UUID - sunucuyu yedekten geri yükledik. Bir RAID cihazının UUID'sinin nasıl güncelleneceğini biliyor musunuz? Bu bilgiyi sayfada göremiyorum. Çalışmasını sağlamanın en basit yolunu bulmaya çalışıyoruz (geri yükleme yordamını sınama).
Chris

@ Chris, bunun için başka bir soru sormalısın.
Stéphane Chazelas

@Chris: UUID'lerin farklı olmasını istersiniz. Mdadm, farklı baskınlar olmasına rağmen (UUID çatışmaları nedeniyle), aynı baskınya ait olduğuna inanan birden fazla disk görürse, gerçek sorunlarınız olur.
frostschutz

4

Farklı UUID zaten açıklandı. Sadece dosya sistemlerinde değil. Sadece farklı şeyler için UUID'ler var: baskın dizisi, cihaz, bölümleme, LUKS kapları, LVM PV'ler ... ve son olarak dosya sistemleri.

Beni kişisel olarak rahatsız eden şey, bu UUID'lerin formatlanma biçimlerinin bile farklı olması.

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

Gördüğünüz gibi, aynı Uuıdlerin, ama blkidtire ile yazdırır -oysa mdadmkullandığı iki nokta üst üste :. Demek d8b8b4e5-e47b-2e45-2093-cd36f654020dvs?d8b8b4e5:e47b2e45:2093cd36:f654020d .

Çok can sıkıcı, özellikle scriptlerde UUID'lerle çalışmak istiyorsanız. Bir biçimlendirmeden diğerine nasıl dönüştürüleceği açık değildir.


Peki ya s /: / - / g veya tersi? ;)
ThiefMaster

Gerçekten de kolon :veya çizgi -oradadır, böylece insanlar uzun UUID'leri topaklarda okuyabilir ve ortada bir yerde kaybolmazlar. UUID gerçekten bir ikili sayıdır ve tire ya da iki noktaya sahip değildir. Bu imzasız karakter dizisi olarak Linux uygulanır: unsigned char uuid_out[16]. Görünüşe UUID spec de bir fikri vardır varyantları ve sürümleri biz görebilirsiniz, en önemli bayt ayarlayarak uygulamaya uuid_out[6]4'e .
TrinitronX

-1

"32cb0a6e-8148-44e9-909d-5b23df045bd1" in üzerindeki blkid UUID, OS'nin RAID dizisini bulmak için kullanacağı doğru olanıdır.

mdadm, doğrudan işletim sistemi tarafından kullanılmayan ve mdadm.conf dosyasında kullandığınız şey olan kendi "iç" UUID'sine sahiptir.

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

mdadm, blkid ve işletim sistemi tanıyandan ayrı olduğunda UUID diye bir şey çağırmamalıdır. Belki de karışıklığı önlemek için mduuid veya başka bir şey olarak adlandırılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.