ブロックデバイスの属性表示~blkidコマンド・lsblkコマンド~
本記事の対象者
LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。
今回の内容
今回は、blkidコマンドとlsblkコマンドについて解説します。
両方ともブロックデバイスに関するコマンドです。
ブロックデバイスが何か分からない方は「デバイスファイルについて」の記事を先にお読みください。
UUIDとラベル
blkidコマンドは、パーティションのUUIDやラベルを確認することができます。
まず、「UUID」「ラベル」とは何かを先に説明します。
UUID、ラベルとは何か
- UUID
個々のパーティションを識別する128bitの固有番号です。ここでの「固有」とは「世界中でただひとつ」の意味です。
システムハードウェア情報とタイムスタンプをもとに、ランダムに生成されます。
- ラベル
パーティションにつけることができる「名前」です。
「e2label」コマンドで好きに設定することができます。
どこで何のために使われているのか
[root@localhost ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=ca954bfe-e7ce-438d-bb79-cd13b768f028 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/sdb1 /mnt ext3 defaults 1 2
UUIDの用途としては、「/etc/fstab」内の記述に使用するというものがあります。
「/etc/fstab」の一番左の列に通常パーティション名(デバイスファイル名)を記述します。
最終行を見ると「/dev/sdb1」のように記述されているのが分かります。
しかし、この記述方法には欠点があります。
ポイントは「デバイスファイル名は可変である」ということです。
デバイスファイル名はOSに認識される順番次第で変動する可能性があります。
よって、予期せぬ名称変更が発生し、設定内容がうまく反映されなくなってしまう可能性があるのです。
それに対して、最上行の「UUID」による記述方法だとどうでしょうか。
UUIDは識別固有番号であり不変です。よって、デバイスファイル名で記述したときのような不整合は起きないのです。
[root@localhost ~]# e2label /dev/sdb1 /sample [root@localhost ~]# vi /etc/fstab [root@localhost ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=ca954bfe-e7ce-438d-bb79-cd13b768f028 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 LABEL=/sample /mnt ext3 defaults 1 2
ラベルの用途も基本的に同じです。
「/dev/sdb1」に「/sample」という名前をつけ、「/etc/fstab」内の記述をこのラベル名を使用した形に変更しました。
この方法でもデバイスファイル名で記述したときのような不具合を回避することが出来ます。
blkidコマンド
blkidコマンドは、ブロックデバイスの属性を表示するコマンドです。
「/etc/fstab」内の記述をUUIDやLABELを用いて行った場合、元のデバイスファイル名が不明になります。
blkidコマンドを使用することで、デバイスファイルとUUIDやLABELの対応を調べることができます。
blkid | |
---|---|
意味 | ブロックデバイスの属性を表示する。 |
書式 | blkid [オプション] [デバイスファイル名] |
blkidコマンドの主なオプションは以下です。
オプション | 説明 |
---|---|
-s <タグ名> | 指定したタグの情報のみ表示する。 例:UUID、LABEL、TYPE |
-t <タグ名=値> | 値の条件に一致するブロックデバイスの属性を表示する。 |
-l | 「-t」の値にマッチするデバイスファイルが見つかった時点で検索を終了する。 |
[root@localhost ~]# blkid /dev/sda1: UUID="ca954bfe-e7ce-438d-bb79-cd13b768f028" TYPE="xfs" /dev/sda2: UUID="Na2Soy-k6hJ-zcTa-2NAx-FYqM-WWOh-MrXR37" TYPE="LVM2_member" /dev/sdb1: LABEL="/sample" UUID="e9a28c74-13b0-41f6-b2e2-adf9779ce58d" TYPE="ext3" /dev/mapper/centos-root: UUID="0d4d8f6e-6a23-40eb-8af9-57f0faf6449d" TYPE="xfs" /dev/mapper/centos-swap: UUID="0d8b226a-60f5-43e6-bdcc-f009091b2551" TYPE="swap"
引数なしで実行すると、利用可能なすべてのブロックデバイスの属性を表示することが出来ます。
デバイスファイルに紐づくUUIDやLABELを確認することが出来ます。
[root@localhost ~]# blkid -s UUID /dev/sda1: UUID="ca954bfe-e7ce-438d-bb79-cd13b768f028" /dev/sda2: UUID="Na2Soy-k6hJ-zcTa-2NAx-FYqM-WWOh-MrXR37" /dev/sdb1: UUID="e9a28c74-13b0-41f6-b2e2-adf9779ce58d" /dev/mapper/centos-root: UUID="0d4d8f6e-6a23-40eb-8af9-57f0faf6449d" /dev/mapper/centos-swap: UUID="0d8b226a-60f5-43e6-bdcc-f009091b2551"
「-s UUID」と指定すると、UUIDの情報のみを表示できます。
「LABEL」「TYPE」などの指定も可能です。
[root@localhost ~]# blkid -t TYPE="xfs" /dev/sda1: UUID="ca954bfe-e7ce-438d-bb79-cd13b768f028" TYPE="xfs" /dev/mapper/centos-root: UUID="0d4d8f6e-6a23-40eb-8af9-57f0faf6449d" TYPE="xfs"
「-t」オプションでタグと値を指定すると、その条件に合致するもののみ表示されます。
[root@localhost ~]# blkid -lt TYPE="xfs" /dev/mapper/centos-root: UUID="0d4d8f6e-6a23-40eb-8af9-57f0faf6449d" TYPE="xfs"
「-l」オプションを併用すると、最初に条件に合致したもののみが表示されます。
[root@localhost ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="/sample" UUID="e9a28c74-13b0-41f6-b2e2-adf9779ce58d" TYPE="ext3" [root@localhost ~]# blkid -s LABEL /dev/sdb1 /dev/sdb1: LABEL="/sample"
デバイスファイル名を引数にとることも可能です。
lsblkコマンド
lsblkコマンドは、ブロックデバイスの情報をツリー形式で一覧表示するコマンドです。
blkidコマンドでは取得できない情報も見ることができます。
blkidコマンドよりは、dfコマンドなどに近いと言えます。
tne2fs | |
---|---|
意味 | ブロックデバイスの情報をツリー形式で一覧表示する。 |
書式 | lsblk [オプション] [デバイスファイル名] |
lsblkコマンドの主なオプションは以下です。
オプション | 説明 |
---|---|
-a(–all) | 空のデバイスファイルも表示する。 |
-d(–nodeps) | 指定したデバイスの情報のみ表示する。 |
-e(–exclude) | 指定したメジャー番号を持つデバイス情報を除外する。 |
-I(–include) | 指定したメジャー番号を持つデバイス情報のみ表示する。。 |
-f(-fs) | ファイルシステムの情報を表示する。 |
-m(–perms) | デバイスの所有者、グループ、権限を表示する。 |
-l(–list) | リスト形式で表示する。 |
-o(–output) | 指定した列のみ表示する。 |
-P(–pairs) | 「キー=値」の形式で表示する。 |
-p(–paths) | デバイスのパスも表示する。 |
-r(–raw) | 値をフォーマットせずに表示する。 |
-t(–topology) | トポロジ情報を表示する。 |
階層構造関係なく、指定したデバイスの情報のみが表示されています。
UUIDやLABELの情報が見えます。
まとめ
今回は、blkidコマンドとlsblkコマンドについて解説しました。
ブロックデバイスの情報を調べたい時に使用してください。
最後に、確認問題で今回の記事で得た知識を確かめましょう。
確認問題
「/dev/sda1」に設定されたUUIDとLABEL名を取得するにはどのようなコマンドが必要か。(2つ選択)
A) blkid /dev/sda1
B) blkid -s UUID /dev/sda1
C) lsblk /dev/sda1
D) lsblk -t UUID,LABEL /dev/sda1
E) lsblk -f /dev/sda1