在服务器测试中,对硬盘的测试有很多,有些测试用例需要我们写一下自动化的脚本,比如给服务器所有的盘施加压力,这个就需要我们把除了OS盘的所有盘遍历出来,下面介绍几种方法来筛选OS盘
我们知道,判断os 盘的方法一般是看其有没有boot分区,通常用两个指令来获取:lsblk和df -h 下面一次介绍一下这两种方法的写法
1、 lsblk 如图所示 带有boot 分区的就是OS盘
系统盘是sda

系统盘是nvme0n1

shell命令行:
lsblk -l |grep -i boot -B 1 |grep -i disk |awk '{print $1}'


筛选除了OS外所有的盘符
lsblk -l |grep -vw sda |grep -i disk |awk '{print $1}'

lsblk -l |grep -vw nvme0n1 |grep -i disk |awk '{print $1}'

2、 df -h
系统盘是sda

shell命令行
df -h | awk '{print $1}' | grep -iE "/dev/sd" | sed 's/[0-9]//g' |sort -u |awk -F "/" {'print $NF'}

系统盘是nvme0n1

shell 命令行
df -h | awk '{print $1}' | grep -iE "/dev/nvme" | sed 's/p[0-9]//g' |sort -u |awk -F "/" {'print $NF'}

对此可以写成一个小脚本来判断OS,代码如下:
#!/bin/bash
bootdisk=`df -h |grep -i boot | awk '{print $1}' | grep -iE "/dev/sd" | sed 's/[0-9]//g' |sort -u|awk -F "/" '{print $NF}'`
if test -z "$bootdisk"
then
bootdisk=`df -h |grep -i boot| awk '{print $1}' | grep -iE "/dev/nvme" | sed 's/p[0-9]*//g' |sort -u|awk -F "/" '{print $NF}'`
echo "os disk os $bootdisk"
else
echo "os disk is $bootdisk"
fi
运行结果如下图:

