遍历多盘的方法

前段时间需要验证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

5 顺便说一下,如果要遍历的盘符都是有规律的如sd[a-z]
这种。那我们可以直接获取

for i in sd{a..d};do echo $i;done
sda
sdb
sdc
sdd

6 比如我们遍历一个接了72个盘的SUT

 ls -l /dev/ |egrep "sd[a-z]*$|nvme[0-9]*$"
crw-------    1 root root    246,   0 Feb  7 11:41 nvme0
crw-------    1 root root    246,   1 Feb  7 11:41 nvme1
brw-rw----    1 root disk      8,   0 Feb  8 01:32 sda
brw-rw----    1 root disk     65, 160 Feb  8 01:32 sdaa
brw-rw----    1 root disk     65, 176 Feb  8 01:32 sdab
brw-rw----    1 root disk     65, 192 Feb  8 01:32 sdac
brw-rw----    1 root disk     65, 208 Feb  8 01:32 sdad
brw-rw----    1 root disk     65, 224 Feb  8 01:32 sdae
brw-rw----    1 root disk     65, 240 Feb  8 01:32 sdaf
brw-rw----    1 root disk     66,   0 Feb  8 01:32 sdag
brw-rw----    1 root disk     66,  16 Feb  8 01:32 sdah
brw-rw----    1 root disk     66,  32 Feb  8 01:32 sdai
brw-rw----    1 root disk     66,  48 Feb  8 01:32 sdaj
brw-rw----    1 root disk     66,  64 Feb  8 01:32 sdak
brw-rw----    1 root disk     66,  80 Feb  8 01:32 sdal
brw-rw----    1 root disk     66,  96 Feb  8 01:32 sdam
brw-rw----    1 root disk     66, 112 Feb  8 01:32 sdan
brw-rw----    1 root disk     66, 128 Feb  8 01:32 sdao
brw-rw----    1 root disk     66, 144 Feb  8 01:32 sdap
brw-rw----    1 root disk     66, 160 Feb  8 01:32 sdaq
brw-rw----    1 root disk     66, 176 Feb  8 01:32 sdar
brw-rw----    1 root disk     66, 192 Feb  8 01:32 sdas
brw-rw----    1 root disk     66, 208 Feb  8 01:32 sdat
brw-rw----    1 root disk     66, 224 Feb  8 01:32 sdau
brw-rw----    1 root disk     66, 240 Feb  8 01:32 sdav
brw-rw----    1 root disk     67,   0 Feb  8 01:32 sdaw
brw-rw----    1 root disk     67,  16 Feb  8 01:32 sdax
brw-rw----    1 root disk     67,  32 Feb  8 01:32 sday
brw-rw----    1 root disk     67,  48 Feb  8 01:32 sdaz
brw-rw----    1 root disk      8,  16 Feb  8 09:23 sdb
brw-rw----    1 root disk     67,  64 Feb  8 09:23 sdba
brw-rw----    1 root disk     67,  80 Feb  8 09:23 sdbb
brw-rw----    1 root disk     67,  96 Feb  8 09:23 sdbc
brw-rw----    1 root disk     67, 112 Feb  8 09:23 sdbd
brw-rw----    1 root disk     67, 128 Feb  8 09:23 sdbe
brw-rw----    1 root disk     67, 144 Feb  8 09:23 sdbf
brw-rw----    1 root disk     67, 160 Feb  8 09:23 sdbg
brw-rw----    1 root disk     67, 176 Feb  8 09:23 sdbh
brw-rw----    1 root disk     67, 192 Feb  8 09:23 sdbi
brw-rw----    1 root disk     67, 208 Feb  8 09:23 sdbj
brw-rw----    1 root disk     67, 224 Feb  8 09:23 sdbk
brw-rw----    1 root disk     67, 240 Feb  8 09:23 sdbl
brw-rw----    1 root disk     68,   0 Feb  8 09:23 sdbm
brw-rw----    1 root disk     68,  16 Feb  8 09:23 sdbn
brw-rw----    1 root disk     68,  32 Feb  8 09:23 sdbo
brw-rw----    1 root disk     68,  48 Feb  8 09:23 sdbp
brw-rw----    1 root disk     68,  64 Feb  8 09:23 sdbq
brw-rw----    1 root disk     68,  80 Feb  8 09:23 sdbr
brw-rw----    1 root disk      8,  32 Feb  8 09:23 sdc
brw-rw----    1 root disk      8,  48 Feb  8 09:23 sdd
brw-rw----    1 root disk      8,  64 Feb  8 09:23 sde
brw-rw----    1 root disk      8,  80 Feb  8 09:23 sdf
brw-rw----    1 root disk      8,  96 Feb  8 09:23 sdg
brw-rw----    1 root disk      8, 112 Feb  8 09:23 sdh
brw-rw----    1 root disk      8, 128 Feb  8 09:23 sdi
brw-rw----    1 root disk      8, 144 Feb  8 09:23 sdj
brw-rw----    1 root disk      8, 160 Feb  8 09:23 sdk
brw-rw----    1 root disk      8, 176 Feb  8 09:23 sdl
brw-rw----    1 root disk      8, 192 Feb  8 09:23 sdm
brw-rw----    1 root disk      8, 208 Feb  8 09:23 sdn
brw-rw----    1 root disk      8, 224 Feb  8 09:23 sdo
brw-rw----    1 root disk      8, 240 Feb  8 09:23 sdp
brw-rw----    1 root disk     65,   0 Feb  8 09:23 sdq
brw-rw----    1 root disk     65,  16 Feb  8 09:23 sdr
brw-rw----    1 root disk     65,  32 Feb  8 09:23 sds
brw-rw----    1 root disk     65,  48 Feb  8 09:23 sdt
brw-rw----    1 root disk     65,  64 Feb  8 09:23 sdu
brw-rw----    1 root disk     65,  80 Feb  8 09:23 sdv
brw-rw----    1 root disk     65,  96 Feb  8 09:23 sdw
brw-rw----    1 root disk     65, 112 Feb  8 09:23 sdx
brw-rw----    1 root disk     65, 128 Feb  8 09:23 sdy
brw-rw----    1 root disk     65, 144 Feb  8 09:23 sdz
 num=1
[root@localhost ~]# for i in `ls -l /dev/ |egrep "sd[a-z]*$|nvme[0-9]*$" |awk '{print $NF}'`;do echo " the ${num}th $i" let num++;done
 the 1th nvme0
 the 2th nvme1
 the 3th sda
 the 4th sdaa
 the 5th sdab
 the 6th sdac
 the 7th sdad
 the 8th sdae
 the 9th sdaf
 the 10th sdag
 the 11th sdah
 the 12th sdai
 the 13th sdaj
 the 14th sdak
 the 15th sdal
 the 16th sdam
 the 17th sdan
 the 18th sdao
 the 19th sdap
 the 20th sdaq
 the 21th sdar
 the 22th sdas
 the 23th sdat
 the 24th sdau
 the 25th sdav
 the 26th sdaw
 the 27th sdax
 the 28th sday
 the 29th sdaz
 the 30th sdb
 the 31th sdba
 the 32th sdbb
 the 33th sdbc
 the 34th sdbd
 the 35th sdbe
 the 36th sdbf
 the 37th sdbg
 the 38th sdbh
 the 39th sdbi
 the 40th sdbj
 the 41th sdbk
 the 42th sdbl
 the 43th sdbm
 the 44th sdbn
 the 45th sdbo
 the 46th sdbp
 the 47th sdbq
 the 48th sdbr
 the 49th sdc
 the 50th sdd
 the 51th sde
 the 52th sdf
 the 53th sdg
 the 54th sdh
 the 55th sdi
 the 56th sdj
 the 57th sdk
 the 58th sdl
 the 59th sdm
 the 60th sdn
 the 61th sdo
 the 62th sdp
 the 63th sdq
 the 64th sdr
 the 65th sds
 the 66th sdt
 the 67th sdu
 the 68th sdv
 the 69th sdw
 the 70th sdx
 the 71th sdy
 the 72th sdz
 写成shell的形式如下
 #!/bin/bash
num=1
sata=$(ls -l /dev/ |egrep "sd[a-z]*$|nvme[0-9]*$"|awk '{print $NF}')
for i in $sata;do
echo " the ${num}th hdd is $i"
let num++
done
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值