Linux 磁盘管理和文件系统是系统管理员的核心技能,涉及磁盘分区、格式化、挂载和维护等操作。
磁盘分区:
- fdisk:传统的磁盘分区工具
- 查看分区:fdisk -l
- 进入交互模式:fdisk /dev/sdb
- 常用命令:n(新建分区)、p(打印分区表)、d(删除分区)、w(保存并退出)、q(不保存退出)
- parted:现代磁盘分区工具,支持 GPT 分区表
- 查看分区:parted -l
- 进入交互模式:parted /dev/sdb
- 创建分区:mkpart primary ext4 1MiB 100%
- 设置分区表:mklabel gpt
- lsblk:列出块设备信息
- blkid:查看块设备 UUID 和文件系统类型
文件系统:
- 常见文件系统类型:ext4、xfs、btrfs、ntfs、vfat
- mkfs:创建文件系统,如 mkfs.ext4 /dev/sdb1、mkfs.xfs /dev/sdb1
- mkfs.ext4:创建 ext4 文件系统
- mkfs.xfs:创建 xfs 文件系统
磁盘挂载:
- mount:挂载文件系统,如 mount /dev/sdb1 /mnt/data
- umount:卸载文件系统,如 umount /mnt/data
- 查看挂载点:mount、df -h
- /etc/fstab:自动挂载配置文件
- 格式:设备 挂载点 文件系统类型 挂载选项 dump fsck
- 示例:/dev/sdb1 /mnt/data ext4 defaults 0 2
- 使用 UUID:UUID=xxx /mnt/data ext4 defaults 0 2(推荐)
- 查看设备 UUID:blkid /dev/sdb1
磁盘空间管理:
- df:查看磁盘空间使用情况,df -h(人类可读格式)
- du:查看目录或文件大小,du -sh directory(显示目录总大小)
- du -h --max-depth=1 /:查看根目录下各目录的大小
- 清理磁盘空间:
- 清理包缓存:apt clean(Debian/Ubuntu)、yum clean all(CentOS/RHEL)
- 清理旧日志:logrotate
- 查找大文件:find / -type f -size +100M
LVM(逻辑卷管理):
- pvcreate:创建物理卷,如 pvcreate /dev/sdb1
- vgcreate:创建卷组,如 vgcreate vgname /dev/sdb1
- lvcreate:创建逻辑卷,如 lvcreate -L 10G -n lvname vgname
- lvextend:扩展逻辑卷,如 lvextend -L +5G /dev/vgname/lvname
- lvreduce:缩减逻辑卷,如 lvreduce -L -5G /dev/vgname/lvname
- resize2fs:调整 ext4 文件系统大小,如 resize2fs /dev/vgname/lvname
- xfs_growfs:扩展 xfs 文件系统
- pvdisplay、vgdisplay、lvdisplay:查看物理卷、卷组、逻辑卷信息
RAID(磁盘阵列):
- mdadm:管理软件 RAID
- 创建 RAID 0:mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
- 创建 RAID 1:mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
- 创建 RAID 5:mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
- 查看 RAID 状态:cat /proc/mdstat、mdadm --detail /dev/md0
磁盘性能优化:
- 使用 SSD:提高 I/O 性能
- 调整 I/O 调度器:echo deadline > /sys/block/sda/queue/scheduler
- 增加文件系统块大小:mkfs.ext4 -b 4096 /dev/sdb1
- 使用 noatime 挂载选项:减少磁盘写入
- 启用文件系统日志:提高数据安全性
磁盘故障排查:
- 查看磁盘健康:smartctl -a /dev/sda(需要安装 smartmontools)
- 查看磁盘 I/O:iostat -x 1
- 查看磁盘错误:dmesg | grep -i error
- 修复文件系统:fsck /dev/sdb1(需要先卸载)