一、CentOS Stream 8存储管理概述
1.1 存储管理的重要性
在CentOS Stream 8中,存储管理是系统运维的核心技能。良好的存储管理可以:
– 提高磁盘空间利用率
– 增强数据安全性
– 简化备份和恢复
– 支持动态扩容
1.2 CentOS Stream 8支持的存储技术
CentOS Stream 8支持多种存储技术:
– LVM(Logical Volume Manager):传统逻辑卷管理
– Stratis:新一代存储管理(RHEL 8+)
– VDO(Virtual Data Optimizer):数据优化和去重
– Btrfs:下一代文件系统(技术预览)
– XFS:高性能文件系统
二、LVM存储管理
2.1 LVM基本概念
LVM(Logical Volume Manager)允许灵活管理磁盘空间:
# 1. 查看当前LVM状态
sudo pvs
sudo vgs
sudo lvs
# 2. 安装LVM工具(如未安装)
sudo yum install -y lvm2
# 3. 查看磁盘分区
lsblk
sudo fdisk -l
2.2 创建LVM卷
# 1. 创建物理卷(PV)
sudo pvcreate /dev/sdb1
# 2. 创建卷组(VG)
sudo vgcreate vg_data /dev/sdb1
# 3. 创建逻辑卷(LV)
sudo lvcreate -L 100G -n lv_data vg_data
# 4. 创建文件系统
sudo mkfs.xfs /dev/vg_data/lv_data
# 5. 挂载逻辑卷
sudo mkdir /data
sudo mount /dev/vg_data/lv_data /data
# 6. 添加到/etc/fstab(永久挂载)
echo "/dev/vg_data/lv_data /data xfs defaults 0 0" | sudo tee -a /etc/fstab
2.3 扩展LVM卷
# 1. 添加新的物理卷
sudo pvcreate /dev/sdc1
sudo vgextend vg_data /dev/sdc1
# 2. 扩展逻辑卷
sudo lvextend -L +100G /dev/vg_data/lv_data
# 3. 扩展文件系统(XFS)
sudo xfs_growfs /dev/vg_data/lv_data
# 4. 扩展文件系统(ext4)
sudo resize2fs /dev/vg_data/lv_data
# 5. 查看结果
sudo lvs
2.4 缩小LVM卷
# 1. 卸载文件系统
sudo umount /data
# 2. 检查文件系统(ext4)
sudo e2fsck -f /dev/vg_data/lv_data
# 3. 缩小文件系统(ext4)
sudo resize2fs /dev/vg_data/lv_data 50G
# 4. 缩小逻辑卷
sudo lvreduce -L 50G /dev/vg_data/lv_data
# 5. 重新挂载
sudo mount /dev/vg_data/lv_data /data
2.5 LVM快照
# 1. 创建快照
sudo lvcreate -L 10G -s -n lv_snap /dev/vg_data/lv_data
# 2. 挂载快照(只读)
sudo mkdir /snap
sudo mount -o ro /dev/vg_data/lv_snap /snap
# 3. 恢复快照
sudo umount /data
sudo lvconvert --merge /dev/vg_data/lv_snap
# 4. 删除快照
sudo lvremove /dev/vg_data/lv_snap
三、Stratis存储管理
3.1 Stratis简介
Stratis是RHEL 8+引入的新一代存储管理解决方案,提供类似ZFS的体验:
# 1. 安装Stratis
sudo yum install -y stratisd stratis-cli
# 2. 启动服务
sudo systemctl enable --now stratisd
# 3. 验证安装
stratis --version
3.2 创建Stratis池
# 1. 列出可用块设备
sudo lsblk
# 2. 创建Stratis池
sudo stratis pool create mypool /dev/sdb1
# 3. 列出池
sudo stratis pool list
# 4. 查看池详情
sudo stratis pool detail mypool
3.3 创建Stratis文件系统
# 1. 创建文件系统
sudo stratis filesystem create mypool myfs
# 2. 列出文件系统
sudo stratis filesystem list
# 3. 挂载文件系统
sudo mkdir /stratis_data
sudo mount /stratis/stratis-pool/mystor /stratis_data
# 4. 添加到/etc/fstab(使用UUID)
sudo blkid /stratis/stratis-pool/mystor
echo "UUID=xxx /stratis_data xfs defaults 0 0" | sudo tee -a /etc/fstab
3.4 Stratis快照管理
# 1. 创建快照
sudo stratis filesystem snapshot mypool myfs myfs-snap
# 2. 列出快照
sudo stratis filesystem list --snapshots
# 3. 挂载快照(只读)
sudo mkdir /snap
sudo mount -o ro /stratis/stratis-pool/myfs-snap /snap
# 4. 删除快照
sudo stratis filesystem destroy mypool myfs-snap
3.5 Stratis与LVM对比
| 特性 | LVM | Stratis |
|---|---|---|
| 快照支持 | 是 | 是 |
| 数据去重 | 需配合VDO | 需配合VDO |
| 缓存 | 是 | 是 |
| 分层存储 | 是 | 是 |
| 易用性 | 中等 | 简单 |
| 学习曲线 | 较高 | 较低 |
四、VDO数据优化
4.1 VDO简介
VDO(Virtual Data Optimizer)提供块级重复数据删除和压缩:
# 1. 安装VDO
sudo yum install -y vdo kmod-kvdo
# 2. 加载模块
sudo modprobe kvdo
# 3. 验证安装
vdo --version
4.2 创建VDO卷
# 1. 创建VDO卷
sudo vdo create \
--name=vdo_data \
--device=/dev/sdc1 \
--vdoLogicalSize=500G
# 2. 格式化文件系统
sudo mkfs.xfs /dev/mapper/vdo_data
# 3. 挂载
sudo mkdir /vdo_data
sudo mount /dev/mapper/vdo_data /vdo_data
# 4. 查看统计
sudo vdo status --name=vdo_data
4.3 与LVM结合
# 1. 在VDO上创建LVM
sudo pvcreate /dev/mapper/vdo_data
sudo vgcreate vg_vdo /dev/mapper/vdo_data
sudo lvcreate -L 400G -n lv_vdo vg_vdo
# 2. 格式化
sudo mkfs.xfs /dev/vg_vdo/lv_vdo
# 3. 挂载
sudo mkdir /vdo_lvm
sudo mount /dev/vg_vdo/lv_vdo /vdo_lvm
五、磁盘配额管理
5.1 磁盘配额简介
磁盘配额限制用户或组的磁盘使用:
# 1. 安装配额工具
sudo yum install -y quota
# 2. 启用配额(编辑fstab)
# 在挂载选项中添加:usrquota,grpquota
sudo nano /etc/fstab
# 3. 重新挂载
sudo remount /data
5.2 设置配额
# 1. 启用配额数据库
sudo quotacheck -ugm /data
# 2. 开启配额
sudo quotaon /data
# 3. 设置用户配额
sudo edquota -u username
# 软限制:100G,硬限制:110G
# 4. 设置组配额
sudo edquota -g groupname
# 5. 查看配额
sudo quota -u username
sudo repquota -a
5.3 强制配额
# 1. 开启强制执行
sudo quotaon -p
# 2. 设置宽限期(软限制过期时间)
sudo edquota -t
# 3. 检查配额
sudo quotacheck -avug
六、磁盘性能优化
6.1 I/O调度器
# 1. 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 2. 设置调度器(mq-deadline适合SSD)
echo "mq-deadline" | sudo tee /sys/block/sda/queue/scheduler
# 3. 永久设置(编辑grub)
sudo nano /etc/default/grub
# 添加:elevator=mq-deadline
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
6.2 优化文件系统挂载选项
# 1. XFS优化选项
# 在/etc/fstab中添加:
# noatime,nodiratime,logbufs=8,largeio
# 2. ext4优化选项
# noatime,nodiratime,journal_checksum,data=ordered
6.3 RAID配置
# 1. 安装mdadm
sudo yum install -y mdadm
# 2. 创建RAID5(3块磁盘)
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
# 3. 创建文件系统
sudo mkfs.xfs /dev/md0
# 4. 监控RAID
sudo mdadm --detail /dev/md0
cat /proc/mdstat
七、存储监控
7.1 使用df命令
# 1. 查看磁盘使用
df -h
# 2. 查看inode
df -i
# 3. 查看特定文件系统
df -h /data
7.2 使用lsblk
# 1. 查看块设备
lsblk
# 2. 查看详细信息
lsblk -f
# 3. 查看权限
lsblk -m
7.3 使用iostat
# 1. 安装iostat
sudo yum install -y sysstat
# 2. 查看I/O统计
iostat -x 1
# 3. 查看CPU统计
iostat -c
7.4 使用SMART监控
# 1. 安装smartmontools
sudo yum install -y smartmontools
# 2. 查看SMART信息
sudo smartctl -a /dev/sda
# 3. 启用SMART
sudo smartctl -s on /dev/sda
# 4. 运行测试
sudo smartctl -t short /dev/sda
八、备份和恢复
8.1 使用rsync备份
# 1. 安装rsync
sudo yum install -y rsync
# 2. 基本备份
rsync -av /data/ /backup/
# 3. 增量备份
rsync -av --delete /data/ /backup/
# 4. 网络备份
rsync -av -e ssh /data/ user@backup-server:/backup/
8.2 使用dd备份
# 1. 完整备份整个磁盘
sudo dd if=/dev/sda of=/backup/disk.img bs=4M status=progress
# 2. 压缩备份
sudo dd if=/dev/sda | gzip > /backup/disk.img.gz
# 3. 恢复
sudo dd if=/backup/disk.img of=/dev/sda bs=4M status=progress
# 4. 备份分区
sudo dd if=/dev/sda1 of=/backup/partition.img bs=4M
九、常见问题排查
9.1 磁盘空间不足
# 1. 查找大文件
du -sh /*
sudo du -sh /var/*
# 2. 清理日志
sudo journalctl --vacuum-size=100M
# 3. 清理旧内核
sudo package-cleanup --oldkernels
# 4. 清理缓存
sudo yum clean all
9.2 LVM问题
# 1. 检查LVM状态
sudo vgscan
sudo lvscan
# 2. 激活卷组
sudo vgchange -ay
# 3. 修复LVM
sudo pvscan
sudo vgck
9.3 文件系统问题
# 1. 检查XFS
sudo xfs_repair /dev/sda1
# 2. 检查ext4
sudo e2fsck -f /dev/sda1
# 3. 查看文件系统日志
dmesg | tail
十、总结
CentOS Stream 8提供强大的存储管理功能,主要包括:
- LVM:传统但强大的逻辑卷管理,支持动态调整
- Stratis:新一代存储管理,类似ZFS的体验
- VDO:数据去重和压缩,节省空间
- 磁盘配额:限制用户磁盘使用
- RAID:提供数据冗余和性能
- 监控工具:多种工具监控存储状态
核心要点:
– 生产环境推荐使用LVM(成熟稳定)
– 新项目可尝试Stratis(更易用)
– VDO可配合LVM或Stratis使用
– 定期监控磁盘使用情况
– 做好数据备份
注:本文基于CentOS Stream 8编写,具体配置可能因版本差异而略有不同。