Linux磁盘扩容全攻略:分区、格式化与挂载新手实操
为什么要给Linux磁盘扩容?
服务器跑久了,磁盘空间不够用是很常见的事。
比如日志文件越积越大、数据库数据增长、网站附件增多,都可能导致根分区或数据盘撑满。
Linux磁盘扩容的核心操作就是给系统增加一块新硬盘(或给现有虚拟磁盘扩容后),然后让系统识别并挂载到指定目录,使新增空间能被应用程序使用。
本文假设你使用的是CentOS 7/8或Ubuntu 20.04以上版本,操作均在命令行完成,零基础也能跟着做。
一、开始前必须确认的三件事
- 确认当前磁盘使用情况
执行 df -h 查看各分区使用率,记下根分区(/)或需要扩容的挂载点。
执行 lsblk 列出所有块设备,确认新增磁盘名称(通常为 /dev/sdb、/dev/vdb 等)。
- 新增磁盘已就绪
如果是物理机,插入新硬盘;
如果是虚拟机,先在管理界面添加一块虚拟磁盘。
添加后重启服务器或执行 echo "- - -" > /sys/class/scsi_host/host0/scan 扫描新磁盘(不同系统命令有差异,建议重启更稳妥)。
- 备份重要数据
磁盘操作有丢数据风险,务必提前备份关键文件。
二、两步完成分区与格式化
1. 使用 fdisk 创建分区
以新磁盘 /dev/sdb 为例,执行:
sudo fdisk /dev/sdb
在交互界面依次输入:
n创建新分区p选择主分区(Primary)- 分区号按回车默认(1)
- 起始扇区按回车默认
- 结束扇区按回车使用全部空间
w写入并退出
完成后执行 lsblk,应该能看到 /dev/sdb1 出现。
2. 格式化分区为ext4文件系统
sudo mkfs.ext4 /dev/sdb1
如果磁盘超过2TB,建议使用 parted 配合 GPT 分区表,但新手先以MBR+单分区为例。
三、挂载到指定目录并设置开机自动挂载
1. 创建挂载点并临时挂载
假设要把新磁盘挂载到 /data 目录:
sudo mkdir -p /data
sudo mount /dev/sdb1 /data
立即用 df -h 检查,能看到新分区已挂载。
2. 写入 /etc/fstab 实现开机自动挂载
首先获取分区的UUID(更可靠,避免盘符变化导致问题):
sudo blkid /dev/sdb1
输出类似 UUID="a1b2c3d4-..." TYPE="ext4"。
复制UUID。
编辑 /etc/fstab:
sudo vim /etc/fstab
在末尾添加一行:
UUID=a1b2c3d4-... /data ext4 defaults 0 0
保存退出。
执行 sudo mount -a 测试配置是否正确(无报错即成功)。
四、避坑指南与高频问题
1. 分区表类型不对导致无法挂载
如果你使用 fdisk 创建分区时提示“WARNING: The size of this disk is 2.0 TB”,说明磁盘超过2TB,必须改用 parted 工具设置 GPT 分区表,否则只能使用2TB空间。
2. 重启后挂载丢失
未写入 /etc/fstab 或UUID填写错误。用 blkid 确认UUID,重新编辑。
3. 挂载点已有数据怎么办?
新磁盘挂载到已有内容的空目录会覆盖原内容(原文件被隐藏)。先备份原目录内容,挂载后再复制回来。
4. 卸载分区提示“target is busy”
说明有进程正在使用该挂载点,用 lsof /data 或 fuser -m /data 找到进程并关闭。
五、最终验证:确认扩容生效
执行以下命令验证整体效果:
# 查看分区详情
df -hT | grep /data
# 查看新分区UUID和类型
blkid /dev/sdb1
# 测试写入文件是否正常
echo "test" | sudo tee /data/test.txt && cat /data/test.txt
如果 /data 目录显示新磁盘容量、测试文件正常读取,说明Linux磁盘扩容操作完成。
如果你的场景是给根分区(/)扩容,则无法通过挂载新磁盘实现,需要使用 LVM 或重新调整分区大小,那属于另一类话题。
本文方案适合给独立的数据目录(如 /data、/opt、/home)扩容,也是服务器运维中最常用的操作之一。