BLKID(8)

名前
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 ...

読者へのご注意
これは util-linux 版の blkid コマンドのマニュアルである。blkid は、以前は e2fsprogs パッケージの一部だったが、現在では util-linux パッケージにも属している。util-linux 版は e2fsprogs 版を元にしているとは言え、全く同じではない。

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

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

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

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

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

オプション
size や offset という引き数の後ろには、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
    low-level 精査モードのとき、パーティションテーブルから取得した情報 (PART_ENTRY_* というタグ) を表示しない。

-g, --garbage-collect
    もはや存在していないデバイスを除去するために、blkid キャッシュに対してガーベッジコレクション操作を行う。

-h, --help
    使用法を表示して終了する。

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

    [訳注]
        'export' フォーマットというのは、要するに NAME=value の対を 1 行に 1 個ずつ表示することである。以前の blkid では、-i オプションで確かに 1 行 1 トークンになったのだが、最近の blkid --info では、1 行 1 トークンにならないようだ。すなわち、--info (-i) で 'export' フォーマットは自動的に有効にならないらしい。

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

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

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

    [訳注]
        1 番目のパラグラフの「検索に udev を使用する場合 ...」という訳は、訳者による補足訳である。原文は、"but see below note about udev" としか言っていない。訳者としては、--label の説明や、「設定ファイル」セクションの EVALUATE=<methods> の説明と読み合わせて、これは「検索に udev を使用する、すなわち /dev/disk/by-* 以下のシムリンクを使用する場合については、以下の追加説明を見よ」と言っているのだと考える。 シムリンク (のみ) を使用する場合は、 検索条件に一致するデバイスは、当然ながらリンク先一つしかなく、udev のシムリンクを使用するアプリケーション間で同一なわけである。 ただし、こうした解釈は、訳者の推測に過ぎない。間違っているかもしれない。

        なお、当方のバージョン 2.35.2 では、--match-token に LABEL= を指定した場合、udev を使用させる、すなわち、同名の LABEL を持つデバイスが複数あったときに、/dev/disk/by-label 中のシムリンクの参照先を報告させるには、-l だけでなく -o device も必要だった。お手元でも確かめていただきたい。

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

    [訳注]
        「/dev/disk/by-label にある udev のシムリンクを信用して使用できるのは、/etc/blkid.conf の設定次第だ」というのは、SEND_UEVENT=<yes|not> の値次第ということだ。それが yes ならば、必要に応じて現状が反映されるので、udev のシムリンクが信用できることになる。「設定ファイル」セクションを参照していただきたい。

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

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

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

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

    [訳注]
        この場合なら、スーパーブロックの情報をいくつか追加表示する。 なお、このオプションの働きは、あくまでも low-level 精査の対象に指定すること (あるいは、そこから外すこと) であって、 他のタイプだからと言って、情報の取得・表示を全くしなくなるわけではない。 その点は、--usages も同様である。

      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=value を 1 行に 1 個ずつ出力する)。 キー (key) には、ID_FS か ID_PART という接頭辞が付く。値 (value) は、udev 環境で問題を起こさないように修正されることがある。 値に使用できるのは、プレーン ASCII と 16 進数エスケープ表記、それに有効な UTF-8 であり、それ以外はすべて (ホワイトスペースも含めて) '_' で置き換えられる。 なお、_ENC という接尾辞が付いたキーでは、問題を起こしかねない文字に対して 16 進数エスケープ表記を使用している。 udev 出力フォーマットでは、複数の矛盾するスーパーブロックが検出された場合には、 ID_FS_AMBIVALENT というタグが返される。また、ID_PART_ENTRY_* タグが、空のパーティションも含めて、すべてのパーティションに対して常に返される (訳注: もちろん、--probe を指定した場合のことである)。 この出力フォーマットは、非推奨である。

    export
        key=value の対を環境にインポートしやすいように表示する (訳注: key=value を 1 行に 1 個ずつ出力する)。 この出力フォーマットは、I/O リミットの情報が求められた場合には (すなわち、--info オプションが指定された場合は)、自動的に有効になる (訳注: 手元のバージョン 2.35 の blkid では、自動的に有効にならないようだ)。 非表示文字は、^ や 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 の項もご覧いただきたい。

    [訳注]
        この説明には、紛らわしいことが二つある。一つは、PTTYPE タグが表示されるのは、device にパーティションではなく、 /dev/sda のようなディスクを指定した場合であるということ (--probe オプションを指定する、しないは関係ない)。 /dev/sda1 のようなパーティションを指定した場合は、同じ情報が PART_ENTRY_SCHEME タグに表示される。

        もう一つは、--probe を指定しないでも、スーパーブロック中の情報のいくつかは表示されるということ。 --probe を指定すると、ファイルシステムに関して表示される情報が増えるのである。

-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
    精査機能 (訳注: --probe 参照) の使用を、コンマ区切りのリスト 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 オプションを参照していただきたい。

-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 を読んで、記載されているすべてのブロックデバイスをスキャンする。

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

環境変数

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

関連項目
libblkid(3), findfs(8), lsblk(8), wipefs(8)

入手方法
この blkid コマンドは、util-linux パッケージの一部であり、 https://www.kernel.org/pub/linux/utils/util-linux/ から入手できる。