blkidのUUIDとmdadmの違いは?


26

blkidとで報告されたUUIDの違いを誰かが説明できますかmdadm?CentOSシステムの1つで、たとえば:

[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

なぜ異なるのmdadmですか?また、使用するUUIDをどのように変更しますか?

tune2fsパーティションのUUIDを変更するために使用することを理解しています(これにより、返されるものが変更されますblkid)が、mdadm使用するものを変更する方法がわかりません。

回答:


23

最初のものは、mdブロックデバイス上のext4ファイルシステムのUUIDを報告します。システムで利用可能なファイルシステムの中でファイルシステムを一意に識別するのに役立ちます。これは、ファイルシステムの構造、つまりmdデバイスに保存されているデータに保存されます。

2つ目は、RAIDデバイスのUUIDです。mdサブシステムがその特定のRAIDデバイスを一意に識別するのに役立ちます。特に、RAIDアレイに属するすべてのブロックデバイスを識別するのに役立ちます。(各メンバーの)配列のメタデータに保存されます。アレイメンバーには独自のUUIDもあります(mdシステムでは、GPTパーティション(GPTパーティションテーブルに格納される場合)、またはLVMボリュームの場合、パーティションUUIDもあります...)。

blkid返されるのはデバイスに格納されている構造のIDであるため、少し誤解を招く可能性があります(ほとんどのファイルシステム、LVMメンバー、スワップデバイスと同様に、そのような構造について知っています)。また、同じUUID(LVMスナップショットなど)を持つ構造を持つブロックデバイスを持つことも珍しくありません。また、ブロックデバイスには、その構造にUUIDが含まれていないものなど、何でも含めることができます。

そのため、例として、GPTパーティションを使用した3つのドライブを備えたシステムを作成できます。これらのドライブには、一意に識別するWorld Wide Nameを付けることができます。3つのドライブがそれぞれ1つのパーティションでパーティション分割されているとしましょう(/dev/sd[abc]1)。各パーティションには、GPTパーティションテーブルに格納されたGPT UUIDがあります。

それらのパーティションがmd RAID5アレイを構成している場合。それぞれがRAIDメンバーとしてmd UUIDを取得し、アレイはmd RAIDデバイスとしてUUIDを取得します。

これ/dev/md0は、MSDOSまたはGPTタイプのパーティションでさらにパーティション化できます。たとえば/dev/md0p1、GPT UUID(/ dev / md0のデータに保存されているGPTパーティションテーブルに保存)を持つパーティションを作成できます。

これは、LVMの物理ボリュームになる可能性があります。そのため、PV UUIDを取得します。ボリュームグループにはVG UUIDもあります。

そのボリュームグループでは、論理ボリュームを作成し、それぞれがLV UUIDを取得します。

これらのLVの1つ(など/dev/VG/LV)で、ext4ファイルシステムを作成できます。そのファイルシステムはext4 UUIDを取得します。

blkid /dev/VG/LVそのファイルシステムの(ext4)UUIDを取得します。ただし、VGボリューム内のパーティションとして、パーティションUUIDも取得します(MSDOS / MBRなどの一部のパーティションスキームにはUUIDがありません)。そのボリュームグループは、それ自体が他のブロックデバイスであるメンバーPVで構成されています。blkid /dev/md0p1PV UUIDが表示されます。また、上のGPTテーブルにパーティションUUIDがあります/dev/md0/dev/md0それ自体は他のブロックデバイスから作成されます。blkid /dev/sda1raid-member UUIDを返します。また、上のGPTテーブルにパーティションUUIDがあります/dev/sda


使用されるRAIDデバイスのUUIDをどのように変更しmdadmますか?サーバーのイメージを再作成しただけで、UUIDが異なるため、すべての構成ファイルを変更する必要がないように、以前のUUIDを復元する必要があります。基本的に/dev/md0、新しいUUIDがあり、それを古いもの(バックアップから識別されたもの)に戻したいので、システムはそれ以上の変更を必要とせずに起動します。
クリス

@ Chris、MD UUID(を参照man mdadm)またはext4 UUID(を参照man tune2fs)?ブートの問題は、ルートファイルシステムを見つけること、またはinitramfsに保存されているmdadm.confに基づいてRAIDアレイを組み立てることです。どちらにしても、UUIDを混ぜ合わせるよりも、mdadm.confまたはfstab / grub.cfgを更新する方が簡単に思えます。
ステファンシャゼル

MD UUID-サーバーをバックアップから復元しました。RAIDデバイスのUUIDを更新する方法を知っていますか?その情報はマンページに表示されません。私たちは、それを機能させるための最も簡単な方法(復元手順のテスト)を試みています。
クリス

@クリス、あなたはそれについて別の質問を提起する必要があります。
ステファンシャゼル

@Chris:UUIDを異なるものにする必要があります。(UUIDの競合のため)異なるRAIDであるにもかかわらず、mdadmが複数のディスクが同じRAIDに属すると信じている場合、実際の問題が発生します。
frostschutz

4

別のUUIDはすでに説明されています。ファイルシステムだけではありません。RAIDアレイ、デバイス、パーティション、LUKSコンテナー、LVM PV、そして最後にファイルシステムなど、さまざまなものに対するUUIDがあります。

個人的に私を悩ませているのは、それらの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-cd36f654020dd8b8b4e5:e47b2e45:2093cd36:f654020d

特にスクリプトでUUIDを使用する場合は、非常に面倒です。あるフォーマットから別のフォーマットに変換する方法は明らかではありません。


s /:/-/ gまたはその逆はどうですか?;)
シーフマスター14

実際にはコロン:またはダッシュ-が存在するため、人間は長いUUIDをチャンクで読み取ることができ、途中で失われることはありません。UUIDは実際には2進数であり、ダッシュやコロンはありません。Linuxでは、符号なし文字配列として実装されていますunsigned char uuid_out[16]。どうやらUUID仕様には、バリアントとバージョンのアイデアもあります。これは、最上位バイトuuid_out[6]を4に設定することで実装されていることがわかります
TrinitronX

-1

「32cb0a6e-8148-44e9-909d-5b23df045bd1」の上のblkid UUIDは正しいものです。これはOSがRAIDアレイを見つけるために使用するものです。

mdadmには、OSによって直接使用されない独自の「内部」UUIDがあり、mdadm.confファイルで使用するものです。例:

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

mdadmは、blkidやOSが認識するものとは別のUUIDを呼び出さないでください。混乱を避けるため、mduuidまたは他の何かと呼ばれるべきでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.