Linux 磁盘管理完全指南 🐧💾
一张图看懂 fdisk → mkfs → mount → fstab 全流程
新手也能 5 分钟上手!从基础概念到实战操作,全面掌握 Linux 磁盘管理技巧
📋 目录
一、磁盘管理基础概念 📌
| 概念 |
示例路径 |
说明 |
| 物理磁盘 |
/dev/sda |
第一块 SATA/SCSI 硬盘 |
| NVMe 磁盘 |
/dev/nvme0n1 |
第一块 NVMe 固态硬盘 |
| 分区 |
/dev/sda1 |
第一块硬盘第 1 分区 |
| 逻辑卷 |
/dev/mapper/vg-lv |
LVM 逻辑卷 |
| 光盘 |
/dev/sr0 |
光驱设备 |
| USB 设备 |
/dev/sdb1 |
USB 设备第一个分区 |
🔍 设备命名规则
- SATA/SCSI/SAS:
/dev/sd[a-z] (sda, sdb, sdc…)
- NVMe:
/dev/nvme[0-9]n[0-9] (nvme0n1, nvme0n2…)
- 虚拟设备:
/dev/vd[a-z] (vda, vdb…)
- 软RAID:
/dev/md[0-9] (md0, md1…)
📊 磁盘类型对比
| 类型 |
特点 |
适用场景 |
| HDD |
容量大,价格低,速度慢 |
数据存储,备份 |
| SSD |
速度快,价格高,寿命有限 |
系统盘,常用应用 |
| NVMe |
极速,低延迟,价格高 |
高性能需求,数据库 |
二、fdisk —— 磁盘分区利器 🛠️
1. 查看磁盘列表
1 2 3
| sudo fdisk -l sudo fdisk -l /dev/sdb sudo fdisk -l | grep -i "disk /dev"
|
2. 交互式分区(MBR 示例)
| 按键 |
功能 |
说明 |
m |
帮助 |
显示所有命令 |
p |
打印分区表 |
显示当前分区情况 |
n |
新建分区 |
创建新分区 |
d |
删除分区 |
删除现有分区 |
t |
更改分区类型 |
修改分区ID |
w |
保存退出 |
保存更改并退出 |
q |
不保存退出 |
放弃更改并退出 |
3. 非交互式分区
1 2 3 4 5
| echo -e "n\np\n1\n\n+20G\nw" | sudo fdisk /dev/sdb
echo 'start=2048, size=20971520, type=83' | sudo sfdisk /dev/sdb
|
4. GPT 分区表
对于大于 2TB 的磁盘,使用 GPT 分区表:
1 2 3 4 5
| sudo parted /dev/sdb mklabel gpt
sudo gdisk /dev/sdb
|
三、mkfs —— 格式化文件系统 ✨
常用文件系统对比
| 文件系统 |
特点 |
适用场景 |
ext4 |
稳定,兼容性好,日志式 |
通用文件系统 |
xfs |
高性能,大文件支持好 |
大文件存储,服务器 |
btrfs |
快照,压缩,RAID支持 |
高级功能需求 |
vfat |
兼容性好,无权限控制 |
USB设备,跨平台 |
ntfs |
Windows兼容,大文件支持 |
Windows数据交换 |
快速格式化命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo mkfs.ext4 -L Data /dev/sdb1
sudo mkfs.xfs -f /dev/sdb1
sudo mkfs.btrfs -f /dev/sdb1
sudo mkfs.vfat -F 32 /dev/sdb1
sudo mkfs.ntfs -f /dev/sdb1
sudo fsck /dev/sdb1
|
高级格式化选项
1 2 3 4 5 6 7 8 9 10 11
| sudo mkfs.ext4 -b 4096 /dev/sdb1
sudo mkfs.ext4 -m 2 /dev/sdb1
sudo mkfs.ext4 -N 50000 /dev/sdb1
sudo mkfs.ext4 -F /dev/sdb1
|
四、mount / umount —— 挂载与卸载 🔄
1. 临时挂载
1 2 3 4 5 6 7 8
| sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
df -h /mnt/data
|
2. 常用挂载选项
| 选项 |
说明 |
示例 |
ro / rw |
只读 / 读写 |
mount -o ro /dev/sdb1 /mnt/data |
noexec |
禁止执行 |
mount -o noexec /dev/sdb1 /mnt/data |
nosuid |
忽略SUID位 |
mount -o nosuid /dev/sdb1 /mnt/data |
nodev |
忽略设备文件 |
mount -o nodev /dev/sdb1 /mnt/data |
sync / async |
同步 / 异步写 |
mount -o sync /dev/sdb1 /mnt/data |
defaults |
默认选项 |
mount -o defaults /dev/sdb1 /mnt/data |
noatime |
不更新访问时间 |
mount -o noatime /dev/sdb1 /mnt/data |
1 2 3 4 5
| sudo mount -o remount,ro /mnt/data
sudo mount -o noatime,nodiratime,noexec /dev/sdb1 /mnt/data
|
3. 卸载
1 2 3 4 5 6
| sudo umount /dev/sdb1 sudo umount /mnt/data
sudo umount -f /mnt/data sudo umount -l /mnt/data
|
若提示 “device is busy”,使用以下命令查找占用进程:
1 2 3 4 5 6
| sudo lsof /mnt/data sudo fuser -vm /mnt/data
sudo fuser -k /mnt/data
|
五、/etc/fstab —— 开机自动挂载 📜
1. fstab 文件格式
1
| <设备标识> <挂载点> <文件系统> <选项> <dump> <fsck>
|
| 字段 |
说明 |
示例 |
| 设备标识 |
设备路径或UUID |
/dev/sdb1 或 UUID=1234-5678 |
| 挂载点 |
挂载目录 |
/mnt/data |
| 文件系统 |
文件系统类型 |
ext4, xfs, ntfs |
| 选项 |
挂载选项 |
defaults, noatime |
| dump |
备份标志 |
0 (不备份) 或 1 (备份) |
| fsck |
检查顺序 |
0 (不检查), 1 (根分区), 2 (其他) |
2. 配置示例
1 2 3 4 5 6 7 8 9 10 11 12
| sudo blkid /dev/sdb1
sudo nano /etc/fstab
UUID=1234-5678 /mnt/data ext4 defaults,noatime 0 2
sudo mount -a
|
3. 特殊文件系统配置
1 2 3 4 5 6 7 8 9 10 11
| /dev/sdb2 none swap sw 0 0
tmpfs /tmp tmpfs defaults,noatime,size=2G 0 0
nfs-server:/export/data /mnt/data nfs defaults 0 0
//server/share /mnt/data cifs credentials=/etc/smbcreds,uid=1000,gid=1000 0 0
|
六、lsblk / blkid / df / du 辅助命令 🔍
1. lsblk - 列出块设备
1 2 3 4
| lsblk lsblk -f lsblk -o NAME,SIZE,TYPE,MOUNTPOINT lsblk -d -o NAME,ROTA,SIZE
|
2. blkid - 查看块设备属性
1 2 3 4
| blkid blkid /dev/sdb1 blkid -s UUID /dev/sdb1 blkid -s TYPE /dev/sdb1
|
3. df - 磁盘空间使用情况
1 2 3 4
| df -h df -h /mnt/data df -i df -T
|
4. du - 目录空间使用情况
1 2 3 4
| du -sh /mnt/data du -sh * du -h --max-depth=1 /mnt du -ah /mnt/data | sort -rh | head -10
|
5. 其他有用命令
1 2 3 4 5 6 7 8 9 10
| sudo smartctl -a /dev/sda
sudo hdparm -Tt /dev/sda sudo dd if=/dev/zero of=/tmp/test bs=1M count=1024 conv=fdatasync
iostat -x 1 iotop
|
七、实战案例:新硬盘一条龙 🚀
场景:添加一块新硬盘并配置为数据盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| lsblk
sudo parted /dev/sdc mklabel gpt sudo parted /dev/sdc mkpart primary 0% 100%
sudo mkfs.ext4 -L Data /dev/sdc1
sudo mkdir -p /mnt/data
sudo mount /dev/sdc1 /mnt/data
sudo chown -R $USER:$USER /mnt/data sudo chmod -R 755 /mnt/data
echo "UUID=$(sudo blkid -s UUID -o value /dev/sdc1) /mnt/data ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
sudo mount -a && df -h /mnt/data
echo "测试数据" > /mnt/data/test.txt cat /mnt/data/test.txt
|
高级场景:使用LVM管理多块硬盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sudo apt install lvm2
sudo pvcreate /dev/sdc1 /dev/sdd1
sudo vgcreate data_vg /dev/sdc1 /dev/sdd1
sudo lvcreate -n data_lv -l 100%FREE data_vg
sudo mkfs.ext4 /dev/data_vg/data_lv
sudo mkdir /mnt/data sudo mount /dev/data_vg/data_lv /mnt/data echo "/dev/mapper/data_vg-data_lv /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab
|
八、安全与最佳实践 ⚠️
1. 数据安全
- 定期备份:重要数据至少保留3个副本
- 使用RAID:对于重要数据,使用RAID 1/5/6/10
- 快照功能:使用LVM或btrfs定期创建快照
- 加密敏感数据:使用LUKS加密磁盘
1 2 3 4 5
| sudo cryptsetup luksFormat /dev/sdb1 sudo cryptsetup open /dev/sdb1 encrypted_drive sudo mkfs.ext4 /dev/mapper/encrypted_drive sudo mount /dev/mapper/encrypted_drive /mnt/secure
|
2. 性能优化
- 选择合适的文件系统:根据使用场景选择ext4/xfs/btrfs
- 调整挂载选项:使用noatime,nodiratime提升性能
- 合理分区:分离系统、数据和日志到不同分区
- 定期维护:使用fsck检查文件系统,defrag整理碎片
3. 监控与预警
1 2 3 4 5 6 7 8
|
0 0 * * * df -h | awk '$5+0 > 80 {print "警告: "$6" 使用率超过80%"}'
sudo apt install smartmontools sudo smartctl -H /dev/sda
|
4. 故障恢复
- 保留救援系统:准备Live CD/USB以备不时之需
- 备份分区表:使用sfdisk备份分区表
1 2 3 4 5
| sudo sfdisk -d /dev/sda > sda-partition-backup.txt
sudo sfdisk /dev/sda < sda-partition-backup.txt
|
九、速查表 🗂️
常用命令速查
| 场景 |
命令 |
| 查看磁盘 |
lsblk -f, fdisk -l |
| 分区 |
fdisk /dev/sdX, parted /dev/sdX |
| 格式化 |
mkfs.ext4 /dev/sdX1, mkfs.xfs /dev/sdX1 |
| 挂载 |
mount /dev/sdX1 /mnt/point |
| 卸载 |
umount /mnt/point |
| 开机挂载 |
编辑 /etc/fstab |
| 检查修复 |
fsck -f /dev/sdX1 |
| 空间查看 |
df -h, du -sh |
故障排除速查
| 问题 |
解决方案 |
| 设备忙无法卸载 |
lsof /mnt/point, fuser -k /mnt/point |
| 文件系统损坏 |
fsck -y /dev/sdX1 |
| 无法挂载 |
`dmesg \ |
tail` 查看错误信息 |
| 空间不足 |
清理文件或调整分区大小 |
| 性能问题 |
调整挂载选项,检查磁盘健康 |
扩展学习资源
🎯 一句话总结:
分区 → 格式化 → 挂载三步走,fstab 保终身!
掌握这些技能,你就能轻松管理Linux磁盘了!
💡 提示:在生产环境中操作前,务必在测试环境验证命令,并确保有完整的数据备份!