31.

lsblk コマンド完全ガイド — ブロックデバイスをツリー状で確認する

編集
この記事の要点
  • lsblk はブロックデバイス (HDD/SSD/USB/LVM/RAID) をツリー状で一覧表示するコマンド
  • 基本: lsblk → sda → sda1, sda2 のような階層が見える
  • ファイルシステム情報も欲しいなら lsblk -f (FSTYPE / UUID / LABEL)
  • カラム指定 lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT / JSON 出力 lsblk -J はスクリプト向け
  • fdisk -l はパーティション情報重視、lsblk はマウント・FS 含めた全体像把握向き

lsblk とは

lsblk (list block devices) は Linux のすべてのブロックデバイス (物理ディスク、パーティション、LVM 論理ボリューム、暗号化デバイス、loop デバイスなど) をツリー構造で一覧表示するコマンドです。/proc/partitions と sysfs からデバイス情報を取得しており、ディスク構成の全体像を最も素早く把握できます。

# 基本実行
lsblk
# NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
# sda      8:0    0   500G  0 disk
# ├─sda1   8:1    0   512M  0 part /boot/efi
# ├─sda2   8:2    0     1G  0 part /boot
# └─sda3   8:3    0 498.5G  0 part /
# sdb      8:16   0     2T  0 disk
# └─sdb1   8:17   0     2T  0 part /data
# sr0     11:0    1  1024M  0 rom

出力カラムの意味

カラム意味
NAMEデバイス名 (sda, sda1, nvme0n1, dm-0 など)
MAJ:MINメジャー番号 : マイナー番号
RMリムーバブル (1=USB等, 0=固定)
SIZE容量
RO読み取り専用 (1/0)
TYPEdisk / part / lvm / crypt / loop / rom
MOUNTPOINTSマウント先 (複数あり得る、util-linux 2.37+)

ファイルシステム情報も表示: -f

lsblk -f
# NAME    FSTYPE   LABEL  UUID                                 MOUNTPOINTS
# sda
# ├─sda1  vfat     EFI    1234-ABCD                            /boot/efi
# ├─sda2  ext4     boot   abc12345-def0-6789-abcd-1234567890ab /boot
# └─sda3  ext4     root   efgh5678-ijkl-9012-mnop-3456789012cd /
# sdb
# └─sdb1  xfs      data   ijkl9012-mnop-3456-qrst-7890123456ef /data

カラム指定: -o

# 必要なカラムだけ
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID

# 表示可能な全カラム一覧
lsblk --help | grep -A100 "Available columns"
# NAME, KNAME, PATH, MAJ:MIN, FSAVAIL, FSSIZE, FSTYPE, FSUSED, FSUSE%,
# FSROOTS, FSVER, MOUNTPOINT, MOUNTPOINTS, LABEL, UUID, PTUUID, PTTYPE,
# PARTTYPE, PARTLABEL, PARTUUID, RA, RO, RM, MODEL, SERIAL, VENDOR,
# REV, WWN, HCTL, TRAN, SUBSYSTEMS, SCHED, SIZE, STATE, TYPE ... など多数

# モデル名 + シリアルも (デバイス特定に便利)
lsblk -o NAME,SIZE,MODEL,SERIAL,TRAN
# NAME      SIZE MODEL                      SERIAL                 TRAN
# sda       500G Samsung SSD 870 EVO        S678NX0R501234A        sata
# nvme0n1   1T   WD_BLACK SN850             21042X800123           nvme

その他の便利オプション

オプション用途
-a空デバイスも含めて全件
-JJSON 出力 (jq / スクリプト向け)
-lツリーでなくフラットなリスト
-pフルパス表示 (/dev/sda1)
-nヘッダ非表示 (パイプ向け)
-dパーティションを表示せず親ディスクのみ
-iASCII で罫線 (古い端末向け)
-SSCSI デバイス情報
-Ddiscard (TRIM) サポート情報

JSON 出力でスクリプト処理

lsblk -J -o NAME,SIZE,FSTYPE,MOUNTPOINT

# 結果例
# {
#    "blockdevices": [
#       {"name": "sda", "size": "500G", "fstype": null, "mountpoint": null,
#        "children": [
#           {"name": "sda1", "size": "512M", "fstype": "vfat", "mountpoint": "/boot/efi"},
#           {"name": "sda3", "size": "498G", "fstype": "ext4", "mountpoint": "/"}
#        ]
#       }
#    ]
# }

# jq で / にマウントされているデバイスだけ
lsblk -J | jq -r '.blockdevices[] | .children[]? | select(.mountpoint=="/") | .name'

# ext4 パーティションだけ
lsblk -J -o NAME,FSTYPE | jq -r '.. | select(.fstype? == "ext4") | .name'

fdisk -l との比較

項目lsblkfdisk -l
権限不要 (一般ユーザ可)root が必要
表示ツリー / マウント / FSパーティションテーブル詳細
セクタ単位の情報なしStart/End セクタあり
LVM / RAID展開して表示物理ディスクのみ
主用途全体像の確認パーティション切り直し前の確認

UUID で永続的にマウント

デバイス名 /dev/sdb1 は USB を抜き差しすると /dev/sdc1 になり得るため、/etc/fstabUUID で書くのが定石です:

# UUID を取得
lsblk -f
# または
blkid /dev/sdb1
# /dev/sdb1: UUID="abc12345-def0-..." TYPE="ext4"

# /etc/fstab
# UUID=abc12345-def0-...   /data   ext4   defaults,noatime  0 2

# /dev/disk/by-uuid/ から確認
ls -la /dev/disk/by-uuid/
# abc12345-... -> ../../sdb1

Docker コンテナ内での lsblk

# 通常のコンテナでは見えない (デバイスがマウントされていない)
docker run --rm ubuntu lsblk
# → 空 or sda のみ

# --privileged で実行 (ホストのデバイスが見える)
docker run --rm --privileged ubuntu lsblk

# 特定のデバイスをマウント
docker run --rm --device=/dev/sda alpine lsblk

関連コマンド

  • df -h — マウント中の FS の使用率
  • du -sh dir — ディレクトリの容量
  • blkid — UUID / FSTYPE のみ表示
  • findmnt — マウント情報をツリーで
  • fdisk -l / parted -l — パーティションテーブル詳細
  • smartctl -a /dev/sda — SMART 情報
  • nvme list — NVMe 専用一覧

FAQ

Q: USB を挿しても lsblk に出ない
A: dmesg | tail でカーネルが検出しているか確認。検出後 partprobeudevadm trigger で再認識。

Q: dm-0, dm-1 と表示されるのは?
A: device-mapper の論理デバイス (LVM や crypt)。lsblk なら親に vg/lv 名が表示される。

Q: TYPE が loop のものは何?
A: snap パッケージや ISO マウントの仮想ブロックデバイス。--exclude 7 (loop の MAJOR) で除外できる。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ls ファイル/ディレクトリ一覧表示
  2. sudo ユーザー指定
  3. cron/crontab ジョブの自動実行と登録方法
  4. wget http通信によるファイルダウンロード
  5. rm ファイル/ディレクトリ削除
  6. pwd カレントディレクトリの表示
  7. cd ディレクトリの移動
  8. ./configure
  9. make
  10. make install
  11. unzip ファイルの解凍
  12. mv ファイル/ディレクトリの移動および名称変更
  13. mkdir ディレクトリの作成
  14. touch 空ファイルの新規作成
  15. vi テキストディタの使用
  16. find ファイル/ディレクトリ検索
  17. grep 文字列の検索
  18. tail ファイルの末尾表示
  19. curl HTTP通信によるリクエスト
  20. nslookup ドメインのIP解決
  21. apt update パッケージリストの情報を更新
  22. apt upgrade パッケージの更新
  23. ln リンク/ショートカットの作成と削除
  24. rsync ファイル/ディレクトリの同期
  25. ssh リモートとの暗号化通信
  26. scp sshを利用したファイルのコピー
  27. unzip zip ファイルを解凍する
  28. cp ファイル/ディレクトリのコピー
  29. diffファイルの差分抽出
  30. fdisk ハードディスクに対する操作
  31. lsblk デバイスをツリー状で表示する
  32. kill プロセスを終了させる
  33. zip ファイルやディレクトリをzip形式に圧縮する
  34. host ドメインからIPアドレスを確認
  35. chmod 権限の変更
  36. ip IPアドレスの確認
  37. chown ファイル/ディレクトリ所有者の変更
  38. chgrp ファイル/ディレクトリのグループ情報の変更
  39. nohupと'&' プログラムのバックグラウンド実行(ssh接続時)
  40. lsof 開いているポート番号の確認
  41. tar ファイルの圧縮と解凍
  42. file ファイルの種類を表示
  43. cat ファイルの中身を表示
  44. head ファイルの先頭部分を表示
  45. wc 行数/単語数/文字数を確認
  46. shutdown システムのシャットダウンと再起動
  47. ps プロセスの確認
  48. which コマンドの絶対パスを調べる
  49. yum RedHat系ディストリビューションの管理
  50. mount ファイルシステムのマウント
  51. 特定フォルダ以下の特定拡張子のファイルを再帰的に削除する方法
  52. 特定のフォルダとそのサブフォルダ内にある特定のファイル名のファイルを再帰的に削除