马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 Linux 服务器上磁盘空间不够用,是运维现场最常见的故障之一。加一块新硬盘听着简单,实际操作时很多人卡在同一个地方:分区做完了、格式化也做了,重启一次机器之后新目录却空了,写进去的东西重启全丢。本文把「给 Linux 增长一块磁盘」的完整流程拆开讲清楚,重点说清楚临时挂载和永久挂载的区别,以及 fstab 写错导致开机进不了系统的坑。
为什么加完硬盘重启就没了
先把结论放在前面:Linux 内核在启动过程中只会自动挂载少数几个固定挂载点,比如根目录 /、/boot、以及你在 fstab 里登记过的目录。你手动执行 mount 命令挂上去的目录,属于「会话内有效」,系统重启以后挂载关系就消失了。
所以流程天然分成两段:先临时挂载把盘用起来验证没问题,再把这条挂载关系写进 /etc/fstab 做成开机自动挂载。跳过第二步,就是「重启后挂载失效」的根因。
第一步:虚拟机或物理机加硬盘
虚拟化环境(VMware、KVM、VirtualBox、云服务器控制台)里,在关机状态下给虚拟机追加一块硬盘,容量随意。物理机则是关机装物理盘、拉电源线再开机。
加完之后必须重启系统,Linux 才能识别到新设备。有些虚拟化平台支持热插拔,但生产环境不建议赌这个,重启一次是最稳的做法。
重启后确认系统认到了新盘:
lsblk
lsblk -f
lsblk 会以树状列出所有块设备,新盘通常叫 /dev/sdb(第一块是 /dev/sda,第二块 /dev/sdb,以此类推)。lsblk -f 顺带显示文件系统类型(FSTYPE)和 UUID,后面永久挂载要用得上。
第二步:分区
整块裸盘不用分区也能直接用,但分区有几个实际好处:便于把不同用途的数据分开、方便做配额、坏道隔离时也更容易。新盘一般是空的,先分区。
fdisk /dev/sdb
进入交互式界面后常用子命令:
n — 新建分区(New)
p — 查看分区表(Print)
d — 删除分区(Delete)
w — 写入分区表并保存退出(Write)
q — 不保存直接退出(Quit)
实操顺序:n → 分区号默认回车用 1 → 起始扇区默认回车 → 结束扇区直接回车用全部剩余空间 → p 确认 → w 保存退出。注意 w 之前想清楚,这一步会覆写分区表,盘上原有数据会丢。
退出后再次用 lsblk 看,新分区应该显示为 /dev/sdb1。
第三步:格式化
分区表里有了 /dev/sdb1,但它还是个「没盖房子的空地」,需要格式化成某种文件系统才能存东西。
mkfs.xfs /dev/sdb1
或者 mkfs.ext4 /dev/sdb1。选哪个:
- XFS:Red Hat / CentOS / Rocky 系默认,大文件和高并发写入表现好,在线扩容支持成熟。
- ext4:Debian / Ubuntu 系默认,兼容性最好,小文件场景稍稳。
格式化会清空分区内所有数据,确认盘是空的再执行。
第四步:临时挂载
先建个挂载点目录,再把分区挂上去:
mkdir /newdisk
mount /dev/sdb1 /newdisk
挂载成功后 df -h 或 lsblk 里应该能看到 /newdisk 及它的容量。此刻写文件能存进去,但重启即失效——这就是前面说的第一段流程。
几个常见的挂载写法差异:
mount /dev/sdb1 /newdisk — 用设备名挂载,设备名顺序变化时会挂错。
mount UUID=xxxx-xxxx /newdisk — 用 UUID 挂载,盘序变了也不影响,生产推荐。
mount -oDefaults 这类写法容易拼错,实际配置文件里用 defaults 选项即可。
第五步:配置开机自动挂载
把挂载关系写进 /etc/fstab,格式共 6 列,用空格或 Tab 分隔:
UUID=xxxx-xxxx /newdisk xfs defaults 0 0
逐列含义:
- 第 1 列:要挂载的设备,推荐写 UUID(
lsblk -f 或 blkid 可查)。
- 第 2 列:挂载点,必须是已存在的目录。
- 第 3 列:文件系统类型,
xfs / ext4 / ntfs 等。
- 第 4 列:挂载选项,常用
defaults;读性能敏感可加 noatime;内网数据盘可考虑 nofail,避免盘不在时系统起不来。
- 第 5 列:dump 备份开关,一般填 0。
- 第 6 列:fsck 自检顺序,根目录填 1,其他盘填 0。
编辑完务必 :wq 保存退出。然后执行:
mount -a
mount -a 会把 fstab 里所有没挂载的条目挂一遍,用来验证配置有没有写错。如果这条配置有语法问题(设备名不存在、类型写错),会当场报错,此时千万不要重启,改对再测。
最后检查:
lsblk -f
df -h
既然做成了永久挂载,强烈建议做一次真实重启验证:reboot 之后 df -h 还能看到 /newdisk,才算收工。只在 fstab 里改完就宣布成功、从不重启验证的,是现场最高频的事故来源。
踩坑清单
- 加完盘没重启:
lsblk 里根本看不到新设备,就去检查是不是虚拟化平台没关机就加的盘、或者虚拟机配置没保存。
- 只做了 mount 没写 fstab:重启后挂载丢了,数据写到临时目录看着像存进去了,重启全没。
- fstab 写错导致进不了系统:启动时卡在
dracut 或 initramfs 报错界面。此时在 GRUB 菜单按 e 编辑启动项,在内核行末尾加 init=/bin/bash 进单用户模式,把 fstab 改回正确内容再重启。
- 分区类型没改:整块盘
/dev/sdb 建了分区表后,如果直接格式化整块盘不加分区号,会跟分区表冲突,容量识别也可能少一圈。
- swap 没建:内存吃紧的机器,新盘可以顺手做个 swap 分区(
mkswap /dev/sdb2 + swapon,同样写进 fstab),比空着浪费强。
把上面五步按顺序走完,并且用一次真实重启确认过,磁盘扩容才算真正做完。整个过程只涉及新增设备,不动任何已有分区和挂载点,对线上正在跑的服务没有影响。
qidao123.com企服评测-应用市场 编辑提示 |