磁盘
磁盘分区
分区类型
- 主分区:一块磁盘最多有 4 个主分区。
- 扩展分区:主分区少于 4 个时,可将一个主分区位置划为扩展分区(每盘只能有一个),扩展分区本身不存储数据,仅作为逻辑分区的容器。
- 逻辑分区:在扩展分区中建立,信息以链表形式存储,数量不受 4 个的限制。
MBR 分区表最大支持 2TB 磁盘;超过 2TB 需使用 GPT 分区表。
MBR vs GPT
| 特性 | MBR | GPT |
|---|---|---|
| 最大磁盘容量 | 2 TB | 18 EB |
| 最大分区数 | 4 个主分区 | 128 个分区(默认) |
| 冗余备份 | 无 | 头部和尾部各一份表 |
| 引导方式 | BIOS | UEFI(也兼容 BIOS) |
| 分区标识 | 分区类型字节 | GUID |
分区工具
fdisk(MBR)
bash
# 交互式分区
fdisk /dev/sda
# 常用交互命令
# m 帮助
# p 打印分区表
# n 新建分区
# d 删除分区
# t 修改分区类型
# w 写入并退出
# q 不保存退出
# 查看分区表
fdisk -l /dev/sdagdisk(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常用挂载选项:
| 选项 | 说明 |
|---|---|
defaults | rw, 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/sdaLVM(逻辑卷管理)
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 在线扩容