LinuxのUUIDとは?デバイス識別IDの仕組みと確認方法を初心者向けに徹底解説
生徒
「Linuxの勉強をしていたらUUID(ユーユーアイディー)という言葉が出てきたのですが、これは何のためにあるのですか?」
先生
「UUIDは、ハードディスクやUSBメモリなどのストレージデバイスを、世界中でたった一つしかない固有の番号で識別するための仕組みですよ。」
生徒
「デバイスの名前だけじゃダメなんですか?例えば/dev/sda(スラデブエスディーエー)みたいに。」
先生
「そこが重要なポイントです。デバイス名は接続順によって変わることがあるけれど、UUIDなら絶対に変わらないんです。今日はその理由と使い方を学びましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. UUIDとは?デバイスを特定する唯一無二のID
UUIDは、読み方はUUID(ユーユーアイディー)といい、正式名称はUniversally Unique Identifier(ユニバーサリ・ユニーク・アイデンティファイア)といいます。日本語では「汎用一意識別子(ハンヨウイチイシキベツシ)」と訳されます。
Linux(リナックス)の世界では、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、USBメモリなどの「パーティション(区切り)」を確実に識別するために使われます。UUIDは「8-4-4-4-12」という形式の32個の16進数(0-9とa-f)で構成されており、天文学的な確率で重複することがないように設計されています。
例えば、あなたが使っているパソコンのSSDに割り振られたUUIDは、世界中の他のどのパソコンにあるストレージとも重なることはありません。この「絶対に被らない」という性質が、システムの安定稼働に欠かせない役割を果たしています。
2. なぜデバイス名(/dev/sdaなど)ではいけないのか
Linuxでは、ストレージデバイスを「/dev/sda(スラデブエスディーエー)」や「/dev/sdb(スラデブエスディービー)」といったデバイスファイル名で管理することがあります。しかし、これには大きな弱点があります。
それは、「接続する順番や環境によって名前が変わってしまう可能性がある」という点です。例えば、外付けHDDを2台繋いでいるとき、前回は「sda」だったものが、再起動後に差し込む順番が変わると「sdb」に変わってしまうことがあります。
もし、システムの設定ファイル(/etc/fstabなど)に「sdaを起動時に読み込む」と書いていた場合、名前が変わってしまうとシステムが正しく起動できなくなるトラブルが発生します。ここでUUIDの出番です。UUIDはパーティションそのものに刻まれている情報なので、どのポートに繋いでも、何番目に認識されても、常に同じIDとして認識されます。これが「不変の識別子」と呼ばれる理由です。
3. 自分のLinuxシステムでUUIDを確認してみよう
実際に自分のLinux環境でUUIDを確認する方法を学びましょう。最も一般的で使いやすいコマンドは、lsblk(エルエスビーエルケー)コマンドです。このコマンドは、ブロックデバイス(ストレージ)を一覧表示してくれます。
次のコマンドを実行すると、デバイス名と一緒にUUIDを表示させることができます。一般ユーザーの権限で実行可能です。
lsblk -f
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS
sda
└─sda1 ext4 1.0 550e8400-e29b-41d4-a716-446655440000 /
sdb
└─sdb1 vfat FAT32 USB A1B2-C3D4 /mnt/usb
実行結果の「UUID」列に表示されている長い文字列が、それぞれのパーティションに割り当てられた固有のIDです。このように、デバイスごとに異なる値が設定されていることがわかります。
4. blkidコマンドで詳細な情報を取得する
より詳細な情報を取得したい場合には、blkid(ビーエルケーアイディー)コマンドを使用します。このコマンドは、デバイスの属性(ファイルシステムの種類やUUID、ラベル名など)を直接読み取ります。
システム全体のデバイス情報をスキャンするため、通常は管理者権限(root権限)で実行することが推奨されます。sudo(スードゥー)を組み合わせて実行してみましょう。
blkid
/dev/sda1: UUID="550e8400-e29b-41d4-a716-446655440000" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00012345-01"
/dev/sdb1: UUID="A1B2-C3D4" BLOCK_SIZE="512" TYPE="vfat"
この結果から、どのデバイスファイル(/dev/sda1など)がどのUUIDを持っているのかが一目でわかります。設定ファイルにUUIDをコピー&ペーストしたいときによく使われるコマンドです。
5. /dev/disk/by-uuid ディレクトリの中身を見る
Linuxには、コマンドを使わなくてもUUIDを確認できる場所があります。それが「/dev/disk/by-uuid(スラデブスラディスクスラバイユーユーアイディー)」という特殊なディレクトリです。
このディレクトリの中には、UUIDをファイル名とした「シンボリックリンク(近道のようなもの)」が自動的に作成されています。ls(エルエス)コマンドで中身を覗いてみましょう。
ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Apr 6 07:00 550e8400-e29b-41d4-a716-446655440000 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 6 07:00 A1B2-C3D4 -> ../../sdb1
このように、長いUUIDが実際のデバイスファイル(sda1など)に紐付けられている様子がリアルタイムで確認できます。OSが裏側でどのようにUUIDを管理しているかがよくわかる構造になっています。
6. UUIDの歴史と生成される仕組みの雑学
UUIDの概念は、もともと1980年代にApollo Computer(アポロコンピューター)によって開発され、その後に分散コンピューティング環境(DCE)の一部として標準化されました。なぜこれほどまでに長い文字列なのかというと、中央管理サーバーを介さずに、誰がどこでIDを発行しても「絶対に重複しない」ことを保証するためです。
UUIDの生成には、いくつかの「バージョン」が存在します。
- バージョン1: コンピュータのMACアドレス(マックアドレス)と現在時刻を組み合わせて作る方法。
- バージョン4: 完全にランダムな数値を使って作る方法(現在のLinuxで最も一般的)。
現在の主流であるバージョン4では、ランダムに生成されるビット数が非常に多いため、同じIDが偶然生まれる確率は「地球上の全人間が1秒間に10億個のUUIDを100年間作り続けて、ようやく1回重なるかどうか」というレベルです。これなら安心してシステムの識別を任せられますね。
7. 設定ファイル /etc/fstab での活用例
UUIDが最も活躍する場所は、Linuxの自動マウント設定を記述する「/etc/fstab(スラエトセフスタブ)」というファイルです。マウントとは、ストレージをOSのフォルダとして利用できるように接続する操作のことです。
初心者がよく陥るミスとして、このファイルにデバイス名(/dev/sda1)で記述してしまうことがあります。前述の通り、これは名前が変わるリスクがあるため危険です。安全な設定ファイルの書き方を見てみましょう。
cat /etc/fstab
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=550e8400-e29b-41d4-a716-446655440000 / ext4 errors=remount-ro 0 1
UUID=A1B2-C3D4 /mnt/usb vfat defaults 0 2
このように、「UUID=~」という形式で記述することで、物理的な接続順序に関わらず、目的のドライブを確実に決まった場所(マウントポイント)に接続できるようになります。サーバー運用や自作PCでのLinuxインストール時には必須の知識となります。
8. ストレージ交換時にUUIDを確認する重要性
新しいHDDやSSDを購入して、データを丸ごとコピー(クローン)した場合、UUIDがどうなるか知っていますか?実は、クローンソフトの種類によってはUUIDまでコピーしてしまうことがあります。同じUUIDを持つデバイスが同時に2つ接続されると、OSはどちらが正しいものか判断できず混乱してしまいます。
また、新しくパーティションを作成(フォーマット)すると、新しいUUIDが自動的に割り当てられます。ストレージを新調したときは、必ずlsblk -fコマンド等で新しいUUIDを確認し、必要であれば設定ファイルを書き換える作業が必要になります。
「ハードディスクを交換したらLinuxが起動しなくなった」というトラブルの多くは、このUUIDの不一致が原因です。デバイス識別IDという言葉通り、UUIDはLinuxにとっての「マイナンバー」のようなものだと考えると、その重要性がより理解できるはずです。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
この記事では、LinuxシステムにおけるUUID(Universally Unique Identifier)の役割や確認方法、そしてなぜシステム管理において重要なのかを詳しく解説してきました。UUIDは、ストレージデバイスやパーティションを識別するための「世界で唯一のID」であり、従来の「/dev/sda」といったデバイス名が抱えていた「接続順によって名前が変わってしまう」というリスクを完全に解消する画期的な仕組みです。
Linux運用におけるUUIDのメリット
Linuxのサーバー運用やデスクトップ利用において、UUIDを利用する最大のメリットはシステムの堅牢性向上にあります。例えば、外付けハードディスクを増設したり、内蔵SSDの接続ポートを変更したりした場合でも、UUIDはパーティションのメタデータに直接書き込まれているため、変化することがありません。これにより、OSの起動設定を司る「/etc/fstab」において、誤ったデバイスをマウントしてしまいシステムが停止するといった致命的なトラブルを未然に防ぐことができます。
主要なコマンドのおさらい
現場で頻繁に利用されるUUID関連のコマンドを改めて整理しておきましょう。これらを使いこなすことで、デバイス管理の効率が格段に上がります。
- lsblk -f:一般ユーザーでも実行可能で、ツリー形式でUUIDを一覧表示できる最も視認性の高いコマンドです。
- blkid:管理者権限が必要ですが、ファイルシステムのタイプやPARTUUIDなど、より詳細な属性情報を取得する際に重宝します。
- ls -l /dev/disk/by-uuid:OSが内部的に管理しているシンボリックリンクを直接確認できる、構造理解に最適な方法です。
UUIDを操作する応用例
時には、自分で新しいUUIDを生成したり、特定のパーティションに手動で割り当てたりする必要がある場面もあります。例えば、既存のUUIDを上書きして新しい識別子を付与したい場合には、uuidgenコマンドやファイルシステム固有のツールを使用します。
# 新しいUUIDを生成して表示する
uuidgen
4d5e6f7a-1234-4a5b-bc6d-7e8f9a0b1c2d
# ext4ファイルシステムのUUIDを変更する(例:/dev/sdb1)
sudo tune2fs -U random /dev/sdb1
このように、UUIDは自動で割り振られるだけでなく、管理者がコントロールすることも可能です。ただし、UUIDを変更した後は、必ず「/etc/fstab」やブートローダーの設定(GRUBなど)を更新することを忘れないでください。この一連の作業を正確に行うことが、Linuxエンジニアとしての第一歩となります。
今後の学習に向けて
UUIDの理解を深めることは、ディスククォータの設定やLVM(論理ボリュームマネージャー)、RAID構成といった、より高度なストレージ管理技術を学ぶための土台となります。また、クラウド環境(AWSやAzureなど)の仮想サーバーにおいても、ルートボリュームの識別にUUIDが多用されています。物理環境から仮想環境まで、モダンなITインフラを支える共通言語として、UUIDの知識をしっかりと自分のものにしておきましょう。
生徒
「先生、ありがとうございました!UUIDがなぜあんなに長くて複雑な形をしているのか、その理由がよくわかりました。単なるランダムな文字列じゃなくて、重複を絶対に避けるための知恵が詰まっているんですね。」
先生
「その通りです。ITの世界では『一意性(ユニークであること)』が非常に重視されます。UUIDのおかげで、私たちは複雑なシステムの中でも迷わずに特定のデータへアクセスできるんですよ。」
生徒
「もし、間違えて/etc/fstabに古いUUIDを残したままHDDを交換しちゃったら、どうなるんですか?」
先生
「いい質問ですね。その場合、Linuxは起動時に『指定されたUUIDのデバイスが見つからない』というエラーを出して、メンテナンスモード(緊急モード)で止まってしまいます。だから、ストレージ構成を変えたときは、必ずlsblkコマンドで新しいIDを確認する癖をつけましょう。」
生徒
「なるほど。lsblk -f は魔法の言葉ですね!これからはデバイス名に頼らず、UUIDを基準に考えるようにします。」
先生
「素晴らしい心がけです。プロの現場では、確実性が何よりも優先されます。UUIDを使いこなして、安定したシステム管理ができるエンジニアを目指してくださいね。」