第 9/30 天
引言
磁盘管理是 Linux 系统管理员的核心技能之一。无论你是为 Ubuntu 服务器添加新硬盘、扩展现有分区,还是配置复杂的存储架构,掌握磁盘与文件系统管理都是必不可少的。今天,我们将从最基础的磁盘查看命令开始,逐步深入到分区创建、格式化、挂载,最后探索 LVM(逻辑卷管理)这一强大的存储虚拟化技术。
核心概念
磁盘与分区
在 Linux 中,一切皆文件——磁盘设备也不例外。SATA 硬盘通常表示为 /dev/sda、/dev/sdb,NVMe 固态硬盘表示为 /dev/nvme0n1、/dev/nvme1n1。分区则在设备名后追加数字,如 /dev/sda1、/dev/sda2。
文件系统类型
Linux 支持多种文件系统,各有适用场景:
| 文件系统 | 适用场景 | 最大文件大小 | 最大分区大小 |
|---|---|---|---|
| ext4 | Linux 通用 | 16TB | 1EB |
| XFS | 大文件、高性能 | 8EB | 8EB |
| Btrfs | 快照、压缩、RAID | 16EB | 16EB |
| ZFS | 企业级存储 | 16EB | 256ZB |
| NTFS | 与 Windows 兼容 | 16EB | 256TB |
MBR 与 GPT
MBR(传统主引导记录)和 GPT(GUID 分区表)是两种分区表格式:
- MBR:支持最多 4 个主分区,最大磁盘 2TB,兼容性最好
- GPT:支持最多 128 个分区,磁盘可达 9.4ZB,支持 UEFI 启动,是现代系统的首选
实战步骤
步骤 1:查看磁盘信息
首先,使用 lsblk 查看系统磁盘布局:
# 树形结构显示所有块设备
lsblk
# 输出示例
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.5G 0 part /boot
└─sda3 8:3 0 38.5G 0 part
└─sda3_crypt
253:0 0 38.4G 0 crypt
├─ubuntu--vg-root
│ 253:1 0 35.4G 0 lvm /
└─ubuntu--vg-swap
253:2 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
lsblk 输出一目了然:sda 是系统盘,包含了加密 LVM 结构;sdb 是一块空的数据盘,有一个分区但未挂载。
更详细的磁盘信息可以用 fdisk -l 查看:
sudo fdisk -l /dev/sdb
# 输出示例
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 12345678-1234-1234-1234-123456789ABC
Device Start End Sectors Size Type
/dev/sdb1 2048 41943006 41940959 20G Linux filesystem
步骤 2:创建新分区
使用 fdisk 或 gdisk(GPT 专用)来创建分区。假设我们有一块新硬盘 /dev/sdc:
# 交互式分区工具
sudo fdisk /dev/sdc
# 在 fdisk 交互界面中依次输入:
# n → 新建分区
# p → 主分区
# 1 → 分区号 1
# 回车 → 默认起始扇区
# +10G → 分区大小 10GB
# w → 写入并退出
# 验证分区结果
sudo fdisk -l /dev/sdc
# 输出示例
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 20973567 20971520 10G 83 Linux
提示:
fdisk是交互式工具,对新手不太友好。如果需要非交互式操作,可以使用parted:
bash
sudo parted /dev/sdc mklabel gpt
sudo parted /dev/sdc mkpart primary ext4 0% 100%
步骤 3:格式化文件系统
分区创建完成后,需要用 mkfs 创建文件系统:
# 格式化为 ext4
sudo mkfs.ext4 /dev/sdc1
# 输出示例
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# 格式化为 XFS(需要先安装 xfsprogs)
sudo apt install xfsprogs -y
sudo mkfs.xfs /dev/sdc2
# 格式化为 Btrfs
sudo apt install btrfs-progs -y
sudo mkfs.btrfs /dev/sdc3
步骤 4:挂载与卸载文件系统
创建好文件系统后,需要挂载到某个目录才能使用:
# 创建挂载点
sudo mkdir -p /mnt/data
# 手动挂载
sudo mount /dev/sdc1 /mnt/data
# 查看挂载信息
df -h /mnt/data
# 输出示例
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 9.8G 24K 9.3G 1% /mnt/data
# 查看详细挂载参数
mount | grep /mnt/data
# 卸载
sudo umount /mnt/data
自动挂载:编辑 /etc/fstab
要让系统启动时自动挂载,需要编辑 /etc/fstab 文件。建议使用 UUID 而非设备名,因为设备名可能变化:
# 查看 UUID
sudo blkid /dev/sdc1
# 输出示例
/dev/sdc1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="abcdef01-02"
# 在 /etc/fstab 中添加一行
echo 'UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
# 验证 fstab 配置(不会报错就是成功)
sudo mount -a
/etc/fstab 字段说明:
| 字段 | 含义 | 示例值 |
|---|---|---|
| 设备 | UUID 或设备路径 | UUID=... 或 /dev/sdc1 |
| 挂载点 | 目录路径 | /mnt/data |
| 文件系统 | fs 类型 | ext4, xfs, btrfs |
| 挂载选项 | 逗号分隔 | defaults, noatime |
| 转储 | 是否备份 | 0(不备份), 1(备份) |
| 检查顺序 | fsck 顺序 | 0(不检查), 1(根分区), 2(其他) |
步骤 5:LVM——逻辑卷管理实战
LVM(Logical Volume Manager)是 Linux 下强大的存储管理方案,它允许你在不中断服务的情况下动态调整分区大小。LVM 的架构分为三层:
物理卷 (PV) → 卷组 (VG) → 逻辑卷 (LV)
安装 LVM
sudo apt update
sudo apt install lvm2 -y
创建 LVM
# 1. 准备物理卷(假设有 /dev/sdd 和 /dev/sde 两块硬盘)
sudo pvcreate /dev/sdd /dev/sde
# 查看物理卷
sudo pvs
# 输出示例
PV VG Fmt Attr PSize PFree
/dev/sdd lvm2 --- 20.00g 20.00g
/dev/sde lvm2 --- 30.00g 30.00g
# 2. 创建卷组
sudo vgcreate data_vg /dev/sdd /dev/sde
# 查看卷组
sudo vgs
# 输出示例
VG #PV #LV #SN Attr VSize VFree
data_vg 2 0 0 wz--n- 49.99g 49.99g
# 3. 创建逻辑卷(分配 50GB 中的 30GB)
sudo lvcreate -L 30G -n data_lv data_vg
# 查看逻辑卷
sudo lvs
# 输出示例
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_lv data_vg -wi-a----- 30.00g
# 4. 格式化并挂载逻辑卷
sudo mkfs.ext4 /dev/data_vg/data_lv
sudo mkdir -p /mnt/lvm_data
sudo mount /dev/data_vg/data_lv /mnt/lvm_data
df -h /mnt/lvm_data
在线扩展逻辑卷
LVM 的最大优势是可以在线扩容而不卸载文件系统:
# 假设数据增长,需要从 30GB 扩展到 45GB
# 卷组中还有 20GB 可用空间
# 扩展逻辑卷(增加 15GB)
sudo lvextend -L +15G /dev/data_vg/data_lv
# 或者直接扩展到指定大小
sudo lvextend -L 45G /dev/data_vg/data_lv
# 调整文件系统大小(ext4 用 resize2fs,XFS 用 xfs_growfs)
sudo resize2fs /dev/data_vg/data_lv
# 验证
df -h /mnt/lvm_data
# 输出示例
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/data_vg-data_lv 44G 24K 42G 1% /mnt/lvm_data
添加新硬盘到卷组
# 新硬盘 /dev/sdf 加入卷组
sudo pvcreate /dev/sdf
sudo vgextend data_vg /dev/sdf
# 现在卷组空间增加了,可以继续扩展逻辑卷
sudo vgs
# 输出示例
VG #PV #LV #SN Attr VSize VFree
data_vg 3 1 0 wz--n- 69.99g 24.99g
常见问题
Q1:挂载时提示 “mount: unknown filesystem type”
# 确认文件系统类型
sudo blkid /dev/sdc1
# 安装对应的文件系统工具
sudo apt install xfsprogs btrfs-progs exfatprogs ntfs-3g -y
Q2:分区表损坏,数据丢失
# 使用 testdisk 恢复分区表
sudo apt install testdisk -y
sudo testdisk /dev/sdb
Q3:磁盘空间不足,但卷组中还有空间
这是 LVM 的典型优势——直接在线扩展即可,无需卸载服务:
sudo lvextend -r -L +10G /dev/data_vg/data_lv
# -r 参数会自动调整文件系统大小,一步到位
Q4:/etc/fstab 写错导致无法启动
在 GRUB 启动菜单按 e 编辑内核参数,在 linux 行末尾添加 single 或 emergency 进入单用户模式,修复 fstab。
或者用 Live USB 启动,挂载根分区后修复:
sudo mount /dev/sda3 /mnt
sudo nano /mnt/etc/fstab # 修复错误行
sudo umount /mnt
reboot
总结
今天我们学习了 Ubuntu 磁盘与文件系统管理的核心技能:
| 工具 | 用途 | 关键命令 |
|---|---|---|
| lsblk | 查看磁盘布局 | lsblk / lsblk -f |
| fdisk / gdisk | 分区管理 | fdisk /dev/sdX / gdisk /dev/sdX |
| mkfs | 创建文件系统 | mkfs.ext4 / mkfs.xfs / mkfs.btrfs |
| mount / umount | 挂载/卸载 | mount / umount / mount -a |
| blkid | 查看 UUID | blkid /dev/sdX1 |
| pvcreate / vgcreate / lvcreate | LVM 管理 | 三层架构:PV → VG → LV |
| lvextend / resize2fs | 在线扩容 | lvextend -L +10G + resize2fs |
核心要点:优先使用 GPT 分区表(而非 MBR),通过 UUID 在 /etc/fstab 中配置自动挂载,对生产环境强烈推荐使用 LVM 以便灵活扩容。下一期我们将深入 Ubuntu 的网络配置,从基本的 IP 设置到防火墙规则,让你的机器安全接入互联网。
系列目录
| 天数 | 标题 | 链接 |
|---|---|---|
| 第 1 天 | Ubuntu 简介与版本选择 | 阅读 |
| 第 2 天 | 手把手安装 Ubuntu | 阅读 |
| 第 3 天 | Ubuntu 桌面环境初探 | 阅读 |
| 第 4 天 | Ubuntu 终端基础 | 阅读 |
| 第 5 天 | 用户与权限管理 | 阅读 |
| 第 6 天 | 软件包管理 | 阅读 |
| 第 7 天 | 文件与文本操作 | 阅读 |
| 第 8 天 | 系统服务管理 | 阅读 |
| 第 9 天 | 磁盘与文件系统管理 | ← 今日发布 |















暂无评论内容