lsblkコマンド

Linux
この記事は約4分で読めます。

システムに接続されている ブロックデバイス(ストレージデバイス) の構造を一覧表示するコマンドです。

ブロックデバイスとは、HDD・SSD・CD/DVDドライブ・USBメモリなどで、データを「ブロック」と呼ばれる固定サイズの単位で読み書きする物理ストレージデバイスのことです。

“lsblk” の名前は “lisblock devices” に由来します。

コマンドの実行

普通に “lsblk” でツリー構造で表示されます。

lsblk

オプション “-o”

表示する項目(列・カラム:後述)を指定して表示します。

-o

-o オプションの項目

列名意味
NAMEデバイス名(例:sda, sda1)
MAJ:MINメジャー・マイナーデバイス番号
RM取り外し可能か(1=USBなどリムーバブル)
SIZE容量
RO読み取り専用か(read only)
TYPEデバイス種別(disk, part, lvmなど)
MOUNTPOINTマウントされている場所
FSTYPEファイルシステムの種類(ext4, xfsなど)
UUIDファイルシステムのUUID
MODELデバイスモデル名(物理ドライブ)

オプション “-f”

ファイルシステムの情報 (FSTYPE, LABEL, UUID) を含める場合に使用

-f

その他のオプションまとめ

オプション意味
(なし)デバイス構造をツリー形式で表示
-a空デバイスも含めて全て表示
-fファイルシステム情報(FSTYPE, LABEL, UUID)を表示
-pデバイスのフルパス(/dev/sda1など)で表示
-o 項目,項目…表示カラムを指定(下記参照)
-nヘッダなしで出力
-rツリー構造を使わず、フラットに表示
-lリスト形式で表示
-tトポロジ情報(RAID, LVMなど)も含めて表示
-JJSON形式で出力(スクリプト処理に便利)
-P各項目を KEY=”VALUE” 形式で出力

デバイスの命名規則

ところで上記の例において、sdaで表されているデバイスも、mmcblkで表されているデバイスも、実体はどちらも同じmicroSDです。

つまりシステムは、接続の仕方(インターフェース)によってデバイス認識を区別していることになります。

下表はデバイスの命名規則についてです。

デバイスタイプ命名命名例階層構造備考
SATA / SCSI / SAS / USBsd/dev/sda, /dev/sdb1ディスク [a-z]→ パーティション[番号]最初のディスクが sda、次が sdb、sdc… と連番(検出順に命名)
NVMe SSDnvme/dev/nvme0n1, /dev/nvme0n1p1nvme[コントローラ番号]n[名前空間番号]p[パーティション番号]高速SSD用命名
MMC/SDカードmmcblk/dev/mmcblk0, /dev/mmcblk0p1mmcblk[デバイス番号]p[パーティション番号]m組込み用途多い
ループバックデバイスloop/dev/loop0, /dev/loop1ファイルを仮想ディスクとして扱う仮想デバイス
LVMボリューム(vg)/dev/mapper/vgname-lvnameVG名称 → LV名称
例:/dev/mapper/vg0-root(ボリュームグループ vg0 の LV root)
論理ボリューム
RAIDデバイス(mdadm)md/dev/md0, /dev/md1ソフトウェアRAIDデバイス
CD/DVD ドライブsr/dev/sr0, /dev/sr1SCSI CD-ROM デバイス
仮想ディスク(KVMなど)vd/dev/vda, /dev/vdbディスク[a-z] → パーティション[番号]VirtIO デバイス用。

デバイス命名規則補足

sda, sdb, などの命名はOSの認識順に命名されるため、その時によって順序が変わることがあります。恒久的な識別には “UUID ” や “LABEL” を使用します。

まとめ

“dd” の読み取り元としてのストレージ名の確認の為のコマンドとして知りました。

最初は独特の命名法に面食らってしまいました。

一方で昔どこかで見たことのある名前だなとも。SCSIとか懐かしい名前も。

最近はハードディスクを扱うこともなくなり、ストレージもクラウド化しているのでこの方面にはあまり知識が無かったのですが、色々進化していることが分かりました。

でもまあ全く使いませんけどもね。

help

ヘルプ一覧です

lsblk --help1
lsblk --help2

コメント

タイトルとURLをコピーしました