Skip to content

磁盘 ​

磁盘分区 ​

分区类型 ​

  1. 主分区:一块磁盘最多有 4 个主分区。
  2. 扩展分区:主分区少于 4 个时,可将一个主分区位置划为扩展分区(每盘只能有一个),扩展分区本身不存储数据,仅作为逻辑分区的容器。
  3. 逻辑分区:在扩展分区中建立,信息以链表形式存储,数量不受 4 个的限制。

MBR 分区表最大支持 2TB 磁盘;超过 2TB 需使用 GPT 分区表。

MBR vs GPT ​

特性MBRGPT
最大磁盘容量2 TB18 EB
最大分区数4 个主分区128 个分区(默认)
冗余备份无头部和尾部各一份表
引导方式BIOSUEFI(也兼容 BIOS)
分区标识分区类型字节GUID

分区工具 ​

fdisk(MBR) ​

bash
# 交互式分区
fdisk /dev/sda

# 常用交互命令
# m  帮助
# p  打印分区表
# n  新建分区
# d  删除分区
# t  修改分区类型
# w  写入并退出
# q  不保存退出

# 查看分区表
fdisk -l /dev/sda

gdisk(GPT) ​

bash
gdisk /dev/sda

# 交互命令与 fdisk 类似
# n  新建分区
# d  删除分区
# p  打印分区表
# w  写入并退出

parted(支持 MBR/GPT,可脚本化) ​

bash
parted /dev/sda print

# 创建 GPT 分区表
parted /dev/sda mklabel gpt

# 创建分区(起止以 MB 为单位)
parted /dev/sda mkpart primary ext4 1MiB 20GiB

# 非交互式
parted -s /dev/sda mkpart primary ext4 20GiB 50GiB

格式化(创建文件系统) ​

bash
# ext4 格式化
mkfs.ext4 /dev/sda1
mkfs -t ext4 /dev/sda1

# xfs
mkfs.xfs /dev/sda2

# btrfs
mkfs.btrfs /dev/sda3

# fat32(U盘等)
mkfs.vfat -F 32 /dev/sdb1

# 查看文件系统类型
blkid /dev/sda1
lsblk -f

挂载与卸载 ​

临时挂载 ​

bash
# 挂载
mount /dev/sda1 /mnt/data

# 指定文件系统类型
mount -t ext4 /dev/sda1 /mnt/data

# 只读挂载
mount -o ro /dev/sda1 /mnt/data

# 重新挂载为读写
mount -o remount,rw /dev/sda1

# 卸载
umount /mnt/data
umount /dev/sda1

# 强制卸载(有进程占用时)
umount -l /mnt/data    # lazy umount
umount -f /mnt/data    # 强制(NFS 等网络文件系统)

# 查看当前挂载
mount
cat /proc/mounts
findmnt

永久挂载(/etc/fstab) ​

格式:设备 挂载点 文件系统类型 挂载选项 dump fsck顺序

bash
# 查看设备 UUID
blkid /dev/sda1

# /etc/fstab 示例
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/data  ext4  defaults  0  2
/dev/sda2                                  swap       swap  sw        0  0
tmpfs                                      /tmp       tmpfs defaults,size=2G  0  0

常用挂载选项:

选项说明
defaultsrw, suid, dev, exec, auto, nouser, async
ro / rw只读 / 读写
noatime不更新访问时间(提高性能)
nodiratime不更新目录访问时间
noexec禁止执行程序
nosuid忽略 setuid/setgid 位
nofail挂载失败时不阻止系统启动
_netdev网络文件系统,等网络就绪后挂载
bash
# 挂载 fstab 中所有条目
mount -a

# 检查 fstab 语法
findmnt --verify

磁盘信息查看 ​

bash
# 列出块设备树形结构
lsblk
lsblk -f    # 含文件系统/UUID/挂载点

# 查看分区详细信息
fdisk -l
blkid

# 磁盘使用情况
df -h
df -Th      # 含文件系统类型

# 目录占用统计
du -sh /var/log/*
du -ahx / 2>/dev/null | sort -rh | head -20

# 查看磁盘 I/O 状态
iostat -x 1
iotop

磁盘健康检测 ​

bash
# 安装工具
apt install smartmontools

# 查看 SMART 状态
smartctl -a /dev/sda
smartctl -H /dev/sda    # 仅显示健康状态

# 短时自检(~2min)
smartctl -t short /dev/sda

# 长时自检(可能数小时)
smartctl -t long /dev/sda

# 查看自检结果
smartctl -l selftest /dev/sda

LVM(逻辑卷管理) ​

LVM 提供在物理磁盘之上的弹性存储管理。

物理磁盘/分区 → PV(物理卷) → VG(卷组) → LV(逻辑卷) → 文件系统
bash
# 初始化物理卷
pvcreate /dev/sdb /dev/sdc
pvdisplay

# 创建卷组
vgcreate myvg /dev/sdb /dev/sdc
vgdisplay

# 创建逻辑卷(10G)
lvcreate -L 10G -n mylv myvg
lvdisplay

# 格式化并挂载
mkfs.ext4 /dev/myvg/mylv
mount /dev/myvg/mylv /mnt/data

# 扩容逻辑卷(在线扩容)
lvextend -L +5G /dev/myvg/mylv
resize2fs /dev/myvg/mylv    # ext4 在线扩容
xfs_growfs /mnt/data        # xfs 在线扩容