名前

blkid - ブロックデバイスの属性を検索/表示する

書式

blkid --label label | --uuid uuid

blkid [--no-encoding --garbage-collect --list-one --cache-file file] [--output format] [--match-tag tag] [--match-token NAME=value] [device...]

blkid --probe [--offset offset] [--output format] [--size size] [--match-tag tag] [--match-types list] [--usages list] [--no-part-details] device...

blkid --info [--output format] [--match-tag tag] device...

説明

blkid プログラムは、 libblkid(3) ライブラリを利用するためのコマンドラインインターフェースである。 blkid は、 ブロックデバイスの中身がどんなタイプか (たとえば、 ファイルシステムか、 スワップか) を判定することができる。 また、 ブロックデバイスの中身のメタデータ (たとえば、 LABEL や UUID といったフィールド) を調べて、 どんな属性 (トークン、 NAME=value ペア) を持っているかを特定することもできる。

ブロックデバイスについて情報を取得するには、 lsblk(8) の使用をお勧めする。 デバイス中のファイルシステム群の概要を知るには、 lsblk --fs が便利である。 すでにマウント済みのファイルシステムを調べるには、 findmnt(8) を使うとよい。

lsblk(8) の方が提供する情報も多いし、 出力形式の制御もしやすく、 スクリプト中でも使いやすい。 また、 現時点での情報を得るのに、 ルート権限を必要としない。 blkid の方は、 情報をデバイスから直接読み込むので、 ルート以外のユーザーに対しては、 キャッシュした情報、 すなわち、 最新であることの保証のない情報を返すことになる。 blkid の主な用途は、 システム管理で使用することと、 libblkid(3) の機能をテストすることなのである。

device を指定すると、 そのデバイスのトークンのみが表示される。 複数の device をコマンドラインで引数に指定してもよい。 device を一つも指定しない場合は、 /proc/partitions に記載されている、 すべてのパーティションやパーティション分割されていないデバイスのうち、 認識されたものが表示される。

blkid には、 主な仕事が二つある。 特定の NAME=value ペアを属性に持つデバイスを探し出すことと、 指定された一つ以上のデバイスについて NAME=value ペアを表示することである。

セキュリティ上の理由から、 blkid は、 検出結果に相反するものがあった場合には (複数の相矛盾するファイルシステムが検出された場合などは)、 警告も出さずに、 そうしたデバイスをすべて無視する。 そうした場合に low-level 精査モード (-p) を使用すると、 より多くの情報が得られるし、 終了ステータスも特別なものになる。 デバイスの詳しい全体像をつかんだり、 デバイスから古くなったもの (古いマジックストリング) を削除したりするには、 wipefs(8) を使用するとよい。

オプション

sizeoffset という引数の後ろには、 KiB (=1024), MiB (=1024*1024) のような乗数を表すサフィックスを続けることができる。 GiB, TiB, PiB, EiB, ZiB, YiB も同様である ("iB" をつけるのは任意であり、 たとえば、 "K" は "KiB" と同じ意味である)。 あるいは、 KB (=1000), MB (=1000*1000) といったサフィックスをつけてもよい。 GB, TB, PB, EB, ZB, YB も同様である。

-c, --cache-file cachefile

デフォルトのキャッシュファイルではなく、 cachefile から情報を読み込む (詳細は 設定ファイル のセクションを参照)。 キャッシュを白紙の状態にして、 コマンドを実行したいのなら (すなわち、 以前スキャンしたことがあっても、 現時点で使用できるとはかぎらないデバイスについて、 報告しないようにするには)、 cashefile/dev/null を指定する。

-d, --no-encoding

非表示文字をエンコードしない。 デフォルトで非表示文字は ^ や M- を使う表記法でエンコードされる。 なお、 --output udev の出力フォーマットでは、 別のエンコード方式を使っていて、 これを無効にすることはできない。

-D, --no-part-details

低レベル精査モードのとき、 パーティションテーブルから取得した情報 (PART_ENTRY_* タグ) を表示しない。

-g, --garbage-collect

blkid キャッシュに対してガベージコレクション処理を行ない、 すでに存在していないデバイスを削除する。

-H, --hint setting

精査ヒント (probing hint) を設定する。 このヒントは任意に選ぶものであり、 たとえば別の場所に対して精査機能を実現するものである。 現在サポートされているのは "session_offset=number" であり、 マルチセッション UDF においてセッションオフセットを設定する。

-i, --info

I/O リミット (I/O トポロジーとも言う) について情報を表示する。 'export' 出力フォーマットが自動的に有効になる。 このオプションは、 --probe オプションと合わせて使うことができる。

-k, --list-filesystems

フィルシステムと RAID について、 既知のタイプをすべて列挙して、 終了する。

-l, --list-one

--match-token オプションで指定した検索パラメーターに一致するデバイスを、 一つだけ見つけ出す。 検索パラメーターに一致するデバイスがいくつもあった場合は、 最も優先順位が高いデバイスを報告し、 同じ優先順位の中では、 最初に見つかったデバイスを報告する (ただし、 検索に udev を使用する場合もあるため、 これ以降を参照のこと)。 デバイスのタイプを優先順位の高い方から並べると、 Device Mapper, EVMS, LVM, MD の順になり、 最後に普通のブロックデバイスが来る。 このオプションが指定されていない場合、 blkid は、 検索パラメーターに一致したデバイスをすべて表示することになる。

このオプションを --match-token で LABEL や UUID のトークンを指定した場合に使うと、 強制的に blkid に udev を使用させることになる。 そのように、 検索に udev を使用させるのは、 システムが複数のデバイスに対して同名のタグを使用している場合に、 出力を他のユーティリティ (たとえば mount(8) など) と矛盾しないようにするためである。

-L, --label label

ファイルシステムのラベルに label を使用しているデバイスを見つけ出す。 これは、 --list-one --output device --match-token LABEL=label と同じことである。 ここで使われる検索メソッドでは、 /dev/disk/by-label にある udev のシムリンクを信用して使用することができる (ただし /etc/blkid.conf の設定次第)。 一般にこうしたシムリンクを不用意に使うのは避けた方がよい。 現状を確認せずに、 こうしたシンボリックリンクを使用するのは、 信用できないからである。 この --label オプションは、 システムが udev を使っているかいないかにかかわらず、 問題なく動作する。

困ったことに e2fsprogs 所収のオリジナルの blkid(8) は、 -L オプションを -o list の同義語として使っている。 スクリプトの使い回しが利くようにしたいのなら、 スクリプト中では -L オプションよりも -l -o device -t LABEL=label-o list を使った方がよい。

-n, --match-types list

精査機能の使用を、 カンマ区切りのリスト list で指定したスーパーブロックのタイプ (名前) に限定する。 リストの項目の前に "no" をつければ、 無視すべきタイプを指定することになる。 例を挙げよう。

blkid --probe --match-types vfat,ext3,ext4 /dev/sda1

上のコマンドは、 vfat, ext3, ext4 のファイルシステムに対して low-level 精査を行う。

blkid --probe --match-types nominix /dev/sda1

こちらは、 minix ファイルシステム以外の、 サポートされているすべてのファイルシステムに対して low-level 精査を行う。 なお、 この --match-types オプションが役に立つのは、 --probe と一緒に使ったときだけである。

-o, --output format

指定した出力フォーマットを使用する。 なお、 変数やデバイスの出力順は固定していない。 -s オプションも参照していただきたい。 パラメーター format には、 次のものが使用できる。

full

すべてのタグを表示する (デフォルト)

value

タグの値のみを表示する

list

デバイスの情報をユーザーに読みやすいフォーマットで表示する。 この出力フォーマットは low-level 精査 (--probe--info) では使用できない。

この出力フォーマットは 非推奨である。 lsblk コマンドの使用をお勧めする。

device

デバイス名しか表示しない。 この出力フォーマットは、 --label--uuid では、 常に有効になる。

udev

key=value ペアを udev 環境にインポートしやすいように表示する。 キー (key) には、 ID_FS か ID_PART というプレフィックスがつく。 値 (value) は、 udev 環境で問題を起こさないように修正されることがある。 値に使用できるのは、 プレーン ASCII と 16 進数エスケープ表記、 それに有効な UTF-8 であり、 それ以外はすべて (ホワイトスペースも含めて) '_' で置き換えられる。 なお、 _ENC というサフィックスがついたキーでは、 問題を起こしそうな文字に対して 16 進数エスケープ表記を使用している。

udev 出力フォーマットでは、 複数の矛盾するスーパーブロックが検出された場合には、 ID_FS_AMBIVALENT というタグが返される。 また、 ID_PART_ENTRY_* タグが、 空のパーティションも含めて、 すべてのパーティションに対して常に返される。

この出力フォーマットは、 非推奨である。

export

key=value ペアを環境にインポートしやすいように表示する。 この出力フォーマットは、 I/O リミットの情報が求められた場合には (すなわち、 --info オプションが指定された場合は)、 自動的に有効になる。

非表示文字は、 ^ や M- を使う表記法でエンコードされ、 問題を起こしそうな文字は、 すべてエスケープされる。

-O, --offset offset

指定された offset 位置を調べる (--probe と一緒に使ったときのみ効果がある)。 このオプションは、 --info とともに使うことができる。

-p, --probe

low-level なスーパーブロック精査モードに切り換える (キャッシュはバイパスする)。

なお、 low-level 精査では、 パーティションテーブルのタイプ (PTTYPE タグ) やパーティションに関する情報 (PART_ENTRY_* タグ) もやはり報告される。 low-level 精査によって生成されるタグ名は、 libblkid によって内的に使用される名前に基づいているので、 --probe をつけずに実行したときのタグ名と異なっていることもある (たとえば、 PART_ENTRY_UUID= と PARTUUID=)。 --no-part-details の項もご覧いただきたい。

-s, --match-tag tag

(指定された) 各デバイスについて、 tag に一致するタグのみを表示する。 --match-tag オプションは、 複数回指定することもできる。 タグの指定を全くしなかった場合は、 (指定された) すべてのデバイスについて、 すべてのトークンが表示される。 いかなるトークンも表示せず、 ただキャッシュを更新するだけなら、 --match-tag none を、 他のオプションをつけずに、 使用すればよい。

-S, --size size

デバイス/ファイルのサイズを変更する (--probe と一緒に使ったときのみ役に立つ)。

-t, --match-token NAME=value

名前が NAME で、 値が value のトークンを持つブロックデバイスを探して、 見つかったすべてのデバイスを表示する。 NAME によく使われるものには、 TYPE, LABEL, UUID がある。 コマンドラインでデバイスを一つも指定しないと、 すべてのブロックデバイスが検索される。 デバイスを指定した場合は、 そのデバイスのみが検索される。

-u, --usages list

精査機能の使用を、 カンマ区切りのリスト list で指定した用途 ("usage") のタイプに限定する。 サポートされている用途のタイプには、 filesystem, raid, crypto, other がある。 リストの項目の前に "no" をつければ、 無視すべき用途タイプを指定することになる。 以下に例を示す。

blkid --probe --usages filesystem,other /dev/sda1

上のコマンドは、 用途のタイプが filesystem や other (たとえば、 swap) のすべてに対して low-level 精査を行う。

blkid --probe --usages noraid /dev/sda1

こちらは、 RAID 以外の、 サポートされている用途タイプのすべてに対して low-level 精査を行う。 なお、 この --usages オプションが役に立つのは、 --probe と一緒に使ったときだけである。

-U, --uuid uuid

ファイルシステム UUID に uuid を使用しているデバイスを見つけ出す。 詳しいことは、 --label オプションを参照のこと。

-h, --help

ヘルプテキストを表示して終了する。

-V, --version

バージョンを表示して、 終了する。

終了ステータス

指定されたデバイス、 または (--match-token オプションで) 指定されたトークンによって作業の対象になったデバイスが見つかり、 しかもそのデバイスについて何らかの情報が収集できたときは、 終了ステータス 0 を返す。 なお、 オプション --match-tag は、 出力するタグの限定はするが、 終了ステータスには影響を及ぼさない。

指定されたトークンが見つからなかった場合、 指定されたデバイスが一つも見つからなかった場合、 それにデバイスの識別名やデバイスの内容について情報が全く収集できなかった場合は、 終了ステータス 2 を返す。

使用法の誤りなどに対しては、 終了ステータス 4 を返す。

low-level 精査モード (-p) で矛盾した検査結果が出たときは、 終了ステータス 8 を返す。

設定ファイル

標準の設定ファイルは /etc/blkid.conf であるが、 この位置は、 環境変数 BLKID_CONF によって変更することができる。 以下に挙げる設定項目は、 libblkid ライブラリを制御している。

SEND_UEVENT=<yes|not>

/dev/disk/by-{label,uuid,partuuid,partlabel}/ にあるシンボリックリンクが、 デバイスの LABEL, UUID, PARTUUID, PARTLABEL と一致していない場合に、 uevent を送出する。 デフォルトは "yes" である。

CACHE_FILE=<path>

キャッシュファイルの位置を標準から変更する。 この設定は、 環境変数 BLKID_FILE によって上書きすることができる。 デフォルトは、 普通 /run/blkid/blkid.tab であるが、 /run ディレクトのないシステムでは /etc/blkid.tab である。

EVALUATE=<methods>

LABEL や UUID からデバイスを特定するためのメソッド (LABEL and UUID evaluation method) を指定する。 現在のところ、 libblkid ライブラリは、 "udev" と "scan" という二つのメソッドをサポートしている。 一つ以上のメソッドを、 カンマで区切ったリスト形式で指定してもよい。 デフォルトは、 "udev,scan" である。 "udev" メソッドが、 /dev/disk/by-* にある udev のシンボリックリンクを使用するのに対して、 "scan" メソッドは、 ファイル /proc/partitions にあるブロックデバイスをすべてスキャンする。

環境変数

LIBBLKID_DEBUG=all と設定すると、 デバッグ出力が有効になる。

作者

blkid は libblkid のために Andreas Dilger によって書かれ、 Theodore Ts’o と Karel Zak によって改良された。

関連項目

libblkid(3), findfs(8), lsblk(8), wipefs(8)

バグ報告

バグ報告は、 以下に示す issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.

入手方法

blkid コマンドは、 util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.