磁盘管理 #

磁盘基础 #

存储概念 #

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

小结 #

通过本节学习,你应该掌握:

  1. 磁盘基础:物理磁盘、分区、文件系统
  2. df:查看磁盘空间使用
  3. du:查看目录大小
  4. lsblk:列出块设备
  5. fdisk:分区管理
  6. mkfs:创建文件系统
  7. mount:挂载文件系统

下一步,我们将学习系统监控命令。

最后更新:2026-04-11