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磁盘了!
💡 提示:在生产环境中操作前,务必在测试环境验证命令,并确保有完整的数据备份!