数据盘不够用了,直接扩容行不行,能保住数据吗


最近公司那台老服务器日子不太平,上面跑的数据库一天天臃肿起来,把原先300G的sdb数据盘吃得死死的,监控天天报预警,占用率都飙到70%多了。这哪能忍啊,项目还指望它撑着呢。领导一句话,给它加点空间,从300G直接拉到500G,得,虚拟机设置里调一下大小,新容量等着我上线去整。
一开始真有点懵,毕竟这盘是已经在用的,挂载在/datadisk上存着不少要紧的数据。网上搜了一堆,怕搞错了把数据搞丢了。后来确定了,只要不分区信息没乱,单纯扩大容量,后面操作对路子,数据是不会丢的。关键是不能直接格式化,得一步步来,先把旧分区干掉再建个大的,文件系统也得跟着扩大。


先登上去看一眼,df -h 拦了一下,/dev/sdb1确实还在跑,/datadisk目录里一堆文件。然后fdisk -l扫了下,系统还是认300G那会儿的分区表,新扩的200G压根看不见。这说明虚拟机虽然改了,但Linux没自动感知到变化。这时候需要手动操作分区表,让它知道硬盘其实变大了。
问题来了,想改分区,首先得把磁盘卸了,不然没法操作。umount /dev/sdb1 /datadisk一执行,提示设备在忙,卸不了。一看,有好几个进程正在读写这个盘,pid号都出来了。只能一个一个kill掉linux扫描新增磁盘,确认不是关键进程后才敢动手。等彻底空了,再umount一次,这次顺利卸载。

接下来就是重头戏——删分区重分。用 fdisk /dev/sdb 进入分区工具,d命令删掉sdb1,别慌,这只是删分区表记录,数据本身还在盘上。然后n新建分区,主分区、序号1,起始扇区尽量和原来一样,我查了下之前的信息,确保不偏移。结束扇区就让他默认用满整个盘。保存退出的时候心里还是咯噔了一下,w命令一敲,分区表就更新了。
这时候再fdisk -l,发现end扇区数字变大了,说明新分区已经占满了500G的空间。看着那一长串的数字,心里有点底了。赶紧 mount /dev/sdb1 /datadisk 把它重新挂回去。df -Th一查,显示的还是300G,这正常,现在只是分区变大了,文件系统没变,还不认新空间。


得让文件系统知道它也能用更大的地盘。blkid 看了下,/dev/sdb1是ext4格式,那就用 resize2fs。命令敲下去:resize2fs /dev/sdb1,系统就开始自动扩展文件系统了linux教程,进度条慢慢走,感觉像在等结果。几分钟后完成,再df -Th,这回容量变成接近500G了,可用空间一下多了快两百G,看着舒服多了。
不过还没完事,服务器要是重启linux培训学校,可能不会自动挂载。得去/etc/fstab里加一行。先blkid把/dev/sdb1的UUID抄下来,那个一长串字母数字组合,然后vim /etc/fstab,在最后加一条,把UUID、挂载点、文件系统类型、参数都写对,省得以后启动出问题。


一切弄妥,最后reboot重启服务器。等它慢慢重新上线,远程登进去第一件事就是df -h看一眼。/dev/sdb1稳稳挂在/datadisk上,容量清清楚楚是500Glinux扫描新增磁盘,所有数据都在,数据库也正常跑着。那一刻才算彻底松了口气,没出岔子。这次扩容算是成了,不用再担心空间报警了。
