Linux服务器磁盘分区格式化完整教程:从查看磁盘到自动挂载
为什么需要分区和格式化
买回来的新硬盘或云服务器附加的数据盘,通常没有分区也没有文件系统,系统无法直接使用。
只有经过分区(划分逻辑区域)和格式化(写入文件系统如 ext4)之后,才能挂载到目录中读写数据。
本教程面向刚接触 Linux 的朋友,按实际场景逐步演示。
第一步:查看当前磁盘信息
在开始任何操作前,先用 lsblk 命令列出所有块设备,确认新磁盘的设备名(比如 /dev/sdb)。
lsblk
输出类似:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 39.5G 0 part /
sdb 8:16 0 20G 0 disk
/dev/sdb 就是我们要操作的新磁盘,大小 20G,没有分区。
也可以用 fdisk -l 查看更多细节。
第二步:创建分区
使用 fdisk 命令对 /dev/sdb 进行分区。
sudo fdisk /dev/sdb
进入交互界面后,按以下顺序输入命令:
- 输入
n创建新分区 - 选择分区类型:默认
p主分区 - 分区号:直接回车默认 1
- 起始扇区:直接回车
- 结束扇区:如果只想分一个区,直接回车使用全部剩余空间;也可以指定大小,例如
+10G创建一个 10G 分区 - 输入
w保存并退出
完成后再次运行 lsblk,应该能看到 /dev/sdb1。
第三步:格式化分区为 ext4 文件系统
分区创建好之后,需要格式化才能使用。
这里我们格式化为最常用的 ext4。
sudo mkfs.ext4 /dev/sdb1
等待几秒,出现“Writing superblocks and filesystem accounting information”表示成功。
第四步:挂载分区到目录
先创建一个挂载点目录,比如 /data:
sudo mkdir -p /data
sudo mount /dev/sdb1 /data
现在用 df -h 检查是否已经挂载:
df -h | grep /data
应该能看到 /dev/sdb1 已经挂载到 /data,可用空间为前面设置的大小。
第五步:设置开机自动挂载(写入 /etc/fstab)
如果只执行 mount,重启后挂载会丢失。
需要把挂载信息写入 /etc/fstab。
推荐使用 UUID 来标识分区,因为设备名(如 /dev/sdb1)可能在系统重启后发生变化。
先用 blkid 获取分区的 UUID:
sudo blkid /dev/sdb1
输出类似:
/dev/sdb1: UUID="a1b2c3d4-..." TYPE="ext4"
复制 UUID,然后编辑 /etc/fstab:
sudo nano /etc/fstab
在文件末尾添加一行:
UUID=a1b2c3d4-... /data ext4 defaults 0 2
- 第一个字段:UUID
- 第二个字段:挂载点
- 第三个字段:文件系统类型
- 第四个字段:挂载选项(defaults 即可)
- 第五个字段:是否 dump(0 不备份)
- 第六个字段:文件系统检查顺序(/ 是1,其他是2)
保存退出后,可以执行 sudo mount -a 测试 fstab 配置是否正确,没有报错说明自动挂载已生效。
高频问题与避坑说明
Q: 提示“Device /dev/sdb is busy”无法分区?
A: 说明该磁盘已有分区被挂载或正在使用。先用 umount /dev/sdb* 卸载,或用 lsof /dev/sdb 找出占用进程并停止。
Q: 分区表类型选 MBR 还是 GPT?
A: 磁盘小于 2TB 且不要求 UEFI 启动时,MBR 够用;大于 2TB 或使用 UEFI 启动必须选 GPT。fdisk 在 2.26 以上版本默认 GPT,如需 MBR 可加参数 -t dos。
Q: 为什么用 UUID 而不是直接写 /dev/sdb1?
A: 服务器可能更换硬件或添加/移除磁盘导致设备名变化(比如 sdb 变成 sdc),UUID 是分区唯一标识,不会变,避免重启后无法挂载。
Q: 格式化后分区空间比预期小?
A: 正常。文件系统自身需要占用少量元数据空间(如 inode 表),另外上一步分区如果未使用全部空间也会导致实际大小小于全盘。用 fdisk -l 确认分区大小即可。
效果验证
完成以上步骤后,用以下命令综合验证:
lsblk
blkid /dev/sdb1
df -h
sudo mount -a # 无输出表示 fstab 配置正确
如果一切正常,你的 Linux 服务器已经成功将新磁盘分区、格式化为 ext4,并实现了开机自动挂载。
后续就可以在 /data 下读写数据了。
如果你正在处理 Linux服务器磁盘分区格式化,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。