🎉 限时公测|限量体验29元4核8G39元8核16G云开发环境一个月,助力Vibe Coding新时代!

Linux 磁盘管理 - 分区、格式化与挂载

初级

深入学习 Ubuntu 24.10 Server 磁盘管理核心技能:磁盘分区、文件系统格式化、挂载点配置和存储空间管理。通过工程化类比和实践操作,让初学者轻松掌握Linux存储管理的基础技能。

未知
easylearning团队
更新于 2025-01-22

🚀 实践环境(SSH)

欢迎使用Easylearning为您专属打磨的自由学习实践环境, 登录后马上开始边学边练吧!

StudyBoard

创建StudyBoard练习实例,系统自动连接到实例后,可以在教程中直接发送远程命令到实例中执行并能查看结果,享受更好的学习体验。

Linux 磁盘管理 - 分区、格式化与挂载

Linux磁盘管理是系统管理的基础技能,就像建筑工程中的地基规划一样重要。在网络配置的基础上,我们需要为系统提供稳定可靠的存储支撑。本教程将通过工程化类比和安全实践,帮助您掌握Linux存储管理的核心技能。

🎯 学习目标

完成本章学习后,您将能够:

  • 存储架构理解: 深入理解Linux存储分层架构和设备抽象机制
  • 分区管理技能: 熟练掌握fdisk、parted等分区工具的使用方法
  • 文件系统操作: 学会创建、格式化和管理不同类型的文件系统
  • 挂载配置能力: 掌握临时和永久挂载的配置与管理技巧
  • 空间监控维护: 了解磁盘空间监控、清理和维护的最佳实践

🏗️ Linux 存储架构

核心概念

Linux存储管理官方定义

根据Linux内核文档和文件系统层次标准(FHS),Linux存储管理是一个分层的存储抽象系统,通过设备文件、分区表、文件系统和挂载点的层次化管理,为应用程序提供统一的文件访问接口

科学工程化类比

Linux存储架构就像现代化城市基础设施建设

  • 物理层 = 土地资源,提供基础的存储空间(硬盘、SSD)
  • 设备层 = 地块规划,将土地抽象为可管理的地块(/dev/sda、/dev/nvme0n1)
  • 分区层 = 区域划分,将地块分割为不同功能区域(主分区、扩展分区)
  • 文件系统层 = 建筑标准,定义如何在区域内建设(ext4、xfs、btrfs)
  • 挂载层 = 交通网络,连接各区域到城市主干道(挂载到目录树)

分层设计的工程优势

  • 抽象化管理:上层无需关心底层硬件细节,如同用户无需了解电力系统就能使用电器
  • 标准化接口:统一的文件操作接口,确保应用程序的可移植性
  • 灵活性扩展:可以在不影响应用的情况下更换底层存储设备
  • 安全性隔离:分区提供数据隔离,防止系统故障影响用户数据

存储架构图

设备命名规则

Linux设备命名官方定义

根据Linux设备模型和udev规范,Linux设备命名是一个基于设备类型、接口协议和检测顺序的标准化命名系统,确保设备在系统中具有唯一且可预测的标识符。

科学工程化类比

设备命名就像城市门牌号码系统

  • 街道名称 = 设备类型前缀(sd、nvme、vd),如"中山路"、"解放街"
  • 门牌号码 = 设备序号(a、b、c或0、1、2),如"123号"、"456号"
  • 房间编号 = 分区号(1、2、3或p1、p2、p3),如"301室"、"502室"

命名规则详解

BASH
# SATA/SCSI设备命名(传统硬盘)
/dev/sda     # 第一个SATA/SCSI磁盘(如:主硬盘)
/dev/sdb     # 第二个SATA/SCSI磁盘(如:从硬盘)
/dev/sda1    # 第一个磁盘的第一个分区(如:系统分区)
/dev/sda2    # 第一个磁盘的第二个分区(如:数据分区)
 
# NVMe设备命名(现代高速SSD)
/dev/nvme0n1    # 第一个NVMe控制器的第一个命名空间
/dev/nvme0n1p1  # 第一个NVMe磁盘的第一个分区
/dev/nvme1n1    # 第二个NVMe控制器的第一个命名空间
 
# 虚拟磁盘命名(云环境/虚拟机)
/dev/vda     # 第一个虚拟磁盘(Virtual Disk A)
/dev/vdb     # 第二个虚拟磁盘(Virtual Disk B)
/dev/vda1    # 第一个虚拟磁盘的第一个分区
 
# 循环设备(用于测试)
/dev/loop0   # 第一个循环设备
/dev/loop1   # 第二个循环设备

实际应用场景

  • 个人电脑:通常使用/dev/sda作为主硬盘
  • 服务器环境:可能有多个/dev/sd*设备
  • 云平台:常见/dev/vda、/dev/xvda等虚拟设备
  • 高性能工作站:使用/dev/nvme*设备获得最佳性能

💾 磁盘信息查看

基本磁盘信息

磁盘信息查看就像建筑工程师的现场勘测,需要了解"地形地貌"才能制定合理的"建设方案"。

请登录以使用远程命令功能
# 查看所有块设备(树状结构显示)
$lsblk
# 输出示例:
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
# sda 8:0 0 20G 0 disk
# ├─sda1 8:1 0 1G 0 part /boot
# └─sda2 8:2 0 19G 0 part /
# 查看更详细的设备信息
$lsblk -f
# 显示文件系统类型、UUID、标签等信息
# 查看磁盘详细分区信息
$sudo fdisk -l
# 或者查看特定磁盘
$sudo fdisk -l /dev/sda
# 查看磁盘使用情况(已挂载的文件系统)
$df -h
# 输出示例:
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda2 19G 4.2G 14G 24% /
# /dev/sda1 974M 203M 704M 23% /boot
# 查看目录空间使用详情
$du -sh /home/*
$du -h --max-depth=1 /
# 查看系统识别的所有磁盘
$cat /proc/partitions

命令解释

  • lsblk:以树状结构显示块设备,直观展示磁盘和分区关系
  • fdisk -l:显示磁盘分区表详细信息,包括分区类型和大小
  • df -h:显示已挂载文件系统的使用情况,-h参数使输出更易读
  • du -sh:显示目录占用的磁盘空间,-s表示汇总,-h表示人类可读格式

🔧 磁盘分区管理

分区概念和类型

磁盘分区官方定义

根据IEEE 1003.1标准和磁盘分区规范,磁盘分区是将物理存储设备划分为多个逻辑存储单元的技术,每个分区可以独立格式化、挂载和管理,提供数据隔离和系统组织的功能

科学工程化类比

磁盘分区就像城市土地规划

  • 整块磁盘 = 一块待开发的土地
  • 分区表 = 城市规划图,记录每个区域的用途和边界
  • 主分区 = 主要功能区(商业区、住宅区),直接可用
  • 扩展分区 = 综合开发区,内部可再细分
  • 逻辑分区 = 扩展分区内的子区域(如住宅小区内的不同楼栋)

分区表类型对比

MBR vs GPT就像传统城市规划 vs 现代城市规划

对比项目📋 MBR分区表(传统方案)📋 GPT分区表(现代方案)
磁盘容量支持最大2TB磁盘支持大容量磁盘(几乎无限制)
分区数量最多4个主分区最多128个分区
兼容性兼容性好,传统BIOS支持UEFI原生支持,向后兼容
数据保护无冗余保护内置校验机制,数据保护机制
主要限制• 容量限制
• 分区数量少
• 无冗余保护
• 需要UEFI支持
• 老系统兼容性问题
主要优势• 广泛兼容
• 简单可靠
• 工具支持完善
• 几乎无容量限制
• 分区数量充足
• 数据完整性保护
适用场景• 小容量磁盘
• 老旧系统
• 简单需求
• 大容量磁盘
• 现代系统
• 企业环境

选择建议

  • 新系统:推荐GPT分区表,面向未来
  • 兼容性需求:需要支持老系统时选择MBR
  • 大容量磁盘:大于2TB必须使用GPT
  • 企业环境:推荐GPT,提供更好的可靠性

使用 fdisk 进行分区

fdisk就像建筑师的绘图工具,用来在"土地"上规划"建筑区域"。

重要提醒:分区操作会影响磁盘数据,请确保:

  1. 在虚拟环境或测试磁盘上练习
  2. 重要数据已备份
  3. 理解每个操作的含义后再执行
请登录以使用远程命令功能
# Lab环境安全练习:使用循环设备模拟磁盘
# 步骤1:创建虚拟磁盘文件用于fdisk练习
$sudo dd if=/dev/zero of=/tmp/fdisk-practice.img bs=1M count=200
# 创建200MB虚拟磁盘
# 步骤2:设置循环设备
$sudo losetup /dev/loop21 /tmp/fdisk-practice.img
# 步骤3:查看虚拟磁盘分区表(安全操作)
$sudo fdisk -l /dev/loop21
# 步骤4:进入fdisk交互模式(在虚拟磁盘上安全操作)
$sudo fdisk /dev/loop21
# fdisk交互命令说明:
# p - 打印当前分区表(查看现状)
# n - 创建新分区(添加区域)
# d - 删除分区(移除区域)
# t - 更改分区类型(变更用途)
# l - 列出分区类型代码
# w - 写入更改并退出(确认保存)
# q - 不保存退出(放弃更改)
# m - 显示帮助信息
# 创建新分区的完整步骤(在虚拟磁盘上):
# 1. 输入 'p' 查看当前分区状况
# 2. 输入 'n' 开始创建新分区
# 3. 选择分区类型:
# - 'p' = 主分区(primary)
# - 'e' = 扩展分区(extended)
# 4. 输入分区号(1-4,对于主分区)
# 5. 设置起始扇区(通常直接回车使用默认值)
# 6. 设置结束扇区或大小:
# - 直接输入扇区号
# - 或输入大小如 '+100M'(100MB)、'+50M'(50MB)
# 7. 输入 'p' 确认分区创建结果
# 8. 输入 'w' 保存更改
# 步骤5:练习完成后清理
$sudo losetup -d /dev/loop21
$sudo rm /tmp/fdisk-practice.img

实践建议

  • 初学者建议先用 p 命令熟悉分区表显示格式
  • 使用 +大小 格式比直接指定扇区号更直观
  • 创建分区后用 partprobe 命令让内核重新读取分区表

使用 parted 进行分区

parted就像现代化的城市规划软件,比fdisk更适合处理大容量磁盘和GPT分区表。

请登录以使用远程命令功能
# 安装parted工具
$sudo apt install parted
# Lab环境安全练习方法:使用循环设备模拟磁盘
# 步骤1:创建虚拟磁盘文件
$sudo dd if=/dev/zero of=/tmp/virtual-disk.img bs=1M count=100
# 创建一个100MB的虚拟磁盘文件
# 步骤2:设置循环设备
$sudo losetup /dev/loop20 /tmp/virtual-disk.img
# 将虚拟磁盘文件关联到循环设备
# 步骤3:查看虚拟磁盘信息(安全操作)
$sudo parted /dev/loop20 print
# 查看虚拟磁盘的分区表信息
# 步骤4:创建GPT分区表(在虚拟磁盘上安全操作)
$sudo parted /dev/loop20 mklabel gpt
# 步骤5:创建分区的几种方式(在虚拟磁盘上)
# 方式1:按百分比创建分区
$sudo parted /dev/loop20 mkpart primary ext4 0% 50%
$sudo parted /dev/loop20 mkpart primary ext4 50% 100%
# 方式2:按具体大小创建分区(适合小容量虚拟磁盘)
$sudo parted /dev/loop20 mkpart primary ext4 1MiB 50MiB
$sudo parted /dev/loop20 mkpart primary ext4 50MiB 99MiB
# 方式3:交互式创建分区
$sudo parted /dev/loop20
# 进入parted交互模式后:
# (parted) print # 查看分区表
# (parted) mkpart primary ext4 1MiB 30MiB # 创建分区
# (parted) quit # 退出
# 步骤6:查看分区创建结果
$sudo parted /dev/loop20 print
$lsblk /dev/loop20
# 步骤7:让内核重新读取分区表
$sudo partprobe /dev/loop20
# 步骤8:清理实验环境(练习完成后)
$sudo losetup -d /dev/loop20 # 删除循环设备
$sudo rm /tmp/virtual-disk.img # 删除虚拟磁盘文件

Lab环境练习优势

  • 完全安全:操作虚拟磁盘,不会影响系统
  • 可重复:可以多次创建和删除虚拟磁盘练习
  • 真实体验:循环设备的行为与真实磁盘完全一致
  • 易于清理:练习完成后可以完全清除痕迹

parted的优势

  • 支持GPT分区表,适合大容量磁盘
  • 可以在线调整分区大小(某些情况下)
  • 命令行和交互模式都支持
  • 更精确的分区边界控制

分区操作实例

完整的分区创建流程,就像建房子需要先规划地基一样:

请登录以使用远程命令功能
# Lab环境完整分区练习流程
# 步骤1:查看系统中的磁盘设备
$lsblk
# 确认系统现有的磁盘设备
# 步骤2:创建虚拟磁盘用于练习
$sudo dd if=/dev/zero of=/tmp/partition-demo.img bs=1M count=500
# 创建500MB虚拟磁盘文件
# 步骤3:设置循环设备
$sudo losetup /dev/loop22 /tmp/partition-demo.img
# 将虚拟磁盘关联到循环设备
# 步骤4:查看虚拟磁盘的详细信息
$sudo fdisk -l /dev/loop22
# 确认虚拟磁盘大小和当前分区状况
# 步骤5:创建分区(示例:创建200MB分区)
$sudo fdisk /dev/loop22
# 在fdisk交互界面中依次输入:
# p # 查看当前分区表
# n # 创建新分区
# p # 选择主分区
# 1 # 分区号为1
# [Enter] # 使用默认起始扇区
# +200M # 分区大小为200MB
# p # 查看创建结果
# w # 保存并退出
# 步骤6:刷新分区表
$sudo partprobe /dev/loop22
# 让内核重新读取分区表
# 步骤7:验证分区创建结果
$lsblk /dev/loop22
# 应该能看到新创建的/dev/loop22p1分区
# 步骤8:查看分区详细信息
$sudo fdisk -l /dev/loop22
# 确认分区大小和类型正确
# 步骤9:练习完成后清理环境
$sudo losetup -d /dev/loop22
$sudo rm /tmp/partition-demo.img

常见问题处理

  • 如果partprobe报错,可以重启系统让内核识别新分区
  • 如果分区创建失败,检查磁盘是否被其他进程占用
  • 创建分区后还需要格式化才能使用

📁 文件系统管理

文件系统概念和类型

文件系统官方定义

根据POSIX标准和Linux文件系统规范,文件系统是在存储设备上组织和管理文件数据的软件层,提供文件和目录的创建、读写、删除等操作接口,并负责数据的存储布局、元数据管理和访问控制

科学工程化类比

文件系统就像图书馆的管理系统

  • ext4 = 传统图书馆,分类清晰、管理成熟、适合大多数需求
  • XFS = 专业图书馆,专门处理大型文献,检索速度快
  • Btrfs = 现代数字图书馆,支持版本控制、自动备份、压缩存储
  • swap = 临时阅览室,当主阅览室(内存)满了时提供额外空间

文件系统特性对比

文件系统类型文件系统特点主要优势适用场景
📚 传统稳定型ext4通用首选• 成熟稳定
• 广泛支持
• 性能均衡
• 一般用途系统
• Ubuntu默认选择
• 桌面和服务器
ext3传统选择• 日志功能
• 向后兼容
• 逐步淘汰
• 老旧系统
• 兼容性需求
• 升级过渡
🚀 高性能型XFS高性能• 大文件优化
• 并发I/O强
• 企业级应用
• 最小300MB
• 数据库服务器
• 视频编辑
• 大文件存储
F2FS闪存优化• SSD专用
• 写入优化
• 移动设备
• SSD存储
• 移动设备
• 嵌入式系统
🔄 现代功能型Btrfs现代特性• 快照功能
• 压缩支持
• 写时复制
• 开发环境
• 需要快照
• 现代Linux发行版
ZFS企业级• 数据校验
• 自动修复
• 高可靠性
• 企业存储
• 关键数据
• 高可靠性需求
💾 特殊用途型swap虚拟内存• 内存扩展
• 系统必需
• 性能影响
• 虚拟内存
• 休眠支持
• 内存不足补充
FAT32跨平台• 兼容性好
• 功能简单
• 移动存储
• USB设备
• 跨平台共享
• 移动存储

选择建议

  • 一般用途:ext4,稳定可靠,是Ubuntu默认选择
  • 高性能需求:XFS,适合数据库、视频编辑等场景
  • 现代特性:Btrfs,需要快照、压缩等高级功能时
  • 企业关键:ZFS,对数据完整性要求极高的场景
  • SSD优化:F2FS,专门为闪存存储优化

创建文件系统

创建文件系统就像在建筑用地上铺设基础设施,为数据存储提供组织结构。

重要提醒:格式化操作会永久删除分区上的所有数据!请确保:

  1. 操作的是正确的设备
  2. 重要数据已备份
  3. 在测试环境中练习

文件系统大小要求

  • XFS文件系统:最小需要300MB空间
  • ext4文件系统:最小需要16MB空间
  • Btrfs文件系统:最小需要256MB空间
  • 建议:为XFS分配至少350MB以上空间,确保有足够的元数据空间
请登录以使用远程命令功能
# Lab环境文件系统创建练习
# 步骤1:创建虚拟磁盘并分区(复用前面的方法)
$sudo dd if=/dev/zero of=/tmp/filesystem-demo.img bs=1M count=500
$sudo losetup /dev/loop23 /tmp/filesystem-demo.img
# 创建分区表和多个分区用于不同文件系统测试
$sudo parted /dev/loop23 mklabel gpt
$sudo parted /dev/loop23 mkpart primary ext4 1MiB 100MiB
$sudo parted /dev/loop23 mkpart primary xfs 100MiB 450MiB
$sudo parted /dev/loop23 mkpart primary linux-swap 450MiB 500MiB
$sudo partprobe /dev/loop23
# 步骤2:创建不同类型的文件系统
# 创建ext4文件系统(推荐用于一般用途)
$sudo mkfs.ext4 /dev/loop23p1
# 带标签的创建方式(便于识别)
$sudo mkfs.ext4 -L "data-storage" /dev/loop23p1
# 创建XFS文件系统(适合大文件和高性能需求)
# 注意:XFS文件系统需要至少300MB空间
$sudo mkfs.xfs /dev/loop23p2
# 带标签的XFS文件系统
$sudo mkfs.xfs -L "backup-disk" /dev/loop23p2
# 创建交换分区(虚拟内存)
$sudo mkswap /dev/loop23p3
# 带标签的交换分区
$sudo mkswap -L "swap-partition" /dev/loop23p3
# 步骤3:验证文件系统创建结果
$sudo blkid /dev/loop23p1
$sudo blkid /dev/loop23p2
$sudo blkid /dev/loop23p3
# 显示文件系统类型、UUID、标签等信息
# 步骤4:查看分区和文件系统信息
$lsblk /dev/loop23
$sudo parted /dev/loop23 print
# 步骤5:练习完成后清理
$sudo losetup -d /dev/loop23
$sudo rm /tmp/filesystem-demo.img

参数说明

  • -L-n:设置文件系统标签,便于识别和管理
  • -F32:指定FAT32格式(还有FAT16、FAT12选项)
  • blkid:查看块设备的文件系统信息,包括UUID和标签

文件系统检查和修复

文件系统检查就像建筑物的安全检查,定期检查可以预防和修复潜在问题。

检查前注意事项

  • 文件系统检查必须在卸载状态下进行
  • 对于根文件系统,需要在单用户模式或救援模式下检查
  • 自动修复可能导致数据丢失,重要数据请先备份
请登录以使用远程命令功能
# Lab环境文件系统检查练习
# 步骤1:使用前面创建的虚拟磁盘(如果已清理,重新创建)
$sudo dd if=/dev/zero of=/tmp/fscheck-demo.img bs=1M count=500
$sudo losetup /dev/loop24 /tmp/fscheck-demo.img
$sudo parted /dev/loop24 mklabel gpt
$sudo parted /dev/loop24 mkpart primary ext4 1MiB 100MiB
$sudo parted /dev/loop24 mkpart primary xfs 100MiB 499MiB
$sudo partprobe /dev/loop24
# 创建文件系统
$sudo mkfs.ext4 -L "test-ext4" /dev/loop24p1
$sudo mkfs.xfs -L "test-xfs" /dev/loop24p2
# 步骤2:检查ext4文件系统
# 注意:文件系统检查必须在卸载状态下进行
$sudo fsck.ext4 /dev/loop24p1
# 强制完整检查
$sudo fsck.ext4 -f /dev/loop24p1
# 自动修复发现的错误
$sudo fsck.ext4 -y /dev/loop24p1
# 只检查不修复(安全模式)
$sudo fsck.ext4 -n /dev/loop24p1
# 步骤3:检查XFS文件系统
$sudo xfs_repair /dev/loop24p2
# 只检查不修复
$sudo xfs_repair -n /dev/loop24p2
# 步骤4:查看文件系统详细信息
$sudo tune2fs -l /dev/loop24p1 # ext4文件系统信息
$sudo dumpe2fs /dev/loop24p1 # ext4详细信息
# 对于XFS信息查看,需要先挂载
$sudo mkdir -p /tmp/test-mount
$sudo mount /dev/loop24p2 /tmp/test-mount
$sudo xfs_info /tmp/test-mount # XFS文件系统信息
$sudo umount /tmp/test-mount
# 步骤5:设置文件系统检查间隔(仅适用于ext4)
$sudo tune2fs -c 30 /dev/loop24p1 # 每30次挂载检查一次
$sudo tune2fs -i 180d /dev/loop24p1 # 每180天检查一次
# 步骤6:练习完成后清理
$sudo losetup -d /dev/loop24
$sudo rm /tmp/fscheck-demo.img
$sudo rmdir /tmp/test-mount

最佳实践

  • 定期检查文件系统健康状态
  • 在系统维护窗口进行文件系统检查
  • 重要系统建议使用只读检查模式
  • 检查前确保有完整的数据备份

🔗 挂载点管理

挂载概念和原理

挂载官方定义

根据Linux VFS(虚拟文件系统)规范,挂载是将一个文件系统附加到Linux目录树中特定位置的操作,使该文件系统的内容可以通过指定的目录路径访问

科学工程化类比

挂载就像城市交通枢纽连接

  • Linux目录树 = 城市主干道网络,统一的交通系统
  • 挂载点 = 交通枢纽站点,连接不同区域的入口
  • 文件系统 = 各个功能区域(商业区、住宅区、工业区)
  • 挂载操作 = 修建连接道路,让各区域接入主干网络
  • 卸载操作 = 临时封闭连接道路,断开区域连接

挂载工作原理

挂载机制的核心特点

  • 统一命名空间:所有存储设备都整合到单一的目录树中
  • 透明访问:应用程序无需知道文件在哪个物理设备上
  • 动态管理:可以随时挂载和卸载文件系统
  • 权限控制:通过挂载选项控制访问权限和行为

临时挂载 vs 永久挂载

  • 临时挂载:使用mount命令,重启后失效,适合临时访问USB设备
  • 永久挂载:通过/etc/fstab配置,系统启动时自动挂载,适合系统分区

挂载操作流程

临时挂载

请登录以使用远程命令功能
# Lab环境挂载练习
# 步骤1:使用虚拟磁盘进行挂载练习
$sudo dd if=/dev/zero of=/tmp/mount-demo.img bs=1M count=150
$sudo losetup /dev/loop25 /tmp/mount-demo.img
$sudo parted /dev/loop25 mklabel gpt
$sudo parted /dev/loop25 mkpart primary ext4 1MiB 75MiB
$sudo parted /dev/loop25 mkpart primary ext4 75MiB 149MiB
$sudo partprobe /dev/loop25
# 创建文件系统
$sudo mkfs.ext4 -L "test-data" /dev/loop25p1
$sudo mkfs.ext4 -L "test-backup" /dev/loop25p2
# 步骤2:创建挂载点
$sudo mkdir -p /mnt/test-data
$sudo mkdir -p /mnt/test-backup
# 步骤3:临时挂载
$sudo mount /dev/loop25p1 /mnt/test-data
$sudo mount /dev/loop25p2 /mnt/test-backup
# 步骤4:查看挂载状态
$mount | grep loop25
# 或者
$df -h | grep loop25
$lsblk /dev/loop25
# 步骤5:测试挂载的文件系统
$echo "Hello from test-data" | sudo tee /mnt/test-data/test.txt
$echo "Hello from test-backup" | sudo tee /mnt/test-backup/test.txt
$ls -la /mnt/test-data/
$ls -la /mnt/test-backup/
# 步骤6:卸载
$sudo umount /mnt/test-data
$sudo umount /mnt/test-backup
# 步骤7:练习完成后清理
$sudo losetup -d /dev/loop25
$sudo rm /tmp/mount-demo.img
$sudo rmdir /mnt/test-data /mnt/test-backup

永久挂载配置

请登录以使用远程命令功能
# Lab环境永久挂载配置练习
# 步骤1:创建虚拟磁盘用于永久挂载练习
$sudo dd if=/dev/zero of=/tmp/fstab-demo.img bs=1M count=100
$sudo losetup /dev/loop26 /tmp/fstab-demo.img
$sudo parted /dev/loop26 mklabel gpt
$sudo parted /dev/loop26 mkpart primary ext4 1MiB 99MiB
$sudo partprobe /dev/loop26
$sudo mkfs.ext4 -L "fstab-test" /dev/loop26p1
# 步骤2:获取分区 UUID
$sudo blkid /dev/loop26p1
# 输出示例:/dev/loop26p1: UUID="12345678-1234-1234-1234-123456789abc" TYPE="ext4"
# 步骤3:创建挂载点
$sudo mkdir -p /mnt/fstab-test
# 步骤4:备份原始fstab文件(重要!)
$sudo cp /etc/fstab /etc/fstab.backup
# 步骤5:查看当前fstab内容
$cat /etc/fstab
# 步骤6:添加挂载条目(仅作演示,不实际修改系统fstab)
# 获取UUID并显示应该添加的条目格式
$UUID=$(sudo blkid -s UUID -o value /dev/loop26p1)
$echo "# 应该添加到/etc/fstab的条目(仅供参考):"
$echo "UUID=$UUID /mnt/fstab-test ext4 defaults 0 2"
# 步骤7:测试临时挂载(不修改fstab)
$sudo mount /dev/loop26p1 /mnt/fstab-test
$df -h | grep fstab-test
# 步骤8:验证挂载功能
$echo "Test file for fstab demo" | sudo tee /mnt/fstab-test/test.txt
$cat /mnt/fstab-test/test.txt
# 步骤9:清理练习环境
$sudo umount /mnt/fstab-test
$sudo losetup -d /dev/loop26
$sudo rm /tmp/fstab-demo.img
$sudo rmdir /mnt/fstab-test

重要说明:在Lab环境中,我们不实际修改/etc/fstab文件,因为:

  1. 错误的fstab配置可能导致系统无法启动
  2. 循环设备在重启后会消失,导致挂载失败
  3. 这里只演示UUID获取和配置格式,实际生产环境中才需要修改fstab

fstab 配置详解

/etc/fstab是Linux系统的文件系统表,它定义了系统启动时如何挂载各个文件系统。理解fstab的配置对于系统管理至关重要:

fstab文件的作用

  • 自动挂载:系统启动时自动挂载指定的文件系统
  • 挂载参数:定义每个文件系统的挂载选项和行为
  • 系统恢复:在系统修复模式下提供挂载信息
  • 管理便利:提供统一的文件系统配置管理

字段含义详解

  • 设备标识:可以是设备路径、UUID、LABEL等
  • 挂载点:文件系统在目录树中的位置
  • 文件系统类型:ext4、xfs、swap等
  • 挂载选项:控制文件系统的行为和权限
  • dump标志:是否被dump命令备份(0=否,1=是)
  • fsck顺序:文件系统检查的顺序(0=不检查,1=根文件系统,2=其他)
BASH
# /etc/fstab 文件格式:
# <设备> <挂载点> <文件系统> <选项> <dump> <fsck>
 
# 示例配置:
UUID=xxx-xxx /               ext4    defaults            0 1
UUID=xxx-xxx /boot           ext4    defaults            0 2
UUID=xxx-xxx /home           ext4    defaults,noatime    0 2
UUID=xxx-xxx /var/log        ext4    defaults,noatime    0 2
UUID=xxx-xxx none            swap    sw                  0 0
/dev/cdrom   /media/cdrom    iso9660 noauto,ro,user      0 0
 
# 常用挂载选项:
# defaults     - 默认选项(rw,suid,dev,exec,auto,nouser,async)
# noatime      - 不更新访问时间,提高性能
# ro           - 只读挂载
# rw           - 读写挂载
# noauto       - 不自动挂载
# user         - 允许普通用户挂载

使用UUID的优势

  • 设备独立:不受设备名称变化影响
  • 唯一标识:每个文件系统都有唯一的UUID
  • 系统稳定:避免设备顺序变化导致的挂载错误

📊 磁盘空间监控

空间使用监控

请登录以使用远程命令功能
# 查看磁盘使用情况
$df -h
$df -i # 查看 inode 使用情况
# 查看目录大小
$du -sh /home
$du -sh /var/log/*
$du -h --max-depth=1 /
# 查找大文件
$find / -type f -size +100M 2>/dev/null
$find /home -type f -size +50M -exec ls -lh {} \;
# 实时监控磁盘使用
$watch -n 5 'df -h'

🤔 思考题

  1. 为什么推荐使用UUID而不是设备名进行挂载?

    • 提示:考虑设备检测顺序变化的影响
  2. ext4和XFS文件系统各有什么优势?

    • 提示:从稳定性、性能、功能特性等方面对比
  3. 什么情况下需要使用扩展分区?

    • 提示:考虑MBR分区表的限制
  4. 如何在不停机的情况下扩展磁盘空间?

    • 提示:考虑LVM和在线扩展的可能性
  5. 为什么要将日志和数据分别存储在不同分区?

    • 提示:从系统稳定性和性能角度思考

📚 扩展阅读

实践练习

通过实际操作来巩固所学知识,在真实的系统化的训练环境中练习本教程的内容。

Linux 磁盘管理 - 分区、格式化与挂载 - 实践练习

待学习
ID: LINUX_03_DISK_MANAGEMENT
未登录
训练服务器:
训练内容:

基于 Linux 磁盘管理 - 分区、格式化与挂载 教程的实践练习