Linux分卷(LVM)优化磁盘空间的核心方法
动态调整是LVM的核心优势,可根据需求灵活增减逻辑卷(LV)空间,无需重新分区或格式化。
lvextend命令扩展LV。例如,为根分区(/dev/mapper/centos-root)增加10GB空间:lvextend -L +10G /dev/mapper/centos-root
扩展后,需调整文件系统以使用新增空间:
xfs_growfs /dev/mapper/centos-root;resize2fs /dev/mapper/centos-root。/home)空间过剩,可先卸载分区,缩小文件系统,再缩减LV。例如:umount /home
e2fsck -f /dev/mapper/centos-home # 检查文件系统
resize2fs /dev/mapper/centos-home 50G # 缩小文件系统至50GB
lvreduce -L 50G /dev/mapper/centos-home # 缩减LV
mount /home # 重新挂载
注意:ext4文件系统需先缩小文件系统再缩减LV,XFS文件系统不支持在线缩减,需卸载后操作。卷组(VG)是逻辑卷的容器,其空间来自物理卷(PV,即物理磁盘或分区)。若现有PV空间不足,可通过以下方式扩展卷组:
pvcreate将新磁盘(如/dev/sdb)创建为PV,再用vgextend添加到卷组:pvcreate /dev/sdb
vgextend centos /dev/sdb
/dev/sda3)有未分配空间,可将其创建为PV并添加到卷组。文件系统类型直接影响磁盘空间利用率和性能:
通过将SSD作为缓存设备,可加速HDD的读写速度。常用工具为lvmcache:
# 创建缓存池(将SSD的/dev/sdb1作为缓存设备)
lvcreate -L 100G -n lv_cache vg0 /dev/sdb1
# 将缓存池关联到目标LV(如根分区)
lvconvert --type cache --cachevol vg0/lv_cache vg0/root_lv
注意:缓存设备需为高性能存储(如SSD),且需备份重要数据。
I/O调度器决定磁盘请求的处理顺序,不同工作负载适合不同的调度器:
# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 临时修改(如改为Deadline)
echo deadline > /sys/block/sda/queue/scheduler
# 永久修改(编辑/etc/default/grub,添加 elevator=deadline)
grub2-mkconfig -o /boot/grub2/grub.cfg
通过修改/etc/fstab中的挂载选项,可减少不必要的磁盘写操作:
/dev/mapper/centos-root / ext4 defaults,noatime,data=writeback 0 1
注意:noatime可能影响某些依赖访问时间的应用(如邮件服务器),需根据场景调整。
定期清理系统垃圾文件可释放磁盘空间,常用命令:
yum clean all 或 dnf clean all;package-cleanup --oldkernels --count=1(保留最新1个内核);du -sh /* | sort -h(按大小排序);find / -type f -size +100M -exec ls -lh {} \;(查找大于100MB的文件);journalctl --vacuum-size=100M(限制日志大小为100MB)。通过监控工具实时了解磁盘使用情况,避免空间耗尽导致系统故障:
df -h(查看分区使用情况)、du -sh *(查看目录大小)、iostat -x 1(查看磁盘I/O性能);