介绍
近来,接触底层的内容多了一些,顺手撸一个 「 磁盘 」 相关主线的命令行备份,记录在这里留作备忘 …
涉及命令lsblk: 罗列所有可用块设备的信息
blkid: 显示关于可用块设备的信息
sgdisk:
smartctl:
sas2ircu/sas3iru:
lsblk 命令lsblk(列出块设备)命令用于列出所有可用块设备的信息,但是,它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。 引用自:参考资料 1
lsblk 命令默认情况下将以 「 树状 」 列出所有块设备。在终端输入以下命令:
1$ lsblk
输出结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@AbsentM ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 557.9G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 500M 0 part /boot
├─sda3 8:3 0 299.4G 0 part
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 97.7G 0 part /
├─sda6 8:6 0 97.7G 0 part /var/log
├─sda7 8:7 0 62.5G 0 part [SWAP]
└─sda8 8:8 0 196M 0 part /boot/efi
sdb 8:16 0 200G 0 disk
├─sdb1 8:17 0 150G 0 part /var/lib/cache
└─sdb2 8:18 0 50G 0 part
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:
1lsblk /dev/sdb -b -p -P -o NAME,SIZE,MOUNTPOINT,TYPE,ROTA,UUID,PARTUUID
输出结果如下:
1
2
3
4[root@AbsentM ~]# lsblk /dev/sdb -b -p -P -o NAME,SIZE,MOUNTPOINT,TYPE,ROTA,UUID,PARTUUID
NAME="/dev/sdb" SIZE="214748364800" MOUNTPOINT="" TYPE="disk" ROTA="1" UUID="" PARTUUID=""
NAME="/dev/sdb1" SIZE="161061273600" MOUNTPOINT="" TYPE="part" ROTA="1" UUID="0a3407de-014b-458b-b5c1-848e92a327a3" PARTUUID="b411dc99-f0a0-4c87-9e05-184977be8539"
NAME="/dev/sdb2" SIZE="53687091200" MOUNTPOINT="" TYPE="part" ROTA="1" UUID="" PARTUUID="f9fe0b69-a280-415d-a03a-a32752370dee"
Disk UUID、PARTUUID 解释
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):
1echo 0 > /sys/block/xxxx/queue/rotational # 其中,xxxx 表示磁盘名称,如 sdb.
模拟插拔盘动作
Linux 下可以使用如下命令模拟插拔盘动作,但应注意与实际物理插拔盘仍可能不太一样。
拔盘:
1echo 1 > /sys/block/xxxx/device/delete # 其中,xxxx 表示磁盘名称,如 sdb.
插盘:
1
2echo " - - - " > /sys/class/scsi_host/host0/scan
# 其中,host0 中的数字 「 0 」 表示:使用 lsscsi 命令查看的 xxxx 盘第一列 [0:0:0:1] 中的第一个数字
blkid 命令
blkid 命令可以显示关于可用块设备的信息,如:设备名称、UUID(文件系统唯一标示符)、Type(文件系统类型)、PARTLABEL、PARTUUID 等信息。
列出所有可用块设备的信息
在终端输入以下命令,列出所有可用块设备的信息:
1blkid
输出结果如下:
1
2
3
4
5/dev/sda2: UUID="0733f5c1-cb85-4f98-9d4f-122cfcee9806" TYPE="ext4"
/dev/sda3: UUID="41a18221-6b1f-4ca2-9bc3-dc353c87d932" TYPE="ext4"
/dev/sda4: UUID="57183ff9-d4a5-4623-a47f-f8f17339be03" TYPE="swap"
/dev/sdb1: UUID="0a3407de-014b-458b-b5c1-848e92a327a3" PARTUUID="b411dc99-f0a0-4c87-9e05-184977be8539" TYPE="xfs"
/dev/sdb2: UUID="6bdf487f-cad7-4197-b0d9-4ddc6df1de2d" PARTUUID="f9fe0b69-a280-415d-a03a-a32752370dee" TYPE="xfs"
列出指定块设备的信息
在终端输入以下命令,列出指定块设备的信息:
1blkid /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 的块设备信息:
1blkid -o value /dev/sdb1
输出结果如下:
1
2
30a3407de-014b-458b-b5c1-848e92a327a3
xfs
b411dc99-f0a0-4c87-9e05-184977be8539
2/ 使用 -o 参数格式化输出 sdb1 的块设备信息:
1blkid -o export /dev/sdb1
输出结果如下:
1
2
3
4DEVNAME=/dev/sdb1
UUID=0a3407de-014b-458b-b5c1-848e92a327a3
TYPE=xfs
PARTUUID=b411dc99-f0a0-4c87-9e05-184977be8539
sgdisk 命令
参考资料