一、磁盘的“体检”与“上架”:从识别到分区
新服务器到手,或者需要扩容时,第一件事就是摸清磁盘的“家底”。
1. 识别磁盘与查看信息
我最常用的命令是 lsblk,它能以清晰的树状结构列出所有块设备,直观展示磁盘、分区以及挂载点的关系。
lsblk -f # 同时显示文件系统类型和UUID
fdisk -l 或 parted -l 则提供更详细的磁盘分区表信息,对于判断磁盘是MBR还是GPT格式非常有用。
经验之谈:曾经在一次数据迁移中,我误将系统盘的标识符(如 /dev/sda)当成了新加的数据盘,险些酿成大错。自那以后,我养成了一个习惯:在执行任何磁盘操作前,务必用 lsblk 和 fdisk -l 交叉核对磁盘容量、型号和现有分区,确认无误后再进行下一步。
2. 磁盘分区
对于小于2TB的磁盘,传统的 fdisk 工具足够。但对于现代大容量磁盘,我首选 parted,因为它原生支持GPT分区表。
parted /dev/sdb mklabel gpt # 创建GPT分区表
parted /dev/sdb mkpart primary ext4 0% 100% # 创建一个占用全部空间的主分区
使用 parted 时,单位建议使用百分比或更精确的 MiB/GiB,避免扇区计算带来的误差。
二、文件系统的“格式化”与“落户”:创建与挂载
分区完成后,需要为其“装修”上合适的文件系统,并“落户”到目录树上。
1. 创建文件系统
最常用的命令是 mkfs。根据需求选择不同的“装修风格”:
mkfs.ext4 /dev/sdb1 # 创建ext4文件系统,通用稳定
mkfs.xfs /dev/sdb1 # 创建XFS文件系统,适合大文件和高并发
对于需要快照功能的场景,我会考虑 btrfs 或 zfs,但它们的运维复杂度也更高,选用前需评估团队技术储备。
踩坑记录:有一次紧急扩容,我直接用 mkfs.ext4 格式化了一个包含旧数据的分区,导致数据丢失。血的教训:任何 mkfs 操作前,必须三重确认设备路径,并确保数据已备份或无需保留。
2. 持久化挂载
临时挂载用 mount,但要让系统重启后自动挂载,必须设置 /etc/fstab。
# 获取分区的UUID,比设备名更稳定
blkid /dev/sdb1
# 在 /etc/fstab 中添加一行,比如:
UUID=12345678-9abc-def0-1234-56789abcdef0 /data ext4 defaults 0 2
关键点:fstab 设置错误可能导致系统无法启动。一个重要的防护措施是,在修改 fstab 后,先执行 mount -a 测试设置是否正确,而不要直接重启。
三、日常“保养”与“巡检”:监控与维护
磁盘和文件系统并非一劳永逸,需要定期检查和维护。
1. 空间使用监控
df 命令是查看磁盘空间使用情况的首选。
df -h # 以人类可读格式显示
df -i # 查看inode使用情况,小文件多的场景要特别注意
我曾遇到一个告警:df -h 显示空间充足,但应用却报“磁盘空间不足”。原来是 df -i 显示的inode耗尽了。所以,监控脚本中必须同时包含空间和inode的检查。
2. 目录空间分析
当发现空间不足时,du 命令是定位“罪魁祸首”的利器。
du -sh /var/log/* # 查看/var/log下各子目录大小
du -x --max-depth=1 -h / # 从根目录开始,逐层分析大目录
结合 sort 命令可以快速排序:du -sm /data/* | sort -rn | head -10。
3. 文件系统健康检查与修复
ext4 文件系统可以用 fsck 进行检查和修复(务必在卸载状态下进行!)。
umount /dev/sdb1
fsck -y /dev/sdb1 # -y 自动确认修复
对于XFS文件系统,则使用 xfs_repair。定期检查(尤其在非正常关机后)是预防文件系统损坏的最佳实践。
四、进阶“扩容”与“调优”:应对业务增长
业务增长,存储空间和性能需求也随之而来。
1. 在线扩容
这是最常遇到的场景。逻辑卷管理器(LVM)为此提供了极大便利。
# 1. 扩展物理卷(假设新磁盘为/dev/sdc)
pvcreate /dev/sdc
vgextend myvg /dev/sdc
# 2. 扩展逻辑卷
lvextend -L +500G /dev/myvg/mylv
# 3. 扩展文件系统(以ext4为例)
resize2fs /dev/myvg/mylv
重要提示:步骤3(扩展文件系统)是关键,否则新增空间无法被使用。不同文件系统命令不同(XFS用 xfs_growfs)。
2. 性能优化
根据负载调整文件系统挂载参数可以提升性能。比如,对于写密集型的数据库日志目录,可以在挂载时添加 noatime,nodiratime 选项减少元数据更新开销。SSD磁盘可以考虑启用 discard 选项以支持TRIM功能。
优化前,建议通过 iostat -x 1 等工具监控磁盘IO状况,做到有的放矢。
五、总结与工具箱清单
回顾这些年的运维生涯,文件系统与磁盘管理看似基础,却处处是细节。一个疏忽就可能带来服务中断甚至数据丢失。我养成了以下习惯:
- 操作前备份:关键数据操作前,Snapshot或备份是“保命符”。
- 操作中确认:对命令行中的每一个设备名、路径都保持警惕。
- 操作后验证:执行完命令后,用
lsblk、df 等验证结果是否符合预期。
最后,将我日常最常用的命令工具箱整理如下,供大家参考:
- 信息查看:
lsblk, fdisk -l, blkid, df, mount - 文件系统:
mkfs, fsck, resize2fs, xfs_growfs - LVM管理:
pvcreate/vgcreate/lvcreate, pvs/vgs/lvs, vgextend/lvextend
掌握这些工具和背后的原理,就像拥有了应对存储问题的地图和指南针。它们能帮助我们在复杂的运维世界里,保持清晰的方向和从容的心态。希望我的这些经验分享,能为你带来一些启发和帮助。运维之路,道阻且长,我们下一篇工具箱再见。
👨💻 运维经验:根据