誰かがblkid
とmdadm
によって報告されたUUIDの違いを説明できますか? 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
が使用するものを変更する方法がわかりません。
最初のものは、md
ブロックデバイス上のext4ファイルシステムのUUIDを報告します。これは、システムで使用可能なファイルシステム間でファイルシステムを一意に識別するのに役立ちます。これは、ファイルシステムの構造、つまりmdデバイスに格納されているデータに格納されます。
2つ目は、RAIDデバイスのUUIDです。これは、mdサブシステムが特定のRAIDデバイスを一意に識別するのに役立ちます。特に、RAIDアレイに属するすべてのブロックデバイスを識別するのに役立ちます。 (各メンバーの)配列のメタデータに格納されます。アレイメンバーも独自のUUIDを持っています(mdシステムでは、GPTパーティション(それ自体がGPTパーティションテーブルに格納されます)、またはLVMボリュームの場合は、パーティションUUIDを持っている場合もあります)。
blkid
は、デバイスに格納されている構造体のIDを返すため、少し誤解を招く可能性があります(ほとんどのファイルシステム、LVMメンバー、スワップデバイスなど、デバイスが認識している構造体のIDです)。また、同一の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タイプのパーティションでさらにパーティション化できます。たとえば、GPT UUID(/ dev/md0のデータに格納されているGPTパーティションテーブルに格納されている)を持つ/dev/md0p1
パーティションを作成できます。
これは、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/md0p1
はPV UUIDを提供します。また、/dev/md0
のGPTテーブルにパーティションUUIDがあります。 /dev/md0
自体は、他のブロックデバイスから作成されます。 blkid /dev/sda1
はRAIDメンバーのUUIDを返します。また、/dev/sda
のGPTテーブルにパーティションUUIDがあります。
異なる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-cd36f654020d
とd8b8b4e5:e47b2e45:2093cd36:f654020d
の比較になります。
特にスクリプトでUUIDを操作する場合は、非常に煩わしいです。あるフォーマットから別のフォーマットに変換する方法は明らかではありません。