磁盘、挂载、fstab
在 Ubuntu 26.04 中管理磁盘和分区是系统管理的核心技能。本文介绍如何查看磁盘信息、手动挂载分区以及通过 fstab 实现开机自动挂载。
查看磁盘和分区信息
lsblk - 列出块设备
# 基本用法
lsblk
# 输出示例:
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
# sda 8:0 0 500G 0 disk
# ├─sda1 8:1 0 512M 0 part /boot/efi
# ├─sda2 8:2 0 488G 0 part /
# └─sda3 8:3 0 11.5G 0 part [SWAP]
# sdb 8:16 0 2T 0 disk
# └─sdb1 8:17 0 2T 0 part
# 显示文件系统类型和 UUID
lsblk -f
# 显示更详细的信息
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID,LABEL其他磁盘信息工具
# 查看磁盘分区表
sudo fdisk -l
# 查看磁盘使用情况
df -h
# 查看某个目录的磁盘使用量
du -sh /var/log
# 查看所有分区的 UUID
sudo blkid分区操作
使用 fdisk 进行 MBR 分区
# 对 /dev/sdb 进行分区
sudo fdisk /dev/sdb
# fdisk 交互命令:
# n - 新建分区
# p - 显示分区表
# d - 删除分区
# t - 修改分区类型
# w - 写入并退出使用 gdisk 进行 GPT 分区
sudo apt install gdisk
sudo gdisk /dev/sdb使用 parted
# 交互模式
sudo parted /dev/sdb
# 非交互模式示例:创建 GPT 分区表和一个分区
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%格式化分区
# 格式化为 ext4
sudo mkfs.ext4 /dev/sdb1
# 格式化为 XFS
sudo mkfs.xfs /dev/sdb1
# 格式化为 Btrfs
sudo mkfs.btrfs /dev/sdb1
# 格式化为 NTFS(需要 ntfs-3g)
sudo mkfs.ntfs /dev/sdb1
# 设置卷标
sudo e2label /dev/sdb1 "DataDisk"挂载与卸载
mount - 挂载分区
# 创建挂载点
sudo mkdir -p /mnt/data
# 挂载分区
sudo mount /dev/sdb1 /mnt/data
# 以只读方式挂载
sudo mount -o ro /dev/sdb1 /mnt/data
# 挂载 ISO 文件
sudo mount -o loop ubuntu-26.04.iso /mnt/iso
# 挂载 NFS 共享
sudo mount -t nfs 192.168.1.100:/shared /mnt/nfs
# 挂载 CIFS/SMB 共享
sudo mount -t cifs //192.168.1.100/share /mnt/smb -o username=user,password=pass
# 查看当前所有挂载
mount | column -t
findmntumount - 卸载分区
# 卸载分区
sudo umount /mnt/data
# 如果设备正忙,查看占用进程
sudo lsof +f -- /mnt/data
sudo fuser -mv /mnt/data
# 强制卸载(慎用)
sudo umount -l /mnt/data # 延迟卸载
sudo umount -f /mnt/data # 强制卸载(NFS)/etc/fstab 自动挂载
Warning
/etc/fstab 中的配置错误(如 UUID 拼写错误、挂载点不存在)可能导致系统无法正常启动。编辑前务必备份(sudo cp /etc/fstab /etc/fstab.bak),修改后使用 sudo mount -a 和 sudo findmnt --verify 验证配置。对于非关键分区,建议添加 nofail 选项以防启动失败。
fstab 文件格式
/etc/fstab 定义了系统启动时自动挂载的分区。每行包含六个字段:
# <设备> <挂载点> <文件系统> <选项> <dump> <fsck>
UUID=xxxx-xxxx /mnt/data ext4 defaults 0 2各字段说明:
| 字段 | 说明 |
|---|---|
| 设备 | 分区标识,推荐使用 UUID |
| 挂载点 | 挂载到的目录路径 |
| 文件系统 | ext4、xfs、btrfs、ntfs 等 |
| 选项 | 挂载选项,多个选项用逗号分隔 |
| dump | 备份标志,通常为 0 |
| fsck | 开机检查顺序,根分区为 1,其他为 2,不检查为 0 |
获取 UUID
# 方法一:blkid
sudo blkid /dev/sdb1
# 输出:/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
# 方法二:lsblk
lsblk -f /dev/sdb1
# 方法三:ls 查看符号链接
ls -la /dev/disk/by-uuid/fstab 配置示例
# 编辑 fstab(修改前请先备份)
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab常见配置:
# ext4 数据分区
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults 0 2
# 带特定选项的挂载
UUID=b2c3d4e5-f6a7-8901-bcde-f12345678901 /mnt/ssd ext4 defaults,noatime,discard 0 2
# NTFS 分区(Windows 数据盘)
UUID=1234567890ABCDEF /mnt/windows ntfs-3g defaults,uid=1000,gid=1000,umask=022 0 0
# NFS 网络共享
192.168.1.100:/shared /mnt/nfs nfs defaults,_netdev 0 0
# tmpfs(内存文件系统)
tmpfs /tmp tmpfs defaults,noatime,size=2G 0 0
# swap 分区
UUID=c3d4e5f6-a7b8-9012-cdef-123456789012 none swap sw 0 0常用挂载选项
| 选项 | 说明 |
|---|---|
defaults | 等同于 rw,suid,dev,exec,auto,nouser,async |
noatime | 不更新访问时间,提升性能 |
nodiratime | 不更新目录访问时间 |
discard | 启用 TRIM(SSD 推荐) |
nofail | 设备不存在时不阻止启动 |
_netdev | 等待网络就绪后再挂载 |
ro | 只读挂载 |
noexec | 禁止执行二进制文件 |
nosuid | 忽略 SUID/SGID 位 |
验证 fstab 配置
# 挂载 fstab 中所有尚未挂载的分区(测试配置是否正确)
sudo mount -a
# 使用 findmnt 验证
sudo findmnt --verify
# 如果出错,可以恢复备份
sudo cp /etc/fstab.bak /etc/fstabSwap 管理
# 查看当前 swap
swapon --show
free -h
# 创建 swap 文件
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 添加到 fstab 使其持久化
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 关闭 swap
sudo swapoff /swapfileLVM 逻辑卷管理
# 安装 LVM 工具
sudo apt install lvm2
# 创建物理卷
sudo pvcreate /dev/sdb1
# 创建卷组
sudo vgcreate mydata /dev/sdb1
# 创建逻辑卷
sudo lvcreate -L 100G -n myvolume mydata
# 格式化和挂载
sudo mkfs.ext4 /dev/mydata/myvolume
sudo mount /dev/mydata/myvolume /mnt/data
# 在线扩展逻辑卷
sudo lvextend -L +50G /dev/mydata/myvolume
sudo resize2fs /dev/mydata/myvolume
# 查看 LVM 状态
sudo pvs
sudo vgs
sudo lvs故障排除
启动时 fstab 挂载失败
如果 fstab 配置有误导致无法启动,在 GRUB 恢复模式中:
# 以读写方式重新挂载根分区
mount -o remount,rw /
# 编辑并修复 fstab
nano /etc/fstab
# 重启
reboot磁盘空间不足排查
# 查看各分区使用情况
df -h
# 查找大文件
sudo find / -type f -size +100M -exec ls -lh {} \;
# 查看各目录占用空间(排序)
sudo du -sh /* | sort -rh | head -20
# 清理 APT 缓存
sudo apt clean
sudo apt autoremoveLast updated on