0. 系统 raid 结构
使用 cat /proc/mdstat
可以查看所有 raid 卷。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] md3 : active raid1 sdc3[0] 3897063616 blocks super 1.0 [1/1] [U]
md2 : active raid1 sda3[0] 7804071616 blocks super 1.0 [1/1] [U]
md1 : active raid1 sdb3[0] 392120832 blocks super 1.0 [1/1] [U]
md322 : active raid1 sda5[1] sdc5[0] 7235136 blocks super 1.0 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk
md256 : active raid1 sda2[1] sdc2[0] 530112 blocks super 1.0 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk
md321 : active raid1 sdb5[0] 8283712 blocks super 1.0 [2/1] [U_] bitmap: 0/1 pages [0KB], 65536KB chunk
md13 : active raid1 sda4[0] sdc4[33] sdb4[32] 458880 blocks super 1.0 [32/3] [UUU_____________________________] bitmap: 1/1 pages [4KB], 65536KB chunk
md9 : active raid1 sda1[0] sdc1[33] sdb1[32] 530048 blocks super 1.0 [32/3] [UUU_____________________________] bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
|
注意到 md9 md13 md322 md256 均是横跨了机械硬盘的 raid 卷。搜索后得知 md9 和 md13 是系统自动创建的跨所有硬盘的 raid1 数据卷,存储系统配置和目录等。md322 和 md256 是系统 swap 分区。
1. 系统分区 raid 反复读取
使用 blkdevMonitor.sh 脚本查看硬盘读写,可以看到大量 md9 相关读取。因此首先处理 md9 和 md13。
使用 parted /dev/sdb print
命令查看各硬盘,通过容量判断 sdb 是 SSD,sda 和 sdc 是两块机械硬盘。因此将 SSD 以外的硬盘从阵列中踢出。
1 2 3 4 5 6 7 8 9
| #!/bin/bash
echo "Disconnecting md9" mdadm /dev/md9 --fail /dev/sda1 mdadm /dev/md9 --fail /dev/sdc1
echo "Disconnecting md13" mdadm /dev/md13 --fail /dev/sda4 mdadm /dev/md13 --fail /dev/sdc4
|
使用 mdadm -D /dev/md9
验证移除是否成功
然后使用 hdparm -y /dev/sda
立即休眠硬盘,并使用 hdparm -C /dev/sda
查看硬盘状态,active/idle
或者 standby
但断开连接时万一系统盘损坏,则系统数据会丢失,因此每天同步一次。使用下列脚本恢复连接。
1 2 3 4 5 6 7 8 9
| #!/bin/bash
echo "Re-adding md9" mdadm /dev/md9 --re-add /dev/sda1 mdadm /dev/md9 --re-add /dev/sdc1
echo "Re-adding md13" mdadm /dev/md13 --re-add /dev/sda4 mdadm /dev/md13 --re-add /dev/sdc4
|
保存上述两个脚本后(记得添加 x 权限),使用 crontab 每天运行一次,加回去15分钟后断开连接,应足够其完成同步。
1 2 3
| sudo echo 15 0 \* \* \* /share/homes/Tojo/rebuild_internal_raid.sh >> /etc/config/crontab sudo echo 30 0 \* \* \* /share/homes/Tojo/disconnect_internal_raid.sh >> /etc/config/crontab sudo crontab /etc/config/crontab && sudo /etc/init.d/crond.sh restart
|
并修改启动脚本使其自动生效。
2. swap 分区
使用 cat /proc/swaps
查看系统 swap 分区,发现很诡异地两个 swap 都建立在机械硬盘上。
但目前看起来不是很影响休眠,就先不管他了。
参考:
Advanced guide to how I completely silenced my TS-453A - QNAP NAS Community Forum
md clarification please_ - QNAP NAS Community Forum
Find out which process prevents the hard drives from spindown - QNAPedia