值得买科技-分享、推荐高性价品牌产品购物排行榜!

[服务器]OMV查询硬盘休眠状态

空锅 真实性核验

认证:电脑主机优质原创作者

发布时间:2021-08-10 22:58 来源:什么值得买

浏览量:2886 943次收藏

分类:电脑主机

本文有3498个文字,大小约为13KB,预计阅读时间9分钟

OMVOMV查询硬盘休眠OMV查询硬盘休眠状态状态查询硬盘休眠OMV查询硬盘休眠状态状态

###前言

一开始unraid转移到openmediavault的时候。就很纠结于omv是否需要给硬盘设置高级电源管理。这项操作在unraid里是很方便统一对硬盘进行设置的。但是在omv里需要逐一对于硬盘进行操作(尤其是我的硬盘柜总共有40+硬盘)。而且也不是很明白高级电源管理里的各种选项。就一直很劝退……

但是电费单子下来之后。我觉得还是很有必要实操一下了。

我的硬盘柜主要是做半冷存储。主要是大量写入后。几乎不做改动。过了一定时间的存储期限后将其删除。

因此在我的使用场景下。没有很长期的频繁读写操作。所以我的电源管理设置是127。停转时间是30min。(也许后期会提高到60。需要运行一段时间看LoadCycleCount增长是不是很夸张再做决定)

###正题

###OMV查询硬盘休眠OMV查询硬盘休眠状态状态查询硬盘休眠OMV查询硬盘休眠状态状态

设置好硬盘的电源管理后。为了验证是否设置成功并有效的可以Standby已达到节能的目的。便搜索了一下相关内容。然后找到@龙天ivan 的文档

《OMVOMV查询硬盘休眠OMV查询硬盘休眠状态状态查询硬盘休眠OMV查询硬盘休眠状态状态(Linux通用)》 jianshu.com/p/74f65ac27a2a

@龙天ivan 的文档使用下来体验良好。OMV查询硬盘休眠OMV查询硬盘休眠状态状态可以快速在不唤醒硬盘的情况下查阅硬盘IDLEOMV查询硬盘休眠状态状态。即Active或者Standby。

但是同时也到一定的问题。比如一开始无法正确获取硬盘sdaa /sdab 之类的盘符

```

dsk=`ls /dev/|grep 'sd[a-z]$'` #此代码只能识别三位字符盘符。不能识别如 sdaasdab OMV查询硬盘休眠状态等驱动器名称

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'` #修改为此即可获取sdaa/sdab等盘位

```

原文的作者也很好的写明白了一步一步的过程。所以很容易看明白是怎么写出这个脚本的。

基于此。跟着他的思路OMV查询硬盘休眠状态和方法。我跟着测试改写了一些代码。使其实现了更多更适合我的使用场景的功能。

###加料版结果

1.首先解决不能正确识别到sdaa等同类盘符的磁盘;

2.增加分割线方便阅读echo结果;

3.使用lsblkOMV查询硬盘休眠状态和grep将硬盘对应的路径OMV查询硬盘休眠状态和盘符大小标识出来。方便跟文件系统一一对应。使得结果更直观易读;

4.使用if语句判断硬盘OMV查询硬盘休眠状态状态。并使用颜色标记硬盘的不同OMV查询硬盘休眠状态状态。红色ACTIVE。绿色STANDBY。白色UNKOWN;

5.增加 if 嵌套语句判断除开 ACTIVE OMV查询硬盘休眠状态和 STANDBY 之外OMV查询硬盘休眠状态状态的硬盘;

6.使用for语句将UNKNOWNOMV查询硬盘休眠状态状态的硬盘列举出来。并且在段落最后单独echo出数量以及具体盘符;



颜色标识OMV查询硬盘休眠状态状态/显示各OMV查询硬盘休眠状态状态硬盘数量/列出位置OMV查询硬盘休眠状态状态硬盘

###脚本完整版如下:

-简单阅读一遍可以直接抄作业。按照上文提到的@龙天ivan 的文档存储脚本。对脚本赋予权限即可。不在此赘述。

-需要注意的是。颜色标识在omvOMV查询硬盘休眠状态的计划任务里并不支持。

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

#function-2:通过echo -eOMV查询硬盘休眠状态转义与if...elif...elseOMV查询硬盘休眠状态语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况

#function-3:原for循环语句中加入判断OMV查询硬盘休眠状态和循环计数方式,统计activeOMV查询硬盘休眠状态和standby的数量

#function-4:增加 if 嵌套语句判断除开 active OMV查询硬盘休眠状态和 standby 之外OMV查询硬盘休眠状态状态的硬盘。并将其标记为 unknown

#function-5:将unknownOMV查询硬盘休眠状态状态的硬盘列举出来(对for语句上瘾了……

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

standby=0

active=0

unknown=0

c=0

for i in $dsk;

do

echo -e "n";

echo -e "-----------------------";

echo -n "/dev/$i : " ;

stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

#echo $stats

if [[ $stats == STANDBY ]]||[[ $stats == ACTIVE ]]||[[ $stats == IDLE_A ]]

then

for s in $stats;

do

if [ $s == STANDBY ]

then

echo -e "�33[30;42m STANDBY �33[0m"

let standby=$standby+1

else

echo -e "�33[37;41m ACTIVE �33[0m"

let active=$active+1

fi

done

else

echo -e "�33[30;47m UNKNOWN �33[0m"

let unknown=$unknown+1

for un in $i

do

list[c]=$un

((c++))

done

fi

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

done

echo -e "n";

echo -e "�33[37;41mActive Disk in Total=$active �33[0m";

echo -e "�33[30;42mStandby Disk in Total=$standby �33[0m";

echo -e "�33[30;47mUnknown Disk in Total=$unknown �33[0m";

#echo $c

echo -e "Unknown Disk list: ";

for((b=0;b<=$c;b++));

do

if [[ $b -lt $c ]]

then

echo ${list[b]}

fi

done

echo -e "n";

exit

```

###本文到此结束

使用愉快。以下内容只是作为我改写过程的记录。方便还原各个功能点引入时候的思路。感兴趣的可以看一下帮忙指正。

v1

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

dsk=`ls /dev/|grep 'sd[a-z]$'` #此代码只能识别三位字符盘符。不能识别如 sdaasdab OMV查询硬盘休眠状态等驱动器名称

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'` #修改为此即可

echo `date +%c`

for i in $dsk;

do

echo -n "/dev/$i : " ; #显示盘符

echo `smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `; #显示硬盘通电OMV查询硬盘休眠状态状态

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7} `; #显示硬盘 lable

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `; #显示硬盘大小

echo -e "n"; #换行

done

exit

```

v2

增加颜色显示加以区分。建立分割线。方便查看各硬盘

```

#!/bin/bash

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

for i in $dsk;

do

echo -e "�33[37;41m !Disk Stats! �33[0m";

echo -n "/dev/$i : " ;

echo `smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

echo -e "n";

done

exit

```

v3

OMV查询硬盘休眠状态增加条件判断

active 红色

stanby 绿色

check 黄色

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

#function-2:通过echo -eOMV查询硬盘休眠状态转义与if...elif...elseOMV查询硬盘休眠状态语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

for i in $dsk;

do

echo -e "-----------------------";

echo -n "/dev/$i : " ;

stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

for s in $stats;

do

echo "$s"

if [ $s == STANDBY ]

then

echo -e "�33[30;42m STANDBY �33[0m";

elif [ $s == ACTIVE ]

then

echo -e "�33[37;41m ACTIVE �33[0m";

else

echo -e "�33[30;43m PLEASE CKECK �33[0m";

fi

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

echo -e "n";

done

done

exit

```

v4

增加硬盘OMV查询硬盘休眠状态状态的数量统计

代码中对 unknown 的判断是无效的。下一个功能版本中修复。(原因为 stats 有可能返回为空 string

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

#function-2:通过echo -eOMV查询硬盘休眠状态转义与if...elif...elseOMV查询硬盘休眠状态语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况

#function-3:原for循环语句中加入判断OMV查询硬盘休眠状态和循环计数方式,统计activeOMV查询硬盘休眠状态和standby的数量

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

standby=0

active=0

unknown=0

for i in $dsk;

do

echo -e "n";

echo -e "-----------------------";

echo -n "/dev/$i : " ;

stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

for s in $stats;

do

if [ $s == STANDBY ]

then

echo -e "�33[30;42m STANDBY �33[0m";

let standby=$standby+1

elif [ $s == ACTIVE ]

then

echo -e "�33[37;41m ACTIVE �33[0m";

let active=$active+1

else

echo -e "�33[30;43m UNKNOWN �33[0m";

let unknown=$unknown+1

fi

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

done

done

echo -e "n";

echo -e "�33[37;41mActive Disk in Total=$active �33[0m";

echo -e "�33[30;42mStandby Disk in Total=$standby �33[0m";

echo -e "�33[30;47mUnknown Disk in Total=$unknown �33[0m";

echo -e "n";

exit

```

v5

增加功能 4

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

#function-2:通过echo -eOMV查询硬盘休眠状态转义与if...elif...elseOMV查询硬盘休眠状态语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况

#function-3:原for循环语句中加入判断OMV查询硬盘休眠状态和循环计数方式,统计activeOMV查询硬盘休眠状态和standby的数量

#function-4:增加 if 嵌套语句判断除开 active OMV查询硬盘休眠状态和 standby 之外OMV查询硬盘休眠状态状态的硬盘。并将其标记为 unknown

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

standby=0

active=0

unknown=0

for i in $dsk;

do

echo -e "n";

echo -e "-----------------------";

echo -n "/dev/$i : " ;

stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

#echo $stats

if [[ $stats == STANDBY ]]||[[ $stats == ACTIVE ]]||[[ $stats == IDLE_A ]]

then

for s in $stats;

do

if [ $s == STANDBY ]

then

echo -e "�33[30;42m STANDBY �33[0m"

let standby=$standby+1

else

echo -e "�33[37;41m ACTIVE �33[0m"

let active=$active+1

fi

done

else

echo -e "�33[30;47m UNKNOWN �33[0m"

let unknown=$unknown+1

fi

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

done

echo -e "n";

echo -e "�33[37;41mActive Disk in Total=$active �33[0m";

echo -e "�33[30;42mStandby Disk in Total=$standby �33[0m";

echo -e "�33[30;47mUnknown Disk in Total=$unknown �33[0m";

echo -e "n";

exit

```

v6

```

#!/bin/bash

#function-1:显示硬盘盘符+Lable+容量以及硬盘上电OMV查询硬盘休眠状态状态

#function-2:通过echo -eOMV查询硬盘休眠状态转义与if...elif...elseOMV查询硬盘休眠状态语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况

#function-3:原for循环语句中加入判断OMV查询硬盘休眠状态和循环计数方式,统计activeOMV查询硬盘休眠状态和standby的数量

#function-4:增加 if 嵌套语句判断除开 active OMV查询硬盘休眠状态和 standby 之外OMV查询硬盘休眠状态状态的硬盘。并将其标记为 unknown

#function-5:将unknownOMV查询硬盘休眠状态状态的硬盘列举出来(对for语句上瘾了……

dsk=`ls /dev/sd* | grep -Po 'sd(a{2}|[a-z]+)$'`

echo `date +%c`

standby=0

active=0

unknown=0

a=0

b=0

c=0

for i in $dsk;

do

echo -e "n";

echo -e "-----------------------";

echo -n "/dev/$i : " ;

stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;

#echo $stats

if [[ $stats == STANDBY ]]||[[ $stats == ACTIVE ]]||[[ $stats == IDLE_A ]]

then

for s in $stats;

do

if [ $s == STANDBY ]

then

echo -e "�33[30;42m STANDBY �33[0m"

let standby=$standby+1

else

echo -e "�33[37;41m ACTIVE �33[0m"

let active=$active+1

fi

done

else

echo -e "�33[30;47m UNKNOWN �33[0m"

let unknown=$unknown+1

for un in $i

do

list[c]=$un

((c++))

done

fi

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;

echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;

done

echo -e "n";

echo -e "�33[37;41mActive Disk in Total=$active �33[0m";

echo -e "�33[30;42mStandby Disk in Total=$standby �33[0m";

echo -e "�33[30;47mUnknown Disk in Total=$unknown �33[0m";

#echo $c

echo -e "Unknown Disk list: ";

for((b=0;b<=$c;b++));

do

if [[ $b -lt $c ]]

then

echo ${list[b]}

fi

done

echo -e "n";

exit

```



OMVOMV查询硬盘休眠OMV查询硬盘休眠状态状态查询硬盘休眠OMV查询硬盘休眠状态状态

其他人还看了

Win7电脑RPC服务器不可用怎么办 RPC服务器不可用解决方法

Win10如何修改时间同步服务器?Windows时间同步出错解决方法

找不到服务器或DNS错误怎么办?Win7找不到服务器或dns错误解决方法

Win10玩lol英雄联盟无法连接服务器请检查您的网络连接解决方法

Win10开机服务器正在运行中如何解决?服务器正在运行中到解决方法

哎呦不错哦,赞!(384)

郑重声明:本文“[服务器]OMV查询硬盘休眠状态”,https://nmgjrty.com/diannaozj_210247.html内容,由空锅提供发布,请自行判断内容优劣。

上一篇:[服务器]DellPowerEdgeR230

下一篇:[服务器]联想服务器份额升至全球第三,一季度营收增长349%

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!
相关推荐

tags标签

返回顶部