遍历多盘的方法

前段时间需要验证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
  1. 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章