前段时间需要验证SUT多盘的性能,目前自己总结了一下方法,方便后面使用。
一,首先遍历盘的指令有很多种,说下其中比较常见的。
1 lsblk : 最为常见的指令,不过一般我们在遍历盘的时候不用这个指令。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 400G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 399G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 345.1G 0 lvm /home
2 ,ls -l /dev/ |egrep "sd[a-z]|nvme
[root@localhost ~]# ls -l /dev/ |egrep "sd[a-z]|nvme"
crw------- 1 root root 246, 0 Jan 29 19:49 nvme0
brw-rw---- 1 root disk 259, 0 Feb 1 01:30 nvme0n1
crw------- 1 root root 246, 1 Jan 29 19:49 nvme1
brw-rw---- 1 root disk 259, 1 Feb 1 01:30 nvme1n1
lrwxrwxrwx 1 root root 4 Jan 29 19:47 root -> sda2
brw-rw---- 1 root disk 8, 0 Feb 1 01:30 sda
brw-rw---- 1 root disk 8, 1 Feb 1 01:30 sda1
brw-rw---- 1 root disk 8, 2 Feb 1 01:30 sda2
brw-rw---- 1 root disk 8, 3 Feb 1 01:30 sda3
brw-rw---- 1 root disk 8, 16 Jan 29 20:45 sdb
这个指令是我们在脚本中常用来遍历的,比如:
遍历所有的SATA盘
ls -l /dev/ |grep “sd[a-z]”
[root@localhost ~]# ls -l /dev/ |grep "sd[a-z]"
lrwxrwxrwx 1 root root 4 Jan 29 19:47 root -> sda2
brw-rw---- 1 root disk 8, 0 Feb 1 01:30 sda
brw-rw---- 1 root disk 8, 1 Feb 1 01:30 sda1
brw-rw---- 1 root disk 8, 2 Feb 1 01:30 sda2
brw-rw---- 1 root disk 8, 3 Feb 1 01:30 sda3
brw-rw---- 1 root disk 8, 16 Jan 29 20:45 sdb
[root@localhost ~]# ls -l /dev/ |grep "sd[a-z]*$"|awk '{print $NF}'
sda
sdb
遍历所有的nvme盘
[root@localhost ~]# ls -l /dev/ |grep "nvme[0-9]*$"
crw------- 1 root root 246, 0 Jan 29 19:49 nvme0
crw------- 1 root root 246, 1 Jan 29 19:49 nvme1
- cat /proc/partitions
这个也是我们在脚本中常用来遍历多盘的指令
过滤SATA盘
cat /proc/partitions |grep -Pv sd[a-z]
major minor #blocks name
259 0 3907018584 nvme0n1
259 1 3907018584 nvme1n1
259 2 130054144 pmem1
259 3 130054144 pmem3
259 4 130054144 pmem2
259 5 130054144 pmem5
259 6 130054144 pmem4
259 7 130054144 pmem6
259 8 130054144 pmem7
259 9 130054144 pmem0
[root@localhost ~]# cat /proc/partitions |grep sd[a-z]
8 0 1404960768 sda
8 1 1048576 sda1
8 2 157286400 sda2
8 3 52428800 sda3
4 ,lsscsi. 查看SATA盘
lsscsi
[0:0:0:0] disk ATA INTEL SSDSCKKB48 1102 /dev/sda
[10:0:0:0] disk ATA ST4000NM000A-2HZ TN02 /dev/sdb
[12:0:0:0] disk ATA ST8000NM000A-2KE SN01 /dev/sdc
有时候脚本中需要我们获取盘符,比如 /dev/sda , sda.sdb.等等。下面以lsscsi指令为例,总结一下常用的盘符获取的方法
a.第一种:awk -F
for i in lsscsi |awk '{print $NF}'|awk -F "/" '{print $NF}'
; do echo $i;done
for i in `lsscsi |awk '{print $NF}'|awk -F "/" '{print $NF}'`; do echo $i;done
sda
sdb
sdc
b.第二种:tr -s
for i in `lsscsi |awk '{print $NF}'|tr -s "/" " "|awk '{print $NF}'` ;do echo $i;done
sda
sdb
sdc
c.第三种:cut -d
for i in `lsscsi |awk '{print $NF}'|cut -d '/' -f 3` ;do echo $i;done
sda
sdb
sdc
d.第四种:sed 替换
lsscsi |awk ‘{print $NF}’ |sed “s#/dev/##g”
for i in `lsscsi |awk '{print $NF}' |sed "s#/dev/##g"` ;do echo $i;done
sda
sdb
顺便说一下,如果要遍历的盘符都是有规律的如sd[a-z]
这种。那我们可以直接获取
for i in sd{
a..d};do echo $i;done
sda
sdb
sdc
sdd