ディスク全体のUUIDを正しく取得するには?

ディスク全体のUUIDを正しく取得するには?

UUIDはパーティショニングフェーズで(ソフトウェア経由で)割り当てられるため、ディスク全体に使用できるUUIDはありません。

ただし、/dev/disk/by-id/同じ目的で有望な情報も含まれています。 「UUID」パスを取得できます。/dev/sdb/通過:

$ disk=sdb; ls /dev/disk/by-id/ -l | grep "/$disk$" | awk '{print "/dev/disk/by-id/"$9}'
/dev/disk/by-id/ata-ST1000LM048-2E7172_WKP6XK95
/dev/disk/by-id/wwn-0x5000c500ccbb7485

ただし、ご覧のとおり、同じドライブに複数の項目があります。で終わるのがWKP6XK95実際に製品ラベルの「シリアル番号」部分に書かれているので、より意味があります。

ディスクに書き込むことができる固有の値を取得するには?つまり、wwn-...IDはどのように生成されますが、このアイテムを安全に無視できますか?このアイテムを無視しても安全ですか... | grep -v wwn

ベストアンサー1

これwwn-はディスクの世界的な名前です。技術的にはUUID形式や生成規則に従わないため、UUIDではありません。

スタンドアロンSATAおよびSASディスクからディスクファームウェアによって報告され、工場で割り当てられます。 SANストレージシステムでは、状況がより複雑になる可能性があります。ストレージは論理ユニット(LUN)として表示されるため、ストレージシステムはここにWWNを割り当てます。

これはMACアドレスと似ていますが、ディスクの場合、SANストレージ仮想化ハードウェアを使用しない限り、2つの異なるストレージで同じWWNを実際に使用しないでください。

lsscsi -UUnaa.プレフィックスでなくてもWWNも表示する必要がありますwwn-0xlsblk -o +WWN表示することもできます。

では/dev/disk/by-id/プレフィックスに注意する必要があります。展開で使用するバージョンに応じて、およびwwn-0x/またはプレフィックス付きのディスクWWN文字列を見つけることができます。scsi-3udev

GPTパーティションスキームには、パーティションテーブルの作成時に割り当てられるフルディスクUUIDの概念があります。たとえば、出力でこれを見ることができますfdisk -l

# fdisk -l /dev/sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 850 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2B05CCE8-92BC-4308-B770-174CE63D044F   <--- Here!

他のパーティションスキーム(MBRなど)には必ずしも適用可能な項目がない可能性があり、適用しても有効なUUID形式ではない可能性があります。

MBRパーティションスキームの場合、最も近いのはWindowsディスク署名(実際のMBRのオフセット0x1B8)ですが、長さが4バイトにすぎず、すべてのMBRパーティションディスクに存在することは保証されません。 Windows NTで導入されたようです。

おすすめ記事