blkidコマンドとは?LinuxでUUIDやファイルシステムを確認する方法を徹底解説!
生徒
「Linux(リナックス)で新しいハードディスクを接続したのですが、システムがどう認識しているか確認する方法はありますか?」
先生
「それならblkid(ビーエルケーアイディー)というコマンドが便利ですよ。ストレージの識別番号であるUUID(ユーユーアイディー)などを一目で確認できます。」
生徒
「UUID(ユーユーアイディー)って何ですか?難しそうな名前ですね。」
先生
「簡単に言うと、機器ごとの『背番号』や『マイナンバー』のようなものです。これを知っておくと、設定ファイルを書き換えるときに間違いがなくなるんですよ。」
生徒
「なるほど、個別の名前を確認するコマンドなんですね。使いかたを教えてください!」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. blkidコマンドとは?
blkid(読み方はビーエルケーアイディー)コマンドは、Linuxシステムにおいて「ブロックデバイス」と呼ばれるストレージ機器の情報を表示するためのツールです。ブロックデバイスとは、ハードディスク(HDD)やSSD(エスエスディー)、USBメモリなどのデータを保存する装置のことを指します。
このコマンドを使用する主な目的は、各パーティション(領域)に割り当てられたUUID(Universally Unique Identifier:ユニバーサル・ユニーク・アイデンティファイア)や、ファイルシステムの種類(TYPE)、ボリュームラベルなどを確認することです。
Windowsであれば「Cドライブ」や「Dドライブ」といった名前で区別しますが、Linuxでは/dev/sda1(スラッシュ・デブ・エスディーエーワン)といった名前で管理されます。しかし、これらの名前は接続順序によって変わってしまうことがあります。そこで、絶対に変わらない「固有のID」であるUUIDを確認するために、このblkidコマンドが欠かせない存在となっています。
2. UUID(ユーユーアイディー)の重要性
UUID(読み方はユーユーアイディー)は、世界中で重複することがないように生成される128ビットの識別子です。Linuxのシステム管理において、なぜこの長い文字列が必要なのでしょうか。
例えば、パソコンに複数のハードディスクを接続している場合、再起動のタイミングや接続ポートの違いによって、デバイス名が/dev/sdbから/dev/sdcに入れ替わってしまうことがあります。もし設定ファイルにデバイス名で記述していると、OS(オーエス)が正しく起動しなくなる恐れがあります。
そこで、システムの設定ファイルである/etc/fstab(読み方はエトセ・エフエスタブ)などでは、デバイス名の代わりにUUIDを使用します。UUIDは機器そのものに紐付いているため、接続場所が変わってもシステムは迷わずそのディスクを見つけ出すことができます。いわば、住所ではなく「個人名」で荷物を届けるような確実性があるのです。
3. blkidコマンドの基本的な使いかた
まずは、引数なしでコマンドを実行してみましょう。システムに認識されているすべてのブロックデバイスの情報がリスト形式で表示されます。このコマンドは、一般ユーザーでも実行可能ですが、最新の正確な情報を取得するためには、管理者権限(root:ルート)で実行することが推奨される場合もあります。
まずは一般ユーザーで実行した際の例を見てみましょう。出力結果には、デバイス名、UUID、ファイルシステムの種類(TYPE)が表示されます。
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" PARTUUID="6789abcd-01"
上記の例では、/dev/sda1はext4(イーエックスティーフォー)というLinux標準のファイルシステムであり、/dev/sdb1はUSBメモリなどでよく使われるvfat(ブイファット)形式であることがわかります。
4. 特定のデバイス情報を指定して確認する
すべてのデバイスが表示されると、情報が多すぎて目的のデータを探すのが大変なことがあります。その場合は、引数にデバイスのパスを指定することで、特定のパーティションのみの情報を抽出できます。
例えば、1番目のハードディスクの第1パーティションである/dev/sda1の情報だけを見たい場合は、次のように入力します。
blkid /dev/sda1
/dev/sda1: UUID="550e8400-e29b-41d4-a716-446655440000" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00012345-01"
このように絞り込むことで、設定ファイルへのコピー&ペースト作業が非常にスムーズになります。コマンドラインでの操作は、こうした「必要な情報だけを取り出す」工夫が効率化の鍵となります。
5. 管理者権限(root)での実行とキャッシュの更新
Linuxでは、ハードディスクの構成を変更した直後だと、古い情報が「キャッシュ」として残っていることがあります。より正確な、現在のリアルタイムな情報を取得したい場合は、sudo(スードゥー)コマンドを使い、管理者権限(root:ルート)で実行するのが一般的です。
特に、新しいパーティションを作成した直後などは、一般ユーザーの実行結果には反映されないことがあります。ルートユーザーとして実行することで、システム全体のストレージ情報を強制的に再スキャンして表示させることができます。
blkid -g
blkid
/dev/nvme0n1p1: UUID="2026-0404-ABCD" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition"
/dev/nvme0n1p2: UUID="f47ac10b-58cc-4372-a567-0e02b2c3d479" BLOCK_SIZE="4096" TYPE="xfs"
ここで使用している-gオプションは、古いキャッシュをクリアするための命令です。読み方は「ガーベジコレクション」の意味を含んでおり、ゴミとなった古いデータを掃除してくれます。その後、改めてblkidを叩くことで、最新の状態を確認できます。
6. ファイルシステムの種類(TYPE)を確認する方法
blkidコマンドの結果に含まれる「TYPE」という項目は、そのパーティションがどのような形式でフォーマットされているかを示しています。ファイルシステムとは、データをどのように整理して保存するかというルールのことです。本棚の整理術のようなものだと考えてください。
Linuxでよく見かける代表的なTYPEには以下のようなものがあります。
- ext4(イーエックスティーフォー):Linuxで最も一般的に使われる安定したシステム。
- xfs(エックスエフエス):大規模なファイルや高速な処理が得意なシステム。
- vfat(ブイファット):WindowsやMacでも読み書きできる、互換性の高いシステム。
- swap(スワップ):メモリが足りなくなったときに一時的にデータをおく領域。
「このUSBメモリ、Windowsで使える形式かな?」と疑問に思ったときは、blkidを実行してTYPEがvfatやntfs(エヌティーエフエス)になっているかを確認すれば解決します。
7. 特定の項目だけを抽出する(出力のカスタマイズ)
スクリプトを作成したり、UUIDの文字列だけを純粋に取得したい場合には、-s(セレクト)オプションや-o(出力形式)オプションを活用します。例えば、UUIDという項目(タグ)の値だけを表示させたい場合は、以下のような書き方をします。
blkid -s UUID -o value /dev/sda1
550e8400-e29b-41d4-a716-446655440000
この実行結果を見ると、余計な説明が一切省かれ、UUIDの文字列だけが出力されているのがわかります。これは、プログラムや設定自動化ツールに値を渡したいときに非常に重宝するテクニックです。初心者のうちはあまり使いませんが、「こんな便利な取り出し方もあるんだな」と頭の片隅に置いておくと、将来役に立ちます。
8. blkidと関連するコマンド:lsblkとの違い
Linuxには、ストレージ情報を確認するコマンドが他にもあります。特によく似た役割を持つのがlsblk(エルエスビーエルケー)コマンドです。lsblkは、デバイスの接続構造を「ツリー形式(木の枝分かれのような形)」で見せてくれるのが得意です。
一方で、今回のblkidは、より詳細な識別情報(UUIDやファイルシステム名)をピンポイントで確認するのに適しています。用途に合わせて使い分けるのがLinuxマスターへの近道です。例えば、「物理的にどこに繋がっているか」を知りたいときはlsblkを使い、「設定ファイルに書き込むUUIDを調べたい」ときはblkidを使う、といった具合です。
9. トラブルシューティング:コマンドが見つからない場合
もしターミナルでblkidと入力して「command not found(コマンドが見つかりません)」と表示された場合、そのコマンドがインストールされている場所(パス)が通っていない可能性があります。blkidは通常、システム管理用のディレクトリである/sbin/(スラッシュ・エスビン)や/usr/sbin/(スラッシュ・ユーザー・エスビン)に配置されています。
そのような場合は、フルパスでコマンドを指定するか、前述の通りsudoをつけて実行してみてください。Linuxのディレクトリ構造(階層構造)において、システムに影響を与える重要なコマンドは、一般ユーザーから隠れた場所に置かれていることがあるためです。
/sbin/blkid
/dev/sda1: UUID="550e8400-e29b-41d4-a716-446655440000" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00012345-01"
このようにフルパスで入力することで、場所がわからないと困っているシステムに対して「ここにある実行ファイルを使ってね」と明示的に指示することができます。
10. 実践的な活用シーン:ディスクの増設と自動マウント
最後に、実際の運用シーンを想像してみましょう。新しく1TB(イチテラバイト)のHDD(ハードディスクドライブ)を購入し、サーバーに追加したとします。OSを起動するたびに手動で認識させるのは面倒ですよね。そこで「自動マウント」の設定を行います。
自動マウントの設定ファイル/etc/fstabには、「どのUUIDのディスクを、どのフォルダに接続するか」を記述します。ここでblkidを使って調べた正確なUUIDを貼り付けることで、設定ミスを防ぎ、安全にストレージを拡張できるようになります。この一連の流れができるようになれば、初心者卒業と言えるでしょう。Linuxのファイルシステム管理は、こうした小さな確認作業の積み重ねで成り立っています。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
Linux(リナックス)システムにおけるストレージ管理において、blkid(ビーエルケーアイディー)コマンドは非常に重要な役割を担っています。この記事では、ハードディスクやSSD、USBメモリといったブロックデバイスの識別情報を確認する具体的な方法について詳しく解説してきました。特に、システム再起動やデバイスの接続順序によって変化することのない、世界に一つだけの識別子であるUUID(ユーユーアイディー)の確認は、サーバー運用やPC管理において欠かせない作業です。
blkidコマンドの主要なポイント
これまでに学んだ内容を振り返り、重要なポイントを整理しましょう。Linuxエンジニアやシステム管理者を目指す方にとって、以下の要素は基本スキルとなります。
- UUIDの取得:デバイス固有のIDを確認し、設定ミスを防ぐ。
- ファイルシステムの判別:ext4(イーエックスティーフォー)やxfs(エックスエフエス)、vfat(ブイファット)などの種類を特定する。
- 自動マウント設定:/etc/fstab(エトセ・エフエスタブ)の編集に必要な正確な情報を得る。
- キャッシュのクリア:blkid -g オプションで最新のデバイス情報をスキャンする。
実務で使えるblkidの応用テクニック
実際の現場では、ただ情報を表示するだけでなく、特定の値をプログラムやシェルスクリプトで利用することが多くあります。例えば、特定のパーティションのUUIDだけを抽出して変数に格納し、その後の処理を自動化するといった手法です。ここでは、現場で役立つコマンドの組み合わせや、情報の読み取り方を改めて確認します。
以下のコード例では、特定のデバイス情報を取得し、その結果をどのように解釈すべきかを示しています。
# デバイス /dev/nvme0n1p3 の詳細情報を表示
sudo blkid /dev/nvme0n1p3
/dev/nvme0n1p3: UUID="e8d5f3a1-7c9b-4b2d-9e6f-1a2b3c4d5e6f" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="b9f8e7d6-05"
# UUIDの値だけを抽出して表示(スクリプト利用向け)
blkid -s UUID -o value /dev/nvme0n1p3
e8d5f3a1-7c9b-4b2d-9e6f-1a2b3c4d5e6f
このように、オプションを使い分けることで、人間が読みやすい形式からプログラムが処理しやすい形式まで、柔軟に出力をカスタマイズできます。Linuxの操作に慣れてくると、こうした「出力の加工」が非常に楽しくなり、作業効率も劇的に向上します。
Linuxストレージ管理の全体像
Linuxのファイルシステム管理は、物理的なデバイス、パーティション、そしてマウントポイントという階層構造で成り立っています。blkidはこの中で「パーティション自体の身分証」を確認するツールです。もし、ディスクの容量やマウント状況を視覚的に把握したい場合は、lsblk(エルエスビーエルケー)やdf(ディーエフ)コマンドと併用するのがベストプラクティスです。
また、最新のLinuxディストリビューション(Ubuntu、CentOS、Debianなど)では、NVMe(エヌブイエムイー)接続の高速なSSDが普及しており、デバイス名が/dev/nvme0n1p1のような形式になることが増えています。名称が複雑になればなるほど、UUIDによる管理の重要性は増していきます。
生徒
「先生、ありがとうございました!blkid(ビーエルケーアイディー)コマンドを使うことで、バラバラに見えたハードディスクの情報が、UUID(ユーユーアイディー)という共通のルールで管理されていることがよくわかりました。」
先生
「それは良かったです。UUIDが分かれば、設定ファイルの記述でミスをして、OS(オーエス)が起動しなくなるという最悪の事態も防げますからね。特に/etc/fstab(エトセ・エフエスタブ)を編集するときは、必ずこのコマンドで確認する癖をつけましょう。」
生徒
「はい!さっき、自分のパソコンでも試してみたんです。-s UUID -o valueというオプションを使ったら、本当にIDの文字列だけが出てきて感動しました。これなら、メモ帳にコピーして貼り付けるのも簡単ですね。」
先生
「素晴らしいですね。応用もバッチリです。ちなみに、新しいUSBメモリを指したときに認識されないことがあれば、管理者権限(root:ルート)でblkid -gを試して、キャッシュをクリアすることも忘れないでくださいね。」
生徒
「ガーベジコレクションの-gですね。覚えました!あと、lsblk(エルエスビーエルケー)との使い分けも意識してみます。木構造で見たいときはlsblk、詳しい中身やIDを知りたいときはblkid、という感じですよね?」
先生
「その通り!使い分けができるようになれば、もうLinux初心者卒業ですよ。ストレージ管理は基本でありながら奥が深い分野です。これからも色々なコマンドを組み合わせて、安全で効率的なシステム運用を楽しんでくださいね。」
生徒
「ありがとうございます!次は、実際に自分の環境で新しいパーティションを作って、UUIDを使って自動マウントの設定に挑戦してみようと思います!」
最後に:さらなるステップアップに向けて
この記事を通して、Linuxのブロックデバイス管理の第一歩を踏み出しました。blkidは地味なコマンドに見えるかもしれませんが、システムの安定稼働を支える縁の下の力持ちです。UUIDを正しく扱う知識は、クラウド環境や仮想化技術(DockerやKVMなど)を扱う際にも必ず役立ちます。
今後、シェルスクリプトを自作する機会があれば、ぜひ今回紹介したオプションを活用して、自動化の便利さを体感してみてください。コマンド一つひとつの意味を理解し、自分の手でシステムを制御する喜びを感じることが、エンジニアとしての成長に繋がります。