一、前言
很多时候,我们在购买vps后,vps的linux系统默认自带了swap分区,像博主买的racknerd家的vps就会这样,并且是你买的vps内存多大就自带多大的swap,这点就很不好。虽然我的vps内存是够用的,但是我想要更大的硬盘,所以就不需要swap了。swap也会占用cpu的(虽然占用不大),这个看个人吧,看你是不是刚需了。
于是我把手里的vps的swap给删除移除掉,这篇文章就来记录一下我遇到的坑吧。
二、过程
开始连接ssh(废话哈哈)
- 移除swap之前,推荐先看看swap分区是哪个哈。顺便解除挂载
swapon -s
swapoff -a(你懒的话)或者swapoff 分区名
终端就能看到了。注意,这个swap的分区名要记住,后面删分区要用
接下来就是一些细节。
- 首先修改fstab,删掉swap分区那一行
vi /etc/fstab
删除干净后保存退出
然后清空resume里的内容
vi /etc/initramfs-tools/conf.d/resume
修改好之后先别急着用fdisk删分区,先update一下保平安
执行以下命令
update-initramfs -u
update-grub
然后就可以愉快的用fdisk删分区了
重点:先查看自己硬盘用的啥名字做的分区哈
lsblk
我的分区名字叫/dev/vda这个,本文就以这个为例
进入fdisk
fdisk /dev/vda
PS:
1. fdisk不能输分区名,也就是说不能输/dev/vda1之类东东,要输主分区
2. 然后按p看一下分区,我的swap是vda2,接着输入d,这里它会让你选择哪个分区,因为我是2分区,所以输入数字2,再按w保存,搞定
3. 最后reboot重启即可
三、扩容主分区
老样子确认下分区“fdisk -l”
1、插播一句,如果你之前的云硬盘是GPT格式的请安装以下软件,MBR的同学请忽略。
centos:
yum install gdisk -y
Debian/Ubuntu:
apt-get install gdisk -y
2、安装growpart软件
centos:
yum install -y cloud-utils-growpart
Debian/Ubuntu:
apt install -y cloud-guest-utils
3、运行分区扩容
vda和1之间有空格,盘符请按自己实际来。vda 1,代表扩容vda硬盘第一个分区。
growpart /dev/vda 1
如果运行后可能会报错。但是它实际已经扩容完成。如下:
failed [pt_update:1] pt_update /dev/vda 1
partx: /dev/vda: error updating partition 1
FAILED: pt_resize failed
“fdisk -l”确认下,实际已经到35GB了。
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 73400286 73398239 35G 83 Linux
4、扩容文件系统
此步如果出错,可以重启后再次执行。
resize2fs /dev/vda1
“df -h”确认下分区扩容完成,也可以重启宝塔后查看分区大小。
前文中我们已经把 /etc/fstab里swap 那一行删除了,还有 /etc/initramfs-tools/conf.d/resume。这里就可以放心了哈哈哈,操作到位了。
你以为教程到这就结束了吗?不,我还遇到了一个坑,那么我就来提下解决办法
划重点:
在第三步中,扩容主分区我们可能会遇到的一个坑,当我们输入 growpart /dev/vda 1 时,会返回 unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
你以为它是对的吗?实际上它是一个报错
我们只需在终端输入:
LANG=en_US.UTF-8
不行可以reboot重启一下(编码问题),就能完美解决这个问题啦,哈哈哈,完美避坑。
教程就到此结束啦,本教程适用于CentOS、Debian、ubuntu系统中有swap分区,需要删除然后扩容到/跟分区
Q.E.D.