惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
N
News | PayPal Newsroom
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
N
Netflix TechBlog - Medium
B
Blog
Recorded Future
Recorded Future
U
Unit 42
J
Java Code Geeks
Security Latest
Security Latest
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Vulnerabilities – Threatpost
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Scott Helme
Scott Helme
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
T
Threatpost
Last Week in AI
Last Week in AI
Know Your Adversary
Know Your Adversary
Project Zero
Project Zero
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
NISL@THU
NISL@THU
有赞技术团队
有赞技术团队
博客园 - 叶小钗
N
News and Events Feed by Topic
V
V2EX
T
Troy Hunt's Blog
月光博客
月光博客
博客园 - Franky
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
C
Cisco Blogs
The Cloudflare Blog
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog

静观小窗

一个有趣的项目背后的难点--MC的3D皮肤生成器 power by Qwen 博客俱乐部,最有社区氛围的中文博客联盟 文化决定语言,语言决定思想:我们赖以生存的隐喻(读后感) 我开发了一款博客图片压缩工具,支持PicGo一键压缩上传 寻找网络友邻 整合全网102个二次元动漫随机图片API接口,2025年十月最新 宋代的遗憾 搭建个人起始网站,便于控制浏览器使用和时间规划 Google Gemini CLI 免费安装配置指南:支持Gemini 2.5 Pro (2025最新) NixOS深度评测:一个六年Linux用户的初体验,为何惊艳的设计哲学仍让我望而却步 我的NS2使用体验记录,为什么因为马里奥派对空前盛会入坑 关于秦制的个人理解,为什么秦制在我看来是功过鲜明的必然 拜访一个人,在千年之后 Vercel/Netlify国内加速:EdgeOne免费CDN优选IP实战指南 C/C++程序员必看:JavaScript核心概念深度解析(动态类型、原型链、事件循环) C/C++程序员转向JavaScript:一份超详细的语法映射与避坑指南 从C++到JS:函数、this与闭包的核心差异与实践指南 VSCode配置JavaScript开发环境:Node.js安装与调试指南 C/C++程序员必看:JavaScript变量与作用域深度解析(从var到const) 博客迁移实战:从WordPress到Next.js的零成本高性能之路 《原则》读书笔记:如何将瑞·达利欧的智慧应用到日常 MATLAB入门教程:面向C++/OIer的数据可视化与科学计算指南 LaTeX公式与三线表教程:从入门到精通的排版指南 软路由远程访问提速:SMB压缩与50M上行优化实战 Hyprland 安装与配置超详细教程 (Arch Linux):含 Waybar 及一键脚本 Guide to Installing a USB WiFi Adapter on OpenWrt (LuCI) 阿里云CentOS 9服务器从零到一:安全配置与宝塔面板安装指南 WordPress个人博客搭建指南:从服务器到主题美化全攻略 Arch/Windows双系统终极指南:无缝鼠标共享与显卡配置 NAS怎么选?黑群晖、CentOS自建与绿联NAS深度对比与选型指南 Arch Linux 安装 KDE Plasma 6:一篇来自老用户的深度评测(2025版) 我的第一份Ubuntu安装与美化笔记(新手超详细避坑指南)
Linux文件系统与磁盘分区:从入门到精通的实战指南
间窗 (Vindo) · 2025-08-17 · via 静观小窗

Linux文件系统inode与数据块关系示意图

引言

对于任何一位 Linux 用户而言,理解 Linux文件系统Linux分区 是掌握系统管理的基础。它们是 Linux 组织和存储数据的基石。本文将系统地介绍文件系统的核心机制、磁盘分区的类型与作用,以及常用的管理工具,为你的 Linux 学习之路打下坚实的基础。

⚠️ 严重警告:dd 命令极其危险! dd 被戏称为 "Disk Destroyer"(磁盘毁灭者)。它能逐块精确复制整个磁盘或分区。如果 ifof 参数写反,将覆写目标磁盘并导致数据不可恢复。在执行任何分区或磁盘操作前,请务必备份重要数据,并再三确认设备名与参数。

一、基石:什么是 Linux 文件系统?

我们可以将文件系统比作一个图书馆的管理系统。它不仅规定了书籍(文件)应该放在哪个书架(目录)上,还记录了每本书的详细信息(元数据),如图书编号、作者、出版社等。

在 Linux 中,文件系统负责管理磁盘空间、文件命名、访问权限以及数据的存储与检索。

核心组件:块 (Block) 与索引节点 (inode)

  • 块 (Block):文件系统将磁盘空间划分为固定大小的单元,这是数据存储的最小单位。
  • 索引节点 (inode):每个文件或目录都对应一个唯一的 inode。它是一个数据结构,存储着文件的元数据 (Metadata),如文件大小、所有者、权限,以及指向存储文件内容的数据块的指针。

当你访问一个文件时,系统首先通过文件名找到对应的 inode,然后通过 inode 中的指针定位到具体的数据块,从而读取文件内容。

常见的文件系统类型

  • ext4:目前最广泛使用的日志文件系统,是许多主流发行版的默认选择。它以极佳的稳定性和兼容性著称,支持大容量文件和分区,是个人桌面和大多数服务器的可靠之选。
  • XFS:一个高性能的日志文件系统,特别擅长处理大规模数据和高并发读写。它在大型文件处理和并行 I/O 方面表现出色,常用于高性能计算和数据密集型服务器。
  • Btrfs:一个功能丰富的现代写时复制(Copy-on-Write)文件系统。它集成了卷管理、快照、校验和等高级功能,提供了强大的数据保护和灵活性。

挂载 (Mount) 与卸载 (Umount)

在 Linux 中,“一切皆文件”。要访问存储设备(如硬盘分区、U盘)中的数据,必须先将其关联到目录树中的一个目录上,这个过程称为挂载 (mount)。反之,将设备与目录的关联解除,称为卸载 (umount)。安全地卸载设备是至关重要的,它可以确保所有待写入的数据都已同步到磁盘,防止数据损坏或丢失。

二、规划:磁盘分区的逻辑

Linux分区 就像把一个大仓库分隔成几个功能不同的小房间。通过将一块物理硬盘划分为多个逻辑区域,我们可以更高效、更安全地管理数据。

在探讨分区类型前,我们必须先了解两种主流的分区方案:MBRGPT

1. 传统分区方案:MBR (Master Boot Record)

MBR 是旧式的分区标准,存在于磁盘的第一个扇区。它的设计限制了其应用场景:

  • 容量限制:最大仅支持 2TB 的磁盘。
  • 分区数量限制:最多只支持 4 个主分区。

为了突破 4 个分区的限制,MBR 引入了扩展分区的概念:

  • 主分区 (Primary Partition):可以直接安装操作系统和存储数据,最多 4 个。
  • 扩展分区 (Extended Partition):一个特殊的“容器”主分区,它不能直接存储数据,但可以在其内创建多个逻辑分区。一块硬盘最多只能有一个扩展分区。
  • 逻辑分区 (Logical Partition):创建在扩展分区内部的分区,用于存储数据。

2. 现代分区方案:GPT (GUID Partition Table)

GPT 是伴随 UEFI 启动方式而来的现代分区标准,解决了 MBR 的所有主要限制:

  • 容量支持:支持远超 2TB 的磁盘。
  • 分区数量:默认支持多达 128 个主分区,不再需要扩展和逻辑分区的概念。
  • 可靠性:在磁盘末尾存有分区表的备份,比 MBR 更健壮。

在现代系统中,GPT 已成为首选,主分区/扩展分区的概念正逐渐淡化。

三、实践:为何要分区?

合理规划 Linux分区 能带来诸多好处:

  1. 提升系统稳定性与安全

    将系统文件(/)与用户数据(/home)分在不同分区。即使 /home 分区被用户文件占满,系统分区依然能正常运行,不会导致系统崩溃。同理,系统重装时可以只格式化根分区,而保留 /home 中的个人数据。

    我的经验:我曾经因为没有单独划分 /home 分区,导致系统盘被日志文件占满,最终系统崩溃无法启动。从那以后,我每次安装Linux都会为 /home 单独分区。

  2. 优化系统性能

    将读写频繁的目录(如数据库目录 /var/lib/mysql)单独分区,可以减少磁盘碎片,并为其选择最优化的文件系统,从而提升 I/O 性能。

  3. 简化系统管理与备份

    为日志(/var/log)或网站数据(/var/www)创建独立分区,使得备份、恢复或清理工作可以针对特定分区进行,操作更精准、高效。

四、工具:分区管理与查看

1. 查看分区信息

  • lsblk (推荐):以树状结构清晰地显示块设备(磁盘、分区)及其挂载点,非常直观。

    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
    
  • fdisk:经典的命令行工具,功能强大,主要用于 MBR 分区。

2. 分区操作工具

  • fdisk:用于 MBR 磁盘的 Linux分区 创建、删除和修改。它通过交互式命令进行操作。
  • parted:功能更强大的工具,同时支持 MBR 和 GPT 分区表。操作更灵活,适合脚本化和高级分区任务。
  • gdiskfdisk 的 GPT 版本,界面和操作逻辑与 fdisk 高度相似,是管理 GPT 磁盘的常用工具。

3. 新建分区 + 格式化 + 挂载(示例)

以新增一块磁盘 /dev/sdb 为例,将其分一个主分区并格式化为 ext4,然后挂载至 /data

sudo fdisk /dev/sdb
# n (新建分区) -> p (主分区) -> 1 (分区号) -> 回车两次接受默认起止 -> w (写入)

sudo mkfs.ext4 -L DATA1 /dev/sdb1
sudo mkdir -p /data
sudo mount /dev/sdb1 /data
df -h | grep /data

开机自动挂载(编辑 /etc/fstab):

sudo blkid /dev/sdb1  # 复制 UUID
sudo nano /etc/fstab

添加一行(示例):

UUID=<粘贴你的UUID>  /data  ext4  defaults,noatime  0  2

保存后测试配置正确性:

sudo umount /data && sudo mount -a && mount | grep /data

五、系统备份的思考

系统与数据的备份是 磁盘管理 中的重要一环。以下是几种不同层级的备份工具:

  1. 文件级备份 (File-level Backup)

    • tar: 将文件和目录打包成一个归档文件,是 Linux 下最经典的文件备份工具,灵活且可靠。
    • Timeshift: 类似于 Windows 的系统还原或 macOS 的 Time Machine。它通过 rsync 创建文件系统的增量快照,可以轻松地将系统恢复到之前的状态,尤其适合桌面用户。
  2. 块级备份/磁盘克隆 (Block-level Backup)

    • dd: 一个强大的底层工具,可以逐块精确复制整个磁盘或分区。它常用于完整的磁盘克隆或创建磁盘镜像。

    一个相对安全的 dd 用法示例(将 sda 备份为镜像文件):

    sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress