百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

vps磁盘扩容笔记(扩容磁盘空间)

ztj100 2024-11-09 15:19 28 浏览 0 评论

在VPS上,一般建议分成两块磁盘挂载,其中一块为系统盘,另一块为数据盘,在于,系统盘数据一般不会变更,也不会考虑到扩容的问题;而数据盘,随着时间的推移,您会发现您的磁盘会越来越不够了,必然会考虑到扩容的问题,而扩容,在vps上,有两种方案,一种是已分区的,这种扩容比较麻烦,需要停服务处理;另一种是裸分区的,这种比较简单,可以不用停服务,几秒钟就搞定了,下面的内容,就是针对这两种进行分别处理的笔记。因森哥目前使用的是阿里云的ECS,故此次以阿里云的ECS为例进行讲解,其他的VPS也基本上一样,起码,森哥在本地测试的时候,是这么一回事的。

声明:由于头条PC端显示代码内容时,格式会乱,建议使用手机端查看。森哥在最后面也提示了个链接,可以直接查看森哥发布的原文。



本次扩容的数据盘是已在生产环境中使用的硬盘。因磁盘空间即将用满,故扩容了空间。

要求,在保留旧数据的同时,又能将空间扩容成功。

参考文档:扩展分区和文件系统_Linux数据盘

扩容磁盘,涉及到两种格式,一种是已有分区的扩容,另一种是裸分区的扩容。这两种操作的方式不一样。

最简单的就是裸分区的扩容,无损而且不需要停服务;

最麻烦的就是有分区的扩容。

现在森哥带着您一起操作吧。

扩展已有分区



为了防止数据丢失,不建议扩容已挂载( mount)的分区和文件系统。请先取消挂载( umount)分区,完成扩容并正常使用后,重新挂载( mount)。如果确实需要扩容已挂载( mount)的分区,则操作如下:

  • 实例内核版本 <3.6:先取消挂载该分区,再修改分区表,最后扩容文件系统。
  • 实例内核版本 ≥3.6:先修改对应分区表,再通知内核更新分区表,最后扩容文件系统。

如果新磁盘空间用于扩容已有的分区,按照以下步骤在实例中完成扩容:

步骤一:修改分区表

1、运行fdisk -lu /dev/vdb,并记录旧分区的起始和结束的扇区位置。

本示例中, /dev/vdb1 的起始扇区位置是 2048,结束扇区位置是 41943039。

[root@localhost ~]# fdisk -lu /dev/vdb
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b
?
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

2、查看数据盘的挂载路径,根据返回的文件路径卸载分区,直至完全卸载已挂载的分区。

[root@ecshost ~]# mount | grep "/dev/vdb"
/dev/vdb1 on /mnt type ext4 (rw,relatime,data=ordered)
[root@ecshost ~]# umount /dev/vdb1
[root@ecshost ~]# mount | grep "/dev/vdb"

3、使用fdisk工具删除旧分区。

i、运行fdisk -u /dev/vdb:分区数据盘。

ii、输入p:打印分区表。

iii、输入d:删除分区。

iv、输入p:确认分区已删除。

v、输入w:保存修改并退出。

[root@ecshost ~]# fdisk -u /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): p
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b
Device Boot Start End Blocks Id System
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

4、使用fdisk命令新建分区。

i、运行fdisk -u /dev/vdb:分区数据盘。

ii、输入p:打印分区表。

iii、输入n:新建分区。

iv、输入p:选择分区类型为主分区。

v、输入<分区号>:选择分区号。本示例选取了1。

警告 新分区的起始位置必须和旧分区的起始位置相同,结束位置必须大于旧分区的结束位置,否则会导致扩容失败。

vi、输入w:保存修改并退出。

本示例中,将/dev/vdb1由20 GiB扩容到40 GiB。

[root@ecshost ~]# fdisk -u /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-83886079, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079):
Partition 1 of type Linux and of size 30 GiB is set
Command (m for help): p
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b
Device Boot Start End Blocks Id System
/dev/vdb1 2048 62916607 31457280 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

5、运行lsblk /dev/vdb确保分区表已经增加。

6、运行e2fsck -n /dev/vdb1再次检查文件系统,确认扩容分区后的文件系统状态为clean

步骤二:通知内核更新分区表。

运行partprobe或者partx -u,以通知内核数据盘的分区表已经修改,需要同步更新。

步骤三:扩容文件系统。

  • ext*文件系统(例如ext3和ext4):运行resize2fs /dev/vdb1并重新挂载分区。
[root@ecshost ~]# resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb1 to 7864320 (4k) blocks.
The filesystem on /dev/vdb1 is now 7864320 blocks long.
[root@ecshost ~]# mount /dev/vdb1 /mnt
  • xfs文件系统:先运行mount /dev/vdb1 /mnt/命令,再运行xfs_growfs /dev/vdb1。
[root@ecshost ~]# mount /dev/vdb1 /mnt/
[root@ecshost ~]# xfs_growfs /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=1310720 blks
        =                       sectsz=512   attr=2, projid32bit=1
        =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5242880, imaxpct=25
        =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
        =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 5242880 to 7864320

扩容裸设备文件系统

当数据盘没有创建分区,并且在裸设备上创建了文件系统时,您可以参见以下步骤直接扩容文件系统。

1.根据文件系统的类型,执行不同的扩容命令。

  • ext*:使用root权限执行resize2fs命令扩容文件系统,例如:
        resize2fs /dev/vdb
  • xfs:使用root权限执行xfs_growfs命令扩容文件系统,例如:
        xfs_growfs /dev/vdb

2.运行df -h查看数据盘扩容结果。显示容量完成扩充,表示扩容成功。

[root@ecshost ~]# df -h
 Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 1.6G 36G 5% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 460K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vdb 98G 37G 61G 37% /mnt
tmpfs 783M 0 783M 0% /run/user/0

相关推荐

再说圆的面积-蒙特卡洛(蒙特卡洛方法求圆周率的matlab程序)

在微积分-圆的面积和周长(1)介绍微积分方法求解圆的面积,本文使用蒙特卡洛方法求解圆面积。...

python编程:如何使用python代码绘制出哪些常见的机器学习图像?

专栏推荐...

python创建分类器小结(pytorch分类数据集创建)

简介:分类是指利用数据的特性将其分成若干类型的过程。监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。...

matplotlib——绘制散点图(matplotlib散点图颜色和图例)

绘制散点图不同条件(维度)之间的内在关联关系观察数据的离散聚合程度...

python实现实时绘制数据(python如何绘制)

方法一importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()#...

简单学Python——matplotlib库3——绘制散点图

前面我们学习了用matplotlib绘制折线图,今天我们学习绘制散点图。其实简单的散点图与折线图的语法基本相同,只是作图函数由plot()变成了scatter()。下面就绘制一个散点图:import...

数据分析-相关性分析可视化(相关性分析数据处理)

前面介绍了相关性分析的原理、流程和常用的皮尔逊相关系数和斯皮尔曼相关系数,具体可以参考...

免费Python机器学习课程一:线性回归算法

学习线性回归的概念并从头开始在python中开发完整的线性回归算法最基本的机器学习算法必须是具有单个变量的线性回归算法。如今,可用的高级机器学习算法,库和技术如此之多,以至于线性回归似乎并不重要。但是...

用Python进行机器学习(2)之逻辑回归

前面介绍了线性回归,本次介绍的是逻辑回归。逻辑回归虽然名字里面带有“回归”两个字,但是它是一种分类算法,通常用于解决二分类问题,比如某个邮件是否是广告邮件,比如某个评价是否为正向的评价。逻辑回归也可以...

【Python机器学习系列】拟合和回归傻傻分不清?一文带你彻底搞懂

一、拟合和回归的区别拟合...

推荐2个十分好用的pandas数据探索分析神器

作者:俊欣来源:关于数据分析与可视化...

向量数据库:解锁大模型记忆的关键!选型指南+实战案例全解析

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

用Python进行机器学习(11)-主成分分析PCA

我们在机器学习中有时候需要处理很多个参数,但是这些参数有时候彼此之间是有着各种关系的,这个时候我们就会想:是否可以找到一种方式来降低参数的个数呢?这就是今天我们要介绍的主成分分析,英文是Princip...

神经网络基础深度解析:从感知机到反向传播

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

Python实现基于机器学习的RFM模型

CDA数据分析师出品作者:CDALevelⅠ持证人岗位:数据分析师行业:大数据...

取消回复欢迎 发表评论: