插件窝 干货文章 如何在Linux上配置高可用的磁盘配额

如何在Linux上配置高可用的磁盘配额

配额 bash DRBD 配置 244    来源:    2025-04-15

Linux高可用磁盘配额配置指南

一、基本磁盘配额配置

1. 安装配额工具

# 对于基于Debian的系统
sudo apt-get install quota

# 对于基于RPM的系统
sudo yum install quota

2. 启用文件系统配额

编辑/etc/fstab文件,在需要配额的分区选项中添加usrquota,grpquota

/dev/sda1  /home  ext4  defaults,usrquota,grpquota  0  2

3. 重新挂载文件系统

mount -o remount /home

4. 创建配额数据库

quotacheck -cugm /home

5. 启用配额

quotaon -avug

二、高可用配置方案

方案1: 使用DRBD + Pacemaker/Corosync

  1. 配置DRBD (分布式复制块设备)
# 安装DRBD
sudo apt-get install drbd8-utils  # Debian/Ubuntu
sudo yum install drbd kmod-drbd  # CentOS/RHEL

# 配置DRBD资源
resource r0 {
    protocol C;
    startup {
        wfc-timeout  15;
        degr-wfc-timeout 60;
    }
    disk {
        on-io-error detach;
    }
    on node1 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.1.1:7788;
        meta-disk internal;
    }
    on node2 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.1.2:7788;
        meta-disk internal;
    }
}
  1. 配置Pacemaker/Corosync集群
# 安装集群软件
sudo apt-get install pacemaker corosync  # Debian/Ubuntu
sudo yum install pacemaker corosync  # CentOS/RHEL

# 配置Corosync
auth {
    authfile /etc/corosync/authkey
}

totem {
    version: 2
    cluster_name: mycluster
    transport: udpu
    interface {
        ringnumber: 0
        bindnetaddr: 192.168.1.0
        mcastport: 5405
        ttl: 1
    }
}
  1. 配置DRBD资源代理
sudo crm configure primitive drbd_r0 ocf:linbit:drbd \
    params drbd_resource="r0" \
    op monitor interval="15" role="Master" \
    op monitor interval="30" role="Slave"

sudo crm configure ms ms_drbd_r0 drbd_r0 \
    meta master-max="1" master-node-max="1" \
    clone-max="2" clone-node-max="1" \
    notify="true"

方案2: 使用GFS2集群文件系统

  1. 配置GFS2文件系统
# 安装GFS2工具
sudo yum install gfs2-utils

# 创建GFS2文件系统
mkfs.gfs2 -p lock_dlm -j 2 -t mycluster:mygfs2 /dev/drbd0
  1. 启用GFS2配额
# 挂载时启用配额
mount -o quota=on /dev/drbd0 /shared

# 初始化配额
quotacheck -cug /shared
quotaon -avug

三、配额管理命令

  1. 为用户设置配额
edquota -u username
  1. 为组设置配额
edquota -g groupname
  1. 查看配额使用情况
repquota -a  # 查看所有配额
quota -u username  # 查看特定用户配额

四、自动化配额管理

  1. 创建配额报告脚本
#!/bin/bash
DATE=$(date +%Y%m%d)
REPORT="/var/log/quota/quota_report_$DATE.log"
repquota -a > $REPORT
  1. 设置cron定期检查
# 每周一早上6点运行配额检查
0 6 * * 1 /usr/local/bin/quota_check.sh

五、监控与告警

  1. 使用Zabbix/Grafana监控配额
# 创建自定义监控项
UserParameter=quota.usage[*],quota -u $1 | awk '/^\/dev/ {print $2}'
  1. 设置配额告警阈值
# 当用户使用超过90%配额时发送邮件
#!/bin/bash
THRESHOLD=90
for user in $(cut -d: -f1 /etc/passwd); do
    usage=$(quota -u $user | awk '/^\/dev/ {print $3}')
    limit=$(quota -u $user | awk '/^\/dev/ {print $2}')
    if [ $usage -gt $(($limit*$THRESHOLD/100)) ]; then
        mail -s "配额警告: $user" admin@example.com <<< "用户 $user 的磁盘使用量已超过 $THRESHOLD%"
    fi
done

注意事项

  1. 测试环境中验证所有配置后再应用到生产环境
  2. 定期备份配额数据库(aquota.useraquota.group文件)
  3. 考虑使用LVM以便于未来扩展
  4. 对于NFS共享目录,需要在服务器端配置配额
  5. 监控系统日志中的配额相关错误

通过以上配置,您可以建立一个高可用的磁盘配额系统,确保在节点故障时配额设置和限制能够无缝转移。