磁盘管理 #
磁盘基础 #
存储概念 #
text
┌─────────────────────────────────────────────────────────────┐
│ 存储层次 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 物理磁盘 │
│ ├── HDD(机械硬盘) │
│ ├── SSD(固态硬盘) │
│ └── NVMe │
│ │
│ 分区 │
│ ├── 主分区 │
│ ├── 扩展分区 │
│ └── 逻辑分区 │
│ │
│ 文件系统 │
│ ├── ext4(Linux 默认) │
│ ├── xfs(大文件支持) │
│ ├── btrfs(高级特性) │
│ └── ntfs(Windows) │
│ │
│ 挂载点 │
│ └── 将文件系统关联到目录 │
│ │
└─────────────────────────────────────────────────────────────┘
df - 查看磁盘空间 #
基本用法 #
bash
# 查看磁盘使用情况
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 51475068 8234560 40619208 17% /
# 人类可读格式
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 7.9G 39G 17% /
# 显示所有文件系统
$ df -a
# 只显示本地文件系统
$ df -hl
常用选项 #
bash
# -h 人类可读格式
$ df -h
# -H 以 1000 为单位
$ df -H
# -T 显示文件系统类型
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 51475068 8234560 40619208 17% /
# -t 只显示指定类型
$ df -t ext4
# -x 排除指定类型
$ df -x tmpfs
# -i 显示 inode 信息
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3276800 123456 3153344 4% /
# --total 显示总计
$ df -h --total
实用示例 #
bash
# 查看根分区使用情况
$ df -h /
# 查看所有挂载点
$ df -h | grep -v tmpfs
# 监控磁盘空间
$ watch -n 5 df -h
# 查找使用率超过 80% 的分区
$ df -h | awk '$5 > 80 {print}'
du - 查看目录大小 #
基本用法 #
bash
# 查看目录大小
$ du
4 ./dir1
8 ./dir2
16 .
# 人类可读格式
$ du -h
4.0K ./dir1
8.0K ./dir2
16K .
# 只显示总计
$ du -sh
16K .
常用选项 #
bash
# -h 人类可读格式
$ du -h
# -s 只显示总计
$ du -sh directory/
# -a 显示所有文件
$ du -ah
# --max-depth 指定深度
$ du -h --max-depth=1
# -d 等同于 --max-depth
$ du -h -d 1
# --exclude 排除
$ du -h --exclude="*.log"
# --time 显示修改时间
$ du -h --time
# -c 显示总计
$ du -ch *.txt
实用示例 #
bash
# 查看当前目录大小
$ du -sh .
# 查看子目录大小
$ du -h --max-depth=1
# 查看最大的目录
$ du -h --max-depth=1 | sort -hr | head -10
# 查看文件大小
$ du -ah | sort -hr | head -10
# 排除特定目录
$ du -h --exclude=node_modules --exclude=.git
# 查看用户目录大小
$ du -sh /home/*
# 查看日志目录大小
$ du -sh /var/log/*
lsblk - 列出块设备 #
基本用法 #
bash
# 列出所有块设备
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 50G 0 part /
├─sda2 8:2 0 30G 0 part /home
└─sda3 8:3 0 20G 0 part [SWAP]
# 显示所有信息
$ lsblk -a
# 显示设备权限
$ lsblk -m
常用选项 #
bash
# -f 显示文件系统信息
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 a1b2c3d4-e5f6-7890-abcd-ef1234567890 /
├─sda2 ext4 b2c3d4e5-f6a7-8901-bcde-f12345678901 /home
└─sda3 swap c3d4e5f6-a7b8-9012-cdef-123456789012 [SWAP]
# -o 指定输出列
$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
# -l 列表格式
$ lsblk -l
# -d 只显示设备
$ lsblk -d
# -e 排除设备
$ lsblk -e 7 # 排除 loop 设备
# -S 只显示 SCSI 设备
$ lsblk -S
# -b 显示字节大小
$ lsblk -b
fdisk - 分区管理 #
查看分区 #
bash
# 查看所有分区
$ sudo fdisk -l
# 查看指定磁盘
$ sudo fdisk -l /dev/sda
分区操作 #
bash
# 进入分区工具
$ sudo fdisk /dev/sda
# 交互命令
m 显示帮助
p 显示分区表
n 新建分区
d 删除分区
t 修改分区类型
l 列出分区类型
w 保存并退出
q 不保存退出
# 创建新分区示例
$ sudo fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048):
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +10G
Command (m for help): w
mkfs - 创建文件系统 #
基本用法 #
bash
# 创建 ext4 文件系统
$ sudo mkfs.ext4 /dev/sdb1
# 创建 xfs 文件系统
$ sudo mkfs.xfs /dev/sdb1
# 创建 btrfs 文件系统
$ sudo mkfs.btrfs /dev/sdb1
# 创建 vfat 文件系统
$ sudo mkfs.vfat /dev/sdb1
常用选项 #
bash
# 指定卷标
$ sudo mkfs.ext4 -L "DATA" /dev/sdb1
# 指定块大小
$ sudo mkfs.ext4 -b 4096 /dev/sdb1
# 指定 inode 数量
$ sudo mkfs.ext4 -N 100000 /dev/sdb1
# 快速格式化
$ sudo mkfs.ext4 -F /dev/sdb1
mount - 挂载文件系统 #
基本用法 #
bash
# 挂载分区
$ sudo mount /dev/sdb1 /mnt/data
# 指定文件系统类型
$ sudo mount -t ext4 /dev/sdb1 /mnt/data
# 挂载 ISO 文件
$ sudo mount -o loop image.iso /mnt/iso
# 挂载网络共享
$ sudo mount -t cifs //server/share /mnt/share -o user=username
常用选项 #
bash
# -o 指定挂载选项
$ sudo mount -o ro /dev/sdb1 /mnt/data # 只读
$ sudo mount -o rw /dev/sdb1 /mnt/data # 读写
$ sudo mount -o noexec /dev/sdb1 /mnt/data # 禁止执行
# 常用挂载选项
ro 只读
rw 读写
exec 允许执行
noexec 禁止执行
suid 允许 SUID
nosuid 禁止 SUID
sync 同步 I/O
async 异步 I/O
noatime 不更新访问时间
nodiratime 不更新目录访问时间
# 查看已挂载的文件系统
$ mount
$ findmnt
卸载文件系统 #
bash
# 卸载
$ sudo umount /mnt/data
$ sudo umount /dev/sdb1
# 强制卸载
$ sudo umount -f /mnt/data
# 延迟卸载
$ sudo umount -l /mnt/data
# 查看占用进程
$ lsof /mnt/data
$ fuser -v /mnt/data
开机自动挂载 #
bash
# 编辑 /etc/fstab
$ sudo vim /etc/fstab
# 格式
# <device> <mount point> <type> <options> <dump> <pass>
/dev/sdb1 /mnt/data ext4 defaults 0 2
# 常用选项
defaults 默认选项(rw,suid,dev,exec,auto,nouser,async)
noauto 不自动挂载
user 允许普通用户挂载
nofail 挂载失败不报错
# 挂载所有
$ sudo mount -a
# 检查 fstab
$ sudo findmnt --verify
小结 #
通过本节学习,你应该掌握:
- 磁盘基础:物理磁盘、分区、文件系统
- df:查看磁盘空间使用
- du:查看目录大小
- lsblk:列出块设备
- fdisk:分区管理
- mkfs:创建文件系统
- mount:挂载文件系统
下一步,我们将学习系统监控命令。
最后更新:2026-04-11