前段時間需要驗證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