Linux 存储相关工具总表
分类原则
工具按"它实际作用在哪一层"分类,而不是按软件包名分类。比如 smartctl 能看 SATA/SAS/NVMe SMART,但底层可能走 ATA pass-through、SCSI SG_IO 或 NVMe ioctl;lsblk 只是读 sysfs/udev,并不直接发硬件命令。
| 层级 | 主要接口 | 典型设备节点 |
|---|---|---|
| 发现与枚举 | sysfs, udev, procfs | /sys/block, /dev/disk/by-*, /proc/partitions |
| 分区/签名 | block ioctl, libblkid, libfdisk | /dev/sdX, /dev/nvme0n1, /dev/mmcblk0 |
| 文件系统 | VFS, FS ioctl, mkfs/fsck 工具 | 分区或逻辑卷 |
| 块设备控制 | block ioctl, sysfs queue | /sys/block/<dev>/queue, block device |
| 协议管理 | NVMe ioctl, SCSI SG_IO, MMC ioctl, UFS BSG | /dev/nvme0, /dev/sgX, /dev/mmcblk0, /dev/ufs-bsg |
| 裸闪存 | MTD ioctl, UBI ioctl | /dev/mtdX, /dev/ubiX, /dev/ubiX_Y |
| 叠加与虚拟化 | dm ioctl, md ioctl, loop/nbd/zram | /dev/mapper/*, /dev/md*, /dev/loop* |
| 性能与追踪 | procfs, sysfs, tracefs, perf_event, eBPF | /proc/diskstats, tracepoints |
1. 发现、枚举、拓扑
| 工具 | 常用命令 | 能看到什么 | 内核/驱动关系 |
|---|---|---|---|
lsblk |
lsblk -o NAME,KNAME,TYPE,TRAN,MODEL,SERIAL,WWN,SIZE,ROTA,SCHED,MOUNTPOINTS |
块设备树、传输类型、拓扑、discard、zoned 信息 | 主要读 sysfs 与 udev;--nvme、--scsi 是按 sysfs 属性过滤 |
blkid |
blkid /dev/sda1 |
文件系统、RAID、分区表签名、UUID/LABEL | libblkid 直接探测设备头尾签名 |
findmnt |
findmnt -R / |
挂载树、挂载源、选项 | 读 /proc/self/mountinfo |
udevadm |
udevadm info --query=all --name=/dev/sda |
udev 属性、ID_SERIAL、ID_PATH | 反映内核 uevent 与 udev 规则加工结果 |
lsscsi |
lsscsi -g -t -s |
SCSI/SAS/SATA/USB/UFS 设备、host🚌target:lun、sg 节点 | 读 SCSI sysfs,能把 /dev/sdX 和 /dev/sgX 对起来 |
lspci |
lspci -nnk -d ::0108 |
NVMe/AHCI/SAS/HBA 控制器和绑定驱动 | PCI class 0108 通常是 NVMe,0106 是 SATA AHCI,0107 是 SAS |
lsusb |
lsusb -t |
USB Mass Storage/UAS 拓扑 | USB storage 走 usb-storage 或 uas,上层通常进入 SCSI sd |
dmesg/journalctl -k |
`dmesg -T | grep -Ei "nvme | mmc |
2. 分区表、签名、挂载
| 工具 | 用途 | 关键命令 | 入口/影响 |
|---|---|---|---|
fdisk, cfdisk |
交互式 MBR/GPT 分区 | fdisk -l /dev/sda |
读写分区表扇区,触发内核重新读取分区 |
sfdisk |
脚本化分区 | sfdisk --dump /dev/sda |
自动化部署常用 |
parted |
GPT/MBR 分区与对齐 | parted -s /dev/sda unit s print |
libparted |
gdisk, sgdisk |
GPT 专用 | sgdisk -p /dev/nvme0n1 |
GPT 修复、备份、克隆很好用 |
partx |
告诉内核增删分区映射 | partx -u /dev/sda |
BLKPG ioctl |
partprobe |
请求内核重读分区表 | partprobe /dev/sda |
常由 parted 包提供 |
kpartx |
为映像或 multipath 设备创建设备映射 | kpartx -av image.raw |
device-mapper 线性映射 |
wipefs |
查看/擦除签名 | wipefs -n /dev/sda |
只处理签名,不等于安全擦盘 |
mount, umount |
挂载/卸载 | mount -o noatime /dev/mapper/vg-lv /mnt |
VFS mount API |
fsfreeze |
冻结文件系统写入 | fsfreeze -f /mnt |
快照前一致性控制 |
3. 文件系统工具
| 文件系统 | 创建 | 检查/修复 | 查询/调优 | 扩容/缩容 |
|---|---|---|---|---|
| ext2/3/4 | mkfs.ext4 |
e2fsck |
tune2fs, dumpe2fs, debugfs, filefrag, e4defrag |
resize2fs |
| XFS | mkfs.xfs |
xfs_repair |
xfs_info, xfs_admin, xfs_db, xfs_io, xfs_scrub |
xfs_growfs |
| btrfs | mkfs.btrfs |
btrfs check, btrfs scrub |
btrfs filesystem show, btrfs inspect-internal |
btrfs filesystem resize |
| F2FS | mkfs.f2fs |
fsck.f2fs |
dump.f2fs, sload.f2fs, f2fs_io |
resize.f2fs |
| exFAT | mkfs.exfat |
fsck.exfat |
tune.exfat, dump.exfat |
依工具版本 |
| FAT | mkfs.vfat |
fsck.vfat |
fatlabel |
一般重建更常见 |
| UBIFS | mkfs.ubifs |
fsck.ubifs |
ubinfo, ubihealthd |
通过 UBI volume 调整 |
| JFFS2 | mkfs.jffs2 |
挂载时扫描修复为主 | sumtool |
不适合在线 resize |
| swap | mkswap |
swaplabel |
swapon --show |
重建或调整后 mkswap |
4. 通用块设备控制
| 工具 | 关键命令 | 作用 | 内核接口 |
|---|---|---|---|
blockdev |
blockdev --getsz --getss --getpbsz --getiomin --getioopt /dev/sda |
查询块大小、扇区数、只读状态、readahead | block ioctl |
blkdiscard |
blkdiscard -v /dev/nvme0n1p3 |
对全设备或范围发 discard/TRIM/UNMAP | REQ_OP_DISCARD |
blkzone |
blkzone report /dev/nvme0n1 |
Zoned block device 查询/重置 zone | zone block ioctl |
fstrim |
fstrim -av |
文件系统按空闲范围发 discard | FS -> block discard |
hdparm |
hdparm -I /dev/sda, hdparm -tT /dev/sda |
ATA IDENTIFY、缓存、安全擦除、简单测速 | ATA ioctl 或 SG_IO pass-through |
sdparm |
sdparm --all /dev/sda |
SCSI mode page/VPD 参数 | SCSI SG_IO |
sg3_utils |
sg_inq, sg_readcap, sg_vpd, sg_logs, sg_format, sg_sanitize, sg_unmap |
SCSI/SAS/UFS/SATA-SAT 管理 | /dev/sgX 或 block 设备上的 SG_IO |
5. NVMe SSD 工具
| 工具 | 子命令 | 作用 | 驱动路径 |
|---|---|---|---|
nvme-cli |
nvme list, nvme id-ctrl, nvme id-ns, nvme smart-log, nvme error-log |
发现、识别、健康与错误日志 | /dev/nvmeX 字符设备上的 NVMe ioctl,或 namespace block 设备 |
nvme-cli |
fw-log, fw-download, fw-commit |
固件信息与升级 | Admin command |
nvme-cli |
format, sanitize, self-test, reset, subsystem-reset |
低级维护、擦除、复位 | Admin command,风险高 |
nvme-cli |
discover, connect, disconnect, list-subsys |
NVMe over Fabrics | nvme-fabrics, nvme-tcp, nvme-rdma, nvme-fc |
nvme-cli |
zns report-zones, zns reset-zone |
Zoned Namespace | NVMe ZNS command set |
smartctl |
smartctl -a /dev/nvme0 |
通用 SMART/健康视图 | smartmontools 调 NVMe log page |
nvme-stas |
stafctl, stacd |
NVMe-oF 自动发现/连接 | 用户态守护进程配合 kernel NVMe-oF |
6. eMMC/MMC/SD 工具
| 工具 | 子命令/路径 | 作用 | 驱动路径 |
|---|---|---|---|
mmc-utils |
mmc extcsd read /dev/mmcblk0 |
解析 eMMC EXT_CSD,寿命、预 EOL、cache、BKOPS、分区配置 | MMC_IOC_CMD -> mmc core -> host controller |
mmc-utils |
mmc cid read, mmc csd read, mmc scr read |
读 CID/CSD/SCR 寄存器 | MMC/SD 命令 |
mmc-utils |
mmc bootpart enable, bootbus set |
eMMC boot0/boot1 启动配置 | 修改 EXT_CSD |
mmc-utils |
mmc writeprotect, hwreset, sanitize, cache enable/disable, bkops enable |
写保护、硬复位、擦除、缓存、后台操作 | eMMC 管理命令 |
mmc-utils |
mmc rpmb read-counter/read-block/write-block |
RPMB 安全分区 | /dev/mmcblk0rpmb 与认证 key |
| sysfs | /sys/class/mmc_host/mmc*/mmc*/ |
读厂商、名称、CID、CSD、date、preferred_erase_size | mmc core 暴露属性 |
| block 节点 | /dev/mmcblk0, /dev/mmcblk0boot0, /dev/mmcblk0boot1 |
user/boot 分区 | mmc_block |
| RPMB 节点 | /dev/mmcblk0rpmb |
RPMB 认证读写,不是普通 block I/O | mmc_block RPMB 路径 |
7. UFS 工具
| 工具 | 子命令/路径 | 作用 | 驱动路径 |
|---|---|---|---|
ufs-utils |
ufs-utils desc, attr, fl, uic, ffu, rpmb |
读写 UFS 描述符、属性、flag、UniPro、固件更新、RPMB | /dev/ufs-bsg -> BSG -> ufshcd |
sg3_utils |
sg_inq, sg_readcap, sg_logs, sg_vpd |
UFS 作为 SCSI LUN 的通用查询 | UFSHCD 注册 SCSI host,上层走 sd/sg |
lsscsi |
lsscsi -g |
找 /dev/sdX 与 /dev/sgX |
SCSI sysfs |
| sysfs/debugfs | /sys/bus/platform/drivers/ufshcd*, /sys/class/scsi_device/* |
host、LUN、电源、错误信息 | 依 SoC UFS host driver |
8. SATA/SAS/SCSI/USB 存储工具
| 工具 | 作用 | 典型场景 | 驱动路径 |
|---|---|---|---|
smartctl, smartd |
SMART 查询与监控 | HDD/SSD 预故障、温度、重映射、NVMe 健康 | ATA/SCSI/NVMe pass-through |
hdparm |
ATA 参数、IDENTIFY、安全擦除、缓存 | SATA SSD/HDD | libata + SAT/ATA ioctl |
sdparm |
SCSI mode page | SAS、企业盘、UFS、USB 桥 | SCSI SG_IO |
sg3_utils |
标准 SCSI 命令 | 查询 VPD、容量、日志、format、sanitize、UNMAP | SCSI midlayer |
lsscsi |
SCSI 设备枚举 | 识别 H:C:T:L 与 sg 设备 | SCSI sysfs |
scsi_id |
生成 WWID | multipath/udev 规则 | VPD page 0x83 |
rescan-scsi-bus.sh |
重扫 SCSI 总线 | SAN/LUN 热添加 | 写 SCSI sysfs scan |
usb-devices, lsusb -t |
USB 存储拓扑 | 判断 uas 或 usb-storage |
USB core -> SCSI |
9. Raw Flash, MTD, UBI, UBIFS
| 工具 | 用途 | 设备 | 注意 |
|---|---|---|---|
mtdinfo |
查看 MTD 类型、擦除块、大小、OOB | /dev/mtdX |
raw NAND/NOR |
flash_erase, flash_eraseall |
擦除 MTD eraseblock | /dev/mtdX |
NAND 必须按 eraseblock 擦 |
nanddump |
dump NAND 含/不含 OOB | /dev/mtdX |
备份坏块信息时很关键 |
nandwrite |
写 NAND 镜像 | /dev/mtdX |
注意 OOB/ECC/坏块处理 |
nandtest |
NAND 测试 | /dev/mtdX |
破坏性操作 |
flashcp |
写 NOR/MTD | /dev/mtdX |
常用于 NOR |
ubiformat |
格式化 UBI | /dev/mtdX |
保留/处理坏块信息 |
ubiattach, ubidetach |
挂接/分离 UBI device | /dev/ubi_ctrl, /dev/mtdX |
创建 /dev/ubiX |
ubimkvol, ubirmvol, ubirsvol, ubirename |
UBI volume 管理 | /dev/ubiX |
UBIFS 的下层 |
ubinfo |
UBI/volume 信息 | /dev/ubiX |
wear leveling、erase counter |
ubiblock |
把 UBI volume 暴露为只读块设备 | /dev/ubiX_Y |
适合 squashfs 等只读镜像 |
mkfs.ubifs, mount -t ubifs |
创建/挂载 UBIFS | UBI volume | 不能直接建在 /dev/mtdX 上 |
10. LVM, Device Mapper, 加密, RAID, 多路径
| 类别 | 工具 | 作用 | 内核层 |
|---|---|---|---|
| LVM2 | pvcreate, pvs, vgcreate, vgs, lvcreate, lvs, lvextend, lvreduce, lvconvert |
PV/VG/LV 管理、thin、snapshot、cache、mirror | device-mapper |
| dm 通用 | dmsetup ls/info/table/status/message |
直接查看/创建 dm target | /dev/mapper/control ioctl |
| 加密 | cryptsetup, integritysetup, veritysetup |
LUKS/dm-crypt、dm-integrity、dm-verity | dm targets |
| RAID | mdadm |
Linux software RAID create/assemble/grow/monitor | md driver |
| multipath | multipath, multipathd, mpathconf, kpartx |
SAN/SAS 多路径聚合和故障切换 | dm-multipath |
| 固件 RAID | dmraid, mdadm --examine |
Intel RST/DDF 等外部 metadata | dm/md 与 metadata handler |
| cache | bcache-tools, lvmcache, dmsetup |
SSD cache、writeback/writethrough | bcache 或 dm-cache |
11. 虚拟、网络、内存块设备
| 工具 | 作用 | 内核路径 |
|---|---|---|
losetup |
文件映射成块设备 | loop driver |
qemu-img, qemu-nbd, nbd-client |
镜像转换、NBD 暴露/连接 | nbd driver |
zramctl |
压缩内存块设备 | zram |
brd/ramdisk |
内存块设备 | brd/ramdisk |
iscsiadm |
iSCSI initiator 登录/发现 | open-iscsi + SCSI |
targetcli |
Linux LIO target 配置 | configfs target core |
nvmetcli |
NVMe target 配置 | configfs nvmet |
rbd |
Ceph RBD 映射 | krbd 或 librbd |
drbdadm, drbdsetup |
网络复制块设备 | DRBD |
12. 性能、压测、追踪
| 工具 | 用途 | 看到哪层 |
|---|---|---|
fio |
可控 I/O 压测,支持 sync/libaio/io_uring/SPDK | 应用到块层 |
dd |
简单吞吐测试/镜像复制 | 应用层,容易被 cache 影响 |
iostat |
IOPS、吞吐、await、util | /proc/diskstats |
sar -d, pidstat -d |
历史采样、进程 I/O | sysstat |
iotop, atop |
进程级 I/O | taskstats/proc |
blktrace, blkparse, btt |
block request 生命周期 | block tracepoints |
bpftrace/BCC |
biolatency, biosnoop, biotop, fileslower, ext4slower, xfsslower |
eBPF hook 到 block/fs |
perf |
CPU、锁、块层函数热点 | perf_event |
trace-cmd, kernelshark |
ftrace 事件采集与可视化 | tracefs |
strace |
看应用 syscall | VFS 入口 |
13. 厂商工具
| 工具 | 常见硬件 | 作用 |
|---|---|---|
storcli, MegaCli, perccli |
Broadcom/LSI/Dell MegaRAID/PERC | 阵列、物理盘、cache、BBU、固件 |
arcconf |
Microchip/Adaptec SmartRAID | RAID/HBA 管理 |
ssacli, hpssacli |
HPE Smart Array | 阵列与控制器 |
sas2ircu, sas3ircu |
LSI SAS HBA | HBA、拓扑、固件 |
| Samsung/Micron/Intel/Kioxia/WDC vendor tools | 企业 SSD/NVMe | 厂商日志、固件、命名空间、健康扩展 |
14. 按设备名快速反推工具
| 设备名 | 多半是什么 | 首选工具 |
|---|---|---|
/dev/nvme0, /dev/nvme0n1 |
NVMe controller/namespace | nvme, smartctl, lsblk, fio |
/dev/sda |
SCSI disk 抽象,可能是 SATA/SAS/UFS/USB/iSCSI | lsscsi, smartctl, sg_inq, hdparm 或 sdparm |
/dev/sg0 |
SCSI generic | sg3_utils, smartctl -d scsi/sat |
/dev/mmcblk0 |
eMMC/SD user area | mmc, lsblk, sysfs |
/dev/mmcblk0boot0 |
eMMC boot partition | mmc, blockdev, hexdump |
/dev/mmcblk0rpmb |
eMMC RPMB | mmc rpmb ... |
/dev/ufs-bsg |
UFS BSG 管理端点 | ufs-utils |
/dev/mtd0 |
raw flash | mtdinfo, flash_erase, nanddump, nandwrite |
/dev/ubi0_0 |
UBI volume | ubinfo, mkfs.ubifs, mount -t ubifs |
/dev/mapper/* |
dm/LVM/crypt/multipath | dmsetup, lvs, cryptsetup, multipath |
/dev/md0 |
md RAID | mdadm, /proc/mdstat |