一、前言

很多时候,我们在购买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.