lsblk コマンド:ディスク・パーティション構成と UUID の確認
lsblk コマンドは、サーバーに接続されたディスクとパーティション、マウント位置をツリー構造で出力し、ディスクのサイズやファイルシステムの種類、UUID までまとめて確認できるコマンドです。AlmaLinux 9 サーバーで lsblk を実行したところ、snap パッケージが作った loop デバイスがディスクより先に出力されたため、-e 7 で除外しました。続けて -f でルートパーティションの xfs ファイルシステムと UUID を確認しました。
下の出力にあるディスクのサイズと UUID は例の値です。
1️⃣ lsblk コマンドの基本出力の読み方
snap でプログラムをインストールしたサーバーで lsblk をオプションなしで実行すると、パッケージのバージョンごとにマウントされた loop デバイスがディスクより先に並んで出てくるため、loop デバイスのデバイス番号 7 を -e で指定して除外して確認します。
lsblk -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
├─nvme0n1p2 259:2 0 200M 0 part /boot/efi
├─nvme0n1p3 259:3 0 1G 0 part /boot
└─nvme0n1p4 259:4 0 78.8G 0 part /NAME 列の nvme0n1 がディスクです。その下に [├─] と [└─] でつながった nvme0n1p1 から nvme0n1p4 までが、このディスクを分けたパーティションです。建物の入口にあるフロア案内板で、建物名の下に各階に入っている店が書かれているのと同じです。
TYPE 列ではディスクが [disk]、パーティションが [part] と表示され、MOUNTPOINTS 列はそのパーティションがマウントされたフォルダーを示します。確認したサーバーでは、ルートパーティション nvme0n1p4 が / に、nvme0n1p3 が /boot にマウントされていました。1M の nvme0n1p1 は GPT ディスクで起動に使う BIOS ブートパーティションのため、マウント位置がありません。
MAJ:MIN はカーネルがデバイスに付けたメジャー番号とマイナー番号で、loop デバイスは 7、確認した NVMe ディスクは 259 でした。RM はリムーバブルデバイスかどうか、RO は読み取り専用かどうかを 1 と 0 で示します。
SIZE を空き容量と読み違えやすいですが、SIZE はディスクやパーティション全体のサイズです。ファイルシステムの空き容量は、-f を付けたときに出る FSAVAIL 列で確認します。
オプションによって出力される行と列がどう変わるかは、下の図で順番に比べられます。
2️⃣ lsblk -f でファイルシステムと UUID を確認
基本出力にはファイルシステムの種類が出ないため、パーティションをどの形式でフォーマットしたかは -f で確認します。-f は NAME、FSTYPE、FSVER、LABEL、UUID、FSAVAIL、FSUSE%、MOUNTPOINTS の 8 列を出力します。
lsblk -f -e 7NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat FAT16 5A1E-3B7C 192.1M 4% /boot/efi
├─nvme0n1p3 xfs 6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28 691.4M 28% /boot
└─nvme0n1p4 xfs 2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13 68.5G 13% /実行してみると、ルートと /boot のパーティションは xfs、/boot/efi は FAT16 版の vfat でした。ディスク nvme0n1 と nvme0n1p1 にはファイルシステムがないため、空欄のままでした。UUID はファイルシステムごとに付く固有の番号で、/etc/fstab でデバイス名の代わりに UUID でマウントするパーティションを指定するときに使います。
ファイルシステムの情報を最も正確に確認するときは blkid コマンドを使います。
FSAVAIL と FSUSE% は、マウントされたファイルシステムの空き容量と使用率です。マウントされていないパーティションには値が出ません。 dfコマンドは、マウントされたファイルシステムのサイズと使用量だけを出力します。lsblk はマウントの有無に関係なく、ディスクとパーティションの構成まで一緒に出力します。
3️⃣ lsblk -o で列を選ぶ・-b でバイト単位
-o の後ろに列名をカンマでつないで書くと、その列だけが順番に出ます。使える列名は [lsblk --help] の最後にある一覧で確認できます。
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7NAME SIZE FSTYPE MOUNTPOINT
nvme0n1 80G
├─nvme0n1p1 1M
├─nvme0n1p2 200M vfat /boot/efi
├─nvme0n1p3 1G xfs /boot
└─nvme0n1p4 78.8G xfs /MOUNTPOINT はマウント位置を 1 つだけ、MOUNTPOINTS は同じファイルシステムが複数の場所にマウントされているときにすべてを出力します。基本の列の後ろに 1 つだけ足すには、[-o +UUID] のように列名の前に + を付けます。
-b はサイズをバイト単位の整数で出力します。目で比べるときは基本の単位のほうが読みやすいため、-b はサイズを計算したり比べたりするスクリプトに向いています。
lsblk -b -o NAME,SIZE -e 7NAME SIZE
nvme0n1 85899345920
├─nvme0n1p1 1048576
├─nvme0n1p2 209715200
├─nvme0n1p3 1073741824
└─nvme0n1p4 84613774848基本出力の G と M は 1,024 単位のため、80G のディスクは 85,899,345,920 バイトと表示されます。
4️⃣ lsblk -d でディスク一覧・-p でフルパス
ディスクが複数あるサーバーではパーティションの行が混ざってディスクの一覧が見にくいため、-d でパーティションを除いてディスクの行だけを出力します。
lsblk -d -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk 出力にはディスク nvme0n1 の 1 行だけが残り、その下のパーティション 4 行は出ませんでした。
-p を付けるとデバイス名の前に /dev/ が付き、フルパスで表示されます。このパスは mount などの別のコマンドにそのまま渡せます。
lsblk -p -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1 259:0 0 80G 0 disk
├─/dev/nvme0n1p1 259:1 0 1M 0 part
├─/dev/nvme0n1p2 259:2 0 200M 0 part /boot/efi
├─/dev/nvme0n1p3 259:3 0 1G 0 part /boot
└─/dev/nvme0n1p4 259:4 0 78.8G 0 part /NAME 列だけが /dev/nvme0n1 から /dev/nvme0n1p4 までフルパスに変わり、残りの列は基本出力と同じです。
デバイスのパスを引数に渡すとそのデバイスとその下のパーティションだけを出力し、パーティションのパスを渡すとそのパーティションの 1 行だけが出ます。
lsblk /dev/nvme0n1p4NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4 0 78.8G 0 part /出力には nvme0n1p4 の 1 行だけが出て、ディスクの行や枝の記号は付きません。存在しないデバイスのパスを渡してみると [not a block device] エラーが出て、終了コードは 32 でした。
5️⃣ lsblk コマンドのスクリプト向け出力とオプション
基本出力をスクリプトで切り出して使いたくなりますが、基本出力と -f の列構成は今後変わる可能性があるため、スクリプトでは -o で列を直接指定します。
-n はヘッダー行を除いて値だけを出力するため、1 つのパーティションのファイルシステムの種類のように、値が 1 つだけ必要なときに向いています。
lsblk -no FSTYPE /dev/nvme0n1p4xfsヘッダー行なしで、ルートパーティションのファイルシステムの種類である xfs の 1 語だけが出るため、そのままシェル変数に入れられます。
-P は列ごとに [名前=”値”] の形で 1 行に出力します。AlmaLinux 9 の util-linux 2.37 では、-P だけを付けてもシェル変数として読みやすいように、MAJ:MIN は MAJ_MIN、FSUSE% は FSUSE_PCT のように名前が変わります。
lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"指定した 3 つの列が NAME、FSTYPE、MOUNTPOINT の順に 1 行で出ます。値はすべてダブルクォートの中に入っています。
-J は JSON で出力します。-d なしで出力すると、パーティションはディスクの下の children 配列に入ります。-b と一緒に使うと size だけが数値に変わり、FSAVAIL などのほかのサイズ列は文字列のままです。
lsblk -J -d -o NAME,SIZE,TYPE -e 7{
"blockdevices": [
{
"name": "nvme0n1",
"size": "80G",
"type": "disk"
}
]
}-d を付けると blockdevices 配列にはディスク 1 つだけが入り、children 配列は出ません。
🔲 lsblk コマンドのオプション
| オプション | コピー | 説明 |
|---|---|---|
| -e, --exclude | 指定したメジャー番号のデバイスを除外します。7 を指定すると loop デバイスが除かれます。 | |
| -f, --fs | ファイルシステムの種類と UUID、空き容量、使用率を出力します。 | |
| -o, --output | カンマで指定した列だけを順番に出力します。 | |
| -b, --bytes | SIZE 列をバイト単位の整数で出力します。 | |
| -d, --nodeps | パーティションの行を除き、ディスクの行だけを出力します。 | |
| -p, --paths | デバイス名を /dev/ で始まるフルパスで出力します。 | |
| -n, --noheadings | ヘッダー行を除き、値だけを出力します。 | |
| -P, --pairs | 列名と値を 1 組ずつまとめて 1 行に出力します。 | |
| -J, --json | JSON 形式で出力します。 | |
| -a, --all | サイズが 0 の空のデバイスまで出力します。 |
| オプション | コピー | 説明 |
|---|---|---|
| -I, --include | 指定したメジャー番号のデバイスだけを出力します。 | |
| -l, --list | ツリーの代わりにリスト形式で出力します。 | |
| -r, --raw | 列の間隔をそろえない raw 形式で出力します。 | |
| -i, --ascii | ツリーの線を ASCII 文字で出力します。 | |
| -s, --inverse | 依存関係を逆にして、パーティションの下にディスクを出力します。 | |
| -S, --scsi | SCSI デバイスの情報だけを出力します。 | |
| -t, --topology | セクターサイズや I/O スケジューラーなどのトポロジー情報を出力します。 | |
| -m, --perms | デバイスの所有者とグループ、権限を出力します。 | |
| -x, --sort | 指定した列を基準に並べ替えて、リスト形式で出力します。 | |
| -O, --output-all | 使えるすべての列を出力します。 |
🔲 lsblk コマンドシミュレーター
下のシミュレーターで、ここまでのコマンドを実際に入力し、オプションごとに出力がどう変わるかを確認できます。
🔢 FAQ & おすすめコンテンツ
ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。