今天中午有个同事跑过来找我,说测试机重启之后卡在了字符界面,没进系统。我远程一看,/etc/fstab 里挂了一项不存在的云盘,系统启动时找不到设备,直接落到了 emergency mode。这种问题我见过不止一次,每次都能撂倒好几个刚入门的人。借着这个事,我决定把 Linux 磁盘从创建、分区、挂载到 LVM 逻辑卷扩容的完整路径,重新梳理一遍。这篇文章适合刚上手 Linux 服务器的运维、做开发板系统调试的嵌入式工程师,以及经常要搭测试环境的后端朋友参考,内容不追求猎奇,全部是生产里能直接落地的操作。
1. 先看清家底:磁盘、分区、文件系统,这三个概念别混了
很多人上来就敲 fdisk /dev/sdb,但对这块盘在系统里到底处于什么状态,其实是模糊的。磁盘、分区、文件系统是三层完全不同的东西,混在一起想,后面遇到问题会特别拧巴。
磁盘是最底层的块设备,在 Linux 里通常表现为 /dev/sda、/dev/nvme0n1、/dev/vdb 这类名称。划分磁盘得到的区域叫分区,/dev/sda1、/dev/vdb2 就是分区设备。分区上还得建文件系统,比如 ext4、xfs,才能存文件。挂载其实是在文件系统和目录之间建立一个入口,让你通过 /data 这样的路径访问磁盘上的数据。
1.1 先摸清机器上现在挂着什么
拿到一台新机器,第一步不是分区,而是先看:
bash复制lsblk
这个命令会把系统里的磁盘、分区、挂载点、容量一股脑列出来,可读性比 fdisk -l 好得多。输出里会显示诸如 sda、sdb、nvme0n1 这样的磁盘设备,以及它们下面的分区和挂载点。没有挂载点的磁盘就是还没有被使用的,可以拿来规划。
再看块设备的唯一标识和文件系统类型:
bash复制blkid
blkid 输出的 UUID 后面在 fstab 里会用到。
1.2 分区表和分区工具的选择
分区表主要有 MBR 和 GPT 两种。MBR 对单盘容量支持到 2TB 左右,最多 4 个主分区,新环境尽量别碰。GPT 支持大容量、更多分区,是目前的主流。新建分区时可以用 fdisk,或者 parted。
bash复制fdisk /dev/sdb
进入交互界面后,输入 g 创建 GPT 分区表,然后 n 新建分区,w 保存退出。这里有个容易被忽略的点:如果用 fdisk 操作一块已经存在分区表的盘,并且分区是在其他系统或工具里做的,修改后一定要确认分区表已经重新读取,必要时重启或运行 partprobe。
1.3 文件系统决定了你后面能做什么
分区建好以后,需要格式化。常用的是 ext4 和 xfs:
bash复制mkfs.ext4 /dev/sdb1
# 或者
mkfs.xfs /dev/sdb1
很多生产环境偏爱 xfs,因为它在大文件、高并发场景下表现不错,Red Hat 系默认也是 xfs。但 xfs 有个特点必须记住:它不支持缩减。如果你有缩容需求,比如希望以后能动态地把空间调小,那 ext4 更合适。选文件系统不只是看性能,还要看你对后续运维动作的预期。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 挂载这一步,讲究比想象中多
分区建好、文件系统格式化之后,磁盘还无法直接用。你必须把它挂载到某个目录下,这个目录称为挂载点。
2.1 挂载点怎么选
常见做法是在根目录下建一个专门的数据目录,比如 /data、/opt,或者挂在 /mnt 下。系统目录像 /usr、/var 不要随便挂额外磁盘,否则容易和系统自带的数据混在一起,升级软件、写日志时会产生你意想不到的冲突。
code复制mkdir -p /data
mount /dev/sdb1 /data
挂载成功后,df -h 就能看到 /data 的容量和磁盘对应关系。挂载点必须是空目录,或者你确定可以覆盖原有内容的目录。挂到非空目录不会报错,但原目录里的文件会被暂时遮蔽,等卸载后才会重新出现,第一次用容易吓一跳。
2.2 挂载参数别乱省
mount 命令直接挂在生产盘时,我通常会带
