nano /etc/zfs/zed.d/90-degraded-readonly.sh#!/bin/bash
ZPOOL="SSD-RAID5"
# 只在池状态变为 DEGRADED 时触发
if [ "$ZEVENT_SUBCLASS" = "pool_state_change" ] &&
zpool status "$ZPOOL" | grep -q "state: DEGRADED"; then
# 设置整个池为只读,禁止写入
zfs set readonly=on "$ZPOOL"
# 系统日志留痕
logger -t zed "Pool $ZPOOL is DEGRADED -> set READONLY"
fi
chmod +x /etc/zfs/zed.d/90-degraded-readonly.sh
systemctl restart zed
只要任意一块盘掉了 →
池变成 DEGRADED →
立刻自动禁止所有写入 →
任何新建/修改/删除都会直接报错:
Read-only file system
读不受影响,数据绝对安全。
恢复正常(盘修好/重建完后)
等 resilver 结束、状态回到 ONLINE,执行:
zfs set readonly=off SSD-RAID5
临时启用读写:
chmod -x /etc/zfs/zed.d/90-degraded-readonly.sh
systemctl restart zed
zfs set readonly=off SSD-RAID5