PVE 硬盘相关

  1. 1. PVE 硬盘相关
    1. 1.1. 休眠
      1. 1.1.1. 持久化保存 休眠时间
        1. 1.1.1.1. 第一种
        2. 1.1.1.2. 第二种
    2. 1.2. 挂载硬盘 给 lxc
      1. 1.2.1. 使用 sd* 挂载设备 (不推荐)
      2. 1.2.2. 使用 UUID 挂载设备(推荐)

PVE 硬盘相关

休眠

PVE 硬盘不休眠的原因基本都是由于pvestatd一直在读取硬盘信息,导致不会休眠

所以问题就比较简单了

第一种方法 (比较粗暴,不推荐)

1
pvestatd stop

第二种方法

修改/etc/lvm/lvm.conf文件,开启 lvm 的 metadata 的缓存

1
2
3
4
# 开启
sed -i 's/use_lvmetad = 0/use_lvmetad = 1/g' /etc/lvm/lvm.conf
# 重启
pvestatd restart

如果开启的话,就会缓存 lvm 的信息,就不需要再读取硬盘获取了

第三种方法

修改/etc/lvm/lvm.conf文件,过滤不需要监控的盘

1
2
3
4
# 添加 "r|/dev/sd*|" 到 global_filter
global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|", "r|/dev/sd*|" ]
# 重启
pvestatd restart

通过以上方式允许硬盘休眠后,可以让硬盘立即休眠来测试下是否还会被唤醒

1
2
3
4
# 立即休眠
hdparm -y /dev/sdc
# 设置硬盘休眠时间为 5 分钟
hdparm -S 60 /dev/sdc

这里-S取值设定逻辑比较奇怪,本文列出部分常见取值供选:

30 = 2 min 30 sec

60 = 5 minutes

120 = 10 minutes

180 = 15 minutes

241 = 30 minutes

242 = 1 hour

243 = 1.5 hours

244 = 2 hours

持久化保存 休眠时间

不要添加到各种开机启动的脚本、crontab 中

编辑/etc/hdparm.conf就可以做到持久化保存休眠配置

第一种

在 command_line 处

1
2
3
command_line {
hdparm -S 60 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215
}

第二种

在 特定硬盘处

1
2
3
4
# 这里也可以改为 sdc 或者 /dev/disk/by-label/8TB,但是 UUID 最稳定
/dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
spindown_time = 60
}

挂载硬盘 给 lxc

首先需要注意的是,创建 LXC 容器需要在创建时开启了特权模式,否则只能读取但无法写入数据。

假设 lxc id 是 202

使用 sd* 挂载设备 (不推荐)

1
2
3
4
5
6
# 停止
pct stop 202
# 挂载 sdc 到 /data
pct set 202 -mp0 /dev/sdc,mp=/data
# 开机
pct start 202

使用 UUID 挂载设备(推荐)

因为 /dev/sdb /dev/sdc 这种形式可能会随着插拔设备之类的发生变动,或改变顺序,而 UUID 则不会改变

1
2
3
4
5
6
7
8
# 停止
pct stop 202
# 获取设备 UUID
blkid /dev/sdc
# 挂载 sdc 到 /data
pct set 202 -mp0 /dev/disk/by-uuid/312e15c4-c8e8-4465-8099-2f1cf007fe92,mp=/data
# 开机
pct start 202