¶介绍
近来,接触底层的内容多了一些,顺手撸一个 「 磁盘 」 相关主线的命令行备份,记录在这里留作备忘 …
¶涉及命令
- lsblk: 罗列所有可用块设备的信息
- blkid: 显示关于可用块设备的信息
- sgdisk:
- smartctl:
- sas2ircu/sas3iru:
¶lsblk 命令
lsblk(列出块设备)命令用于列出所有可用块设备的信息,但是,它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。 引用自:参考资料 1
lsblk 命令默认情况下将以 「 树状 」 列出所有块设备。在终端输入以下命令:
1 | $ lsblk |
输出结果如下:
1 | [root@AbsentM ~]# lsblk |
7 个列的名称解释如下:
- NAME : 块设备名称。
- MAJ:MIN : 显示主要和次要设备号。
- RM : 显示设备是否可移动设备。 RM 值为 1, 表示为可移动设备。
- SIZE : 列出设备的容量大小信息。
- RO : 表明设备是否为只读。 RO 值为 0, 表示只读。
- TYPE : 显示块设备是否是磁盘或磁盘上的一个分区。 disk 表示磁盘,part 表示分区,rom 表示只读存储器。
- MOUNTPOINT : 显示设备挂载的挂载点。
为了更直观的定制列、格式化输出展示信息,可以使用如下参数格式化输出:
- -o : output columns,定制列
- -b : print SIZE in bytes rather than in human readable format
- -l : use list format output
- -p : print complate device path
- -P : use key=“value” output format
可定制的列名称为:
- NAME : device name
- MOUNTPOINT : where the device is mounted
- UUID : filesystem UUID
- PARTUUID : partition UUID
- SIZE : size of the device
- TYPE : device type
- STATE : state of the device
- ROTA : rotational device, 可旋转磁盘标志位,可用于区分 HDD 盘和 SSD 盘: 0 - 不可旋转,SSD; 1 - 可旋转,HDD
如,以键值对的形式列出 /dev/sdb 盘的名称,大小,挂载点,类型,ROTA 位,分区 UUID,文件系统 UUID:
1 | lsblk /dev/sdb -b -p -P -o NAME,SIZE,MOUNTPOINT,TYPE,ROTA,UUID,PARTUUID |
输出结果如下:
1 | [root@AbsentM ~]# lsblk /dev/sdb -b -p -P -o NAME,SIZE,MOUNTPOINT,TYPE,ROTA,UUID,PARTUUID |
¶Disk UUID、PARTUUID 解释
关于磁盘 UUID、PARTUUID 等磁盘持久化命名解释可参看:参考资料 2:Persistent block device naming (简体中文) 和 参考资料 3:Part-UUID
¶SSD、HDD 的 Linux 判断方法
除 lsblk 命令的 ROTA 属性值可以作为 HDD 盘和 SSD 盘的判断方式( 1 - HDD, 0 - SSD) 外,还可以使用如下命令来判断:
1 | $ cat /sys/block/xxxx/queue/rotational |
如果返回值为:1,则表示为 HDD 盘;如果返回值为:0,则表示为 SSD 盘。其他方法可参看:参考资料 4:Linux下判断磁盘是SSD还是HDD的几种方法
¶将 HDD 盘模拟为 SSD 盘
可以通过如下命令,将 HDD 盘模拟为非旋转块设备(SSD):
1 | echo 0 > /sys/block/xxxx/queue/rotational # 其中,xxxx 表示磁盘名称,如 sdb. |
¶模拟插拔盘动作
Linux 下可以使用如下命令模拟插拔盘动作,但应注意与实际物理插拔盘仍可能不太一样。
拔盘:
1 | echo 1 > /sys/block/xxxx/device/delete # 其中,xxxx 表示磁盘名称,如 sdb. |
插盘:
1 | echo " - - - " > /sys/class/scsi_host/host0/scan |
¶blkid 命令
blkid 命令可以显示关于可用块设备的信息,如:设备名称、UUID(文件系统唯一标示符)、Type(文件系统类型)、PARTLABEL、PARTUUID 等信息。
¶列出所有可用块设备的信息
在终端输入以下命令,列出所有可用块设备的信息:
1 | blkid |
输出结果如下:
1 | /dev/sda2: UUID="0733f5c1-cb85-4f98-9d4f-122cfcee9806" TYPE="ext4" |
¶列出指定块设备的信息
在终端输入以下命令,列出指定块设备的信息:
1 | blkid /dev/sdb1 |
输出结果如下:
1 | /dev/sdb1: UUID="0a3407de-014b-458b-b5c1-848e92a327a3" PARTUUID="b411dc99-f0a0-4c87-9e05-184977be8539" TYPE="xfs" |
¶可用参数及格式化输出
列出几个 blkid 命令支持的可用参数:
- -o : output format; can be one of: value, device, export or full; (default: full)
- -s : show specified tag(s) (default show all tags)
- -t : find device with a specified token (NAME=value pair)
- -L : convert LABEL to device name
- -U : convert UUID to device name
1/ 使用 -o 参数格式化输出 sdb1 的块设备信息:
1 | blkid -o value /dev/sdb1 |
输出结果如下:
1 | 0a3407de-014b-458b-b5c1-848e92a327a3 |
2/ 使用 -o 参数格式化输出 sdb1 的块设备信息:
1 | blkid -o export /dev/sdb1 |
输出结果如下:
1 | DEVNAME=/dev/sdb1 |
¶sgdisk 命令
¶参考资料
[1] https://linux.cn/article-3340-1.html
[2] https://wiki.archlinux.org/index.php/Persistent_block_device_naming_(简体中文)
[3] https://wiki.debian.org/Part-UUID
[4] https://blog.csdn.net/sch0120/article/details/77725658