随着业务的发展,各种数据、文件、图片、日志等逐渐增多,我们需要更大的存储空间来支持各种业务。因此,对磁盘扩容,是我们使用在阿里云 ECS 时会面临的问题。本文将详细讲解如何对阿里云 ECS 的云盘扩容以及相关注意事项。
本文分为 2 部分:1、对系统盘的扩容;2、对数据盘的扩容。
说明:
为了达到最好的实操效果,最好分别准备一台运行 Linux (CentOS 7.4) 系统和 Windows Server 2012 系统的 ECS 服务器,如果您还未购买阿里云 ECS,可先领取 阿里云优惠券 之后再购买,可抵扣部分订单金额。
概述
阿里云 ECS 产品的其中一个优势是随时可对系统配置进行增减,因此,磁盘扩容就变得相对容易,也很安全。但是,在具体操作之前,我们需要了解对不同类型云盘扩容的一些限制条件,以更好地指导我们的操作。
在 你应该知道的阿里云ECS服务器 一文中,我们知道阿里云 ECS 服务器的磁盘,分为 系统盘 和 数据盘,在扩容时,对这 2 种磁盘应该使用不同的操作方式。简单来讲就是:
- 系统盘扩容:使用「更换系统盘」功能(注意是更换)
- 数据盘扩容:使用「磁盘扩容」功能
另外,在扩容操作时,阿里云服务器对这 2 种磁盘扩容之后的大小也有限制。下面我们就分别谈谈关于云盘扩容的容量限制。
系统盘扩容容量限制
上面提到 系统盘 只能通过 更换系统盘 的方式来扩容。在更换系统盘时,只能增加容量(或保持不变),不能减少磁盘容量,这是因为,系统盘容量变小之后,可能会存在数据丢失的情况,导致无法启动服务。
比如,一台运行 Ubuntu 16.4 的 ECS 实例,扩容前系统盘容量为 40 GiB,更换系统盘后,容量要求至少为 40 GiB。
系统盘扩容时,能设置的最小容量与系统盘当前容量和实例使用的镜像(即操作系统)有关,如下表所示:
表1:不同镜像的系统盘扩容容量限制
镜像 | 扩容的容量限制(GiB) |
---|---|
Linux(不包括CoreOS)+ FreeBSD | 最小 20 GiB,最大 500 GiB |
CoreOS | 最小 30 GiB,最大 500 GiB |
Windows Server | 最小 40 GiB,最大 500 GiB |
注:无论哪种镜像扩容,都不能低于系统盘扩容前的磁盘大小;同时,也不能大于 500 GiB。
数据盘扩容容量限制
对数据盘进行扩容时,和系统盘扩容一样,扩容之后的容量,只能增加(或不变),不能减少。我们知道,数据盘有普通云盘、SSD 云盘、ESSD 云盘和高效云盘这几种类型,根据云盘的类型不同,数据盘允许扩容的上限也不同,具体容量限制如下表所示:
表2:不同类型的数据盘扩容容量限制
云盘类别 | 扩容前容量 | 扩容后容量上限 |
---|---|---|
普通云盘 | 无限制 | 2000 GiB |
SSD 云盘 或 高效云盘 | ≤ 2048 GiB | 2048 GiB |
SSD 云盘 或 高效云盘 | > 2048 GiB | 不支持扩容 |
ESSD 云盘 | 无限制 | 32,768 GiB |
从上表可以看出,ESSD 云盘支持的容量上限最大,为 32,768 GiB;而普通云盘,扩容的容量最多为 2000 GiB。
扩容(更换)系统盘
系统盘保存着操作系统的镜像,而操作系统是任何服务器的提供服务的基础运行环境,因此,我们必须意识到,扩容系统盘是一项高风险的操作。在扩容前,运维人员务必要清楚地知道存在哪些风险,以及会对业务产生哪些影响。这里我做一个简单的说明。
存在的风险
更换系统盘会存在如下风险:
- 业务会中断:更换系统盘需要停止实例,因此会中断您的业务。
- 要重新部署系统环境:更换完成后,由于是一个全新的系统,因此,您需要在新的系统盘中重新部署业务运行环境(如:安装 Apache、MySQL数据库、Java Runtime、Git等),安装这些服务有可能会对您的业务造成长时间的中断(中断时间取决于重新部署镜像/运行环境的时间)。
- 原快照不可用:更换系统盘是重新为 ECS 实例分配一个系统盘,会改变云盘ID,所以,基于旧的系统盘创建的快照将不能用于回滚新的系统盘。
例外:关于上面「原快照不可用」这一点,需要说明的是,您手动创建的快照不会受影响,您仍可以用这些手动创建的快照来创建自定义镜像。
因此,我们在扩容系统盘之前,一定要考虑好对业务的影响,最好能预估操作时间(精确到小时为宜),在同业务部门沟通时,明确告知对方业务会中断的时间,业务运营方也好做相应的准备。
一些限制和说明
上面列出了更换系统盘存在的风险,现在,我们来看看更换系统盘时,您需要注意的地方。
- 更换系统盘后,您的实例会被分配一个新的系统盘,系统盘ID会发生变化(因为是新的),而原系统盘被释放。
- 您不能更换系统盘的云盘类型(即:如果原系统盘是普通云盘,更换后,也只能是普通云盘)。
- 扩容后的系统盘,容量最小为扩容前的容量,最大为 500 GiB,不能减少系统盘的容量(具体容量限制见上面表1)。
- Windows Server 2003 不支持系统盘扩容。
- 实例的 IP 地址和 MAC 地址保持不变。
- 在扩容系统盘前,建议您为系统盘创建快照(以便在操作失败时回滚),创建快照时请注意以下限制:
- 尽量避免在业务高峰期创建快照,以免影响业务。以创建一个 40 GiB 系统盘的快照为例,第一次创建大约需要 40 分钟。而且,创建快照可能会降低块存储 I/O 性能(一般在 10% 以内),出现瞬间短暂变慢。
- 为系统盘创建快照时,请确保系统盘有足够的空间(建议预留至少 1 GiB 的空间),否则,系统盘扩容(更换)后,系统可能无法正常启动。
- 为了保证有足够的快照额度完成新系统盘的自动快照策略,建议您删除不需要的旧系统盘快照。
另外,如果您用的是包年包月 ECS 实例,而且在之前做过 续费降配 操作,那么,在进入下一个计费周期前,您不能修改系统盘容量。
系统盘扩容操作步骤
通常,我们执行云盘扩容操作,无论是系统盘扩容还是数据盘扩容,我们都希望保留原来的数据。因此,如果想在保留原来系统盘数据的情况下进行扩容,您必须按以下步骤更换系统盘。
说明:以下步骤均是在 ECS 云服务器管理控制台 下操作(即阿里云提供的 Web 控制台),无需登录远程实例。
第一步:登录阿里云并进入 ECS 实例
找到需要扩容的实例,单击实例ID,进入实例详情页(具体可参考 如何对阿里云ECS服务器(Linux系统)的数据盘进行分区及挂载? 一文中「如何查看数据盘的设备名?」那部分内容)。
第二步:为实例创建快照
更换系统盘是高风险操作,因此,在具体操作前,我们为系统盘创建一个快照(通俗点讲,就是为系统备个份),即便更换失败,也有回滚的机会。
为系统盘创建快照的步骤如下:
- 在左侧导航栏中,单击 本实例磁盘。
- 找到系统盘,在 操作 列中,单击 创建快照 链接。
- 在弹出的「创建快照」对话框中,输入 快照名称,然后点击 确定 按钮
系统快照创建好之后,我们可以在 快照和镜像 -> 快照列表 查看快照。
下图显示了刚才创建的名为 east-snap-20180727
的快照。
第三步:创建自定义镜像
点击 快照列表 表格操作列的 创建自定义镜像 链接,将弹出「创建自定义镜像对话框」,如下图所示:
在该对话框中,输入 自定义镜像名称 和 自定义镜像描述,然后点击 确定 按钮。现在,返回到 实例列表 页,在左侧导航栏里,选择 快照和镜像 -> 镜像 菜单,可以查看自定义镜像的创建进度和状态。
上图中,镜像 CentOS-7.4-64-PHP-FPM
状态为「可用」,进度为 100%,表明自定义镜像已创建成功。
第四步:更换系统盘
要更换系统盘,我们首先需要停止实例。
进入实例列表,在 操作 列,选择 更多 -> 实例状态 -> 停止 菜单:
此时,将弹出「停止实例」确定对话框,如下图所示:
点击 确定 按钮后,即可停止当前 ECS 实例(这个当中会有一个「正在停止...」的过程,耐心等待 30s 左右,即可停止实例)。
注:如果 ECS 实例是按量付费实例,当实例停止后,仍然会收取资源(如:CPU、内存等)占用费用。
确定实例已经停止后,找到实例列表的 更换系统盘 菜单(可依次点击 更多 -> 磁盘和镜像 -> 更换系统盘 菜单),如下图所示:
此时,将弹出「更换系统盘」对话框:
此对话框详细说明了更换系统盘的注意事项,请务必仔细阅读。为方便查看和理解,我对这些注意事项进行了重新排版,并摘抄如下(其中,重点内容已加粗):
- 更换系统盘后,磁盘ID会变更,原系统盘会被释放
- 原系统盘的用户快照会保留(即用户自己创建的快照会保留),自动快照则根据您该系统盘属性值「自动快照是否随磁盘释放」的选项来判断是否保留或随磁盘删除。
- 可以进入磁盘列表点击 修改属性 查看或修改属性值。
- 自动快照策略将失效,需要重新设置。
- 您在操作前做好相关备份,以免数据丢失给你造成损失。
阅读并理解上述注意事项后,点击 确定,更换系统盘 按钮,进入更换系统盘页面。在这个页面,需要指定以下几项:
- 镜像类型:首先切换到「自定义镜像」选项卡,然后,选择刚创建的自定义镜像(我这里是
CentOS-7.4-64-PHP-FPM
),下图中的 ①。 - 系统盘:根据您业务的需求来修改系统盘容量,新指定的系统盘容量不能低于当前系统盘的容量,最大可以扩容到 500 GiB(具体可参看上面 系统盘扩容容量限制 一节内容),这里我输入的是
50 GB
,下图中的 ②。 - 安全设置:
- 如果是 Windows 系统,您只能使用密码认证
- 如果是 Linux 系统,而且 ECS 实例是 I/O 优化实例,您可以选择使用密码认证或 SSH 密钥对认证,下图中的 ③
- 配置费用:包含镜像的价格与系统盘的价格。根据我当前的配置,费用为
¥64.01
下图是我的配置情况:
上述设置确认无误后,单击 确定更换 按钮,将进入更换系统盘阶段。
更换系统盘大概需要 10 分钟左右的时间,在此期间,您可以通过 控制台 监控系统状态。在更换完成后,实例会自动启动。
特别说明
系统盘更换完成后,如果是 Linux 系统,原来系统盘中的文件系统(File System)的挂载信息会丢失,因此,您需要在新系统盘的 /etc/fstab
文件写入新分区信息,并挂载文件系统(但是不需要对数据盘分区和格式化)。挂载磁盘的具体操作请参考:如何对阿里云ECS服务器(Linux系统)的数据盘进行分区及挂载?
扩容数据盘
数据盘,根据运行的操作系统,可分为 Windows 磁盘和 Linux 磁盘,对这 2 种系统的数据盘扩容有不同的操作方式和步骤,因此,本节内容将分为 2 部分讲解:1、对 Windows 系统数据盘扩容操作;2、对 Linux 系统数据盘扩容操作。
1、Windows 系统下数据盘扩容
对于 Windows 服务器,对数据盘进行扩容分两步进行:
- 在 ECS 实例管理控制台扩容数据盘
- 登录远程实例,完成扩容操作
简单解释一下上面两步的操作。
第一步「在 ECS 实例管理控制台扩容数据盘」,是指增加数据盘的容量,比如由原来的 20 GiB 增加到 40 GiB,这是在 ECS 管理控制台的 磁盘列表 中完成的;第二步,则是通过 Windows 系统的 磁盘管理 工具完成,只有在完成第二步之后,新扩展的数据盘才能使用。
本小节内容的操作环境及配置如下:
- 操作系统:Windows Server 2012 R2(64位中文版)
- 扩容前容量:25 GiB
- 扩容后容量:30 GiB
具体操作如下。
第一步:在控制台上扩容数据盘
首先,登录阿里云账号,进入 ECS 云服务器管理控制台,然后,选择 存储 -> 云盘,进入 磁盘列表 页,找到需要扩容的磁盘,并在 操作 列中,依次点击 更多 -> 磁盘扩容 菜单:
然后进入「磁盘扩容」页面,如下图所示:
在 「磁盘扩容」页面上,需要指定 扩容后容量,我这里输入的是 30 GB
(注:扩容后的容量只能比当前磁盘容量大)的值,指定新的磁盘容量后,系统会计算本次扩容需要的费用。当页面上显示扩容后的费用信息后,点击
确定扩容 按钮,完成扩容。
下图是扩容成功后的界面:
完成上述步骤后,磁盘列表里会显示扩容后的容量,但还需要做以下操作:
- 如果数据盘已经挂载到 ECS 实例,可以直接执行下面的第二步:登录远程实例进行扩容。
- 如果数据盘未挂载到实例上,您应先挂载数据盘,然后,再根据数据盘的实际情况执行不同的操作:
- 如果这是一个全新的数据盘,您可以直接格式化数据盘(Windws 系统的磁盘格式化操作请参考:阿里云 Windows 服务器的数据盘挂载、分区及格式化)。
- 如果数据盘之前已经格式化并已分区,则可以进入第二步:登录远程实例进行扩容。
第二步:登录远程实例进行扩容
虽然已经在第一步对数据盘进行了扩容,但还不能使用。如果要使用,则需要登录远程 Windows 系统,对新扩容的磁盘进行 扩展卷 操作(就像我们个人使用的 PC 电脑,如果增加新硬盘,也需要对新增的硬盘进行相关操作才能使用)。
下面是具体操作步骤。
-
登录 Windows 系统
进入 ECS 实例列表,在「操作」一列,点击 远程连接 链接,在新打开的窗口中,输入远程连接密码,进入 Windows Server 登录界面,然后,输入正确的 Windows 登录密码,进入 Windows 系统桌面。
-
打开磁盘管理程序
进入 Windows 桌面后,右键点击 Windows 「开始」图标,选择「磁盘管理」:
选择「磁盘管理」菜单后,将进入 Windows 磁盘管理程序。
-
完成扩展卷操作
首先,我们查看要扩容的磁盘(本例是 磁盘 1)的状态,如果是「基本」,则需要转换成动态磁盘。在 磁盘 1 空白处鼠标右击,选择 转换到动态磁盘 菜单,并按页面提示将基本磁盘转换为动态磁盘。
完成转换后,我们再在 磁盘 1 新加卷区域的空白处点击鼠标右键,在弹出的菜单中选择 扩展卷... 菜单,如下图所示:
此时会打开「扩展卷向导」:
点击 下一步 按钮,选择要扩展的磁盘,如下图所示:
在该界面,指定要扩展的容量大小,我们使用 磁盘 1 的全部可用空间
5120 MB
(即:5 GiB)。然后点击 下一步,完成扩展卷向导。 -
查看扩容结果
完成上一步扩展卷向导后,返回磁盘管理界面,此时,我们可以看到,磁盘 1 的容量已经变成了
30 GiB
,盘符为D盘
,如下图所示:
2、Linux 系统下数据盘扩容
对于 Linux 服务器,对数据盘进行扩容也分两步进行:
- 在 ECS 实例管理控制台扩容数据盘空间
- 登录远程实例扩容文件系统
在扩容数据盘前,请注意以下几点:
- 挂载在实例上的数据盘,只有当实例处于 运行中 (Running) 或 已停止(Stopped) 状态时才可以扩容。扩容这种数据盘需要在控制台上重启实例后才能使扩容后的容量生效,而重启实例会停止实例,中断您的业务,所以请您谨慎操作。
- 建议在扩容数据盘之前手动创建快照,以备份数据。
- 无论数据盘的状态是 待挂载 还是 使用中,都可以执行磁盘扩容操作。
- 如果数据盘正在创建快照,则不允许执行扩容数据盘的操作。
本小节内容的操作环境及配置如下:
- 操作系统:CentOS 7.3 (64位)
- 登录方式:SSH
- 扩容前容量:40 GiB
- 扩容后容量:70 GiB
本例中,磁盘扩容前后都只有一个主分区(/dev/vdb1
,ext4
文件系统),挂载点为 resizetest
,
第一步:在控制台上扩容数据盘的存储空间
这一步操作,和上面「Windows 系统下数据盘扩容」一节的 第一步:在控制台上扩容数据盘 的操作步骤一样,这里不再重复。如不清楚,请参考上一节内容。
第二步:登录远程实例扩容文件系统
在 ECS 控制台上完成磁盘扩容后,磁盘每个分区的文件系统并未扩容。您需要登录实例扩容文件系统。
1、登录远程 ECS 实例
首先,在 SSH 终端登录远程 ECS 实例(我本地电脑操作系统是 macOS High Sierra 10.13.6,使用系统自带的终端程序登录)。
输入命令:ssh root@[您实例的公网IP地址]
,按回车之后,输入实例登录密码,即可登录远程 ECS 实例。
2、卸载主分区
当前主分区是 /dev/vdb1
,我们要通过 umount
命令来卸载主分区。命令为:umount /dev/vdb1
命令执行完之后,我们可以使用 df -h
来查看是否卸载成功。如果在输出的结果中看不到 /dev/vdb1
的信息,则表示卸载成功。
3、删除原分区,创建新分区
这一步,我们使用 fdisk
命令删除原来的分区并创建新分区,步骤如下:
- 首先运行
fdisk -l
命令罗列分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置。 - 运行命令
fdisk [数据盘设备名]
进入fdisk
命令交互界面。本示例中,命令为fdisk /dev/vdb
。 - 输入
d
并按回车键,删除原来的分区。说明:删除分区不会造成数据盘内数据的丢失。 - 输入
n
并按回车键,创建新分区,此时会让您选择分区类型(p
表示创建主分区,这是默认选项;e
表示创建扩展分区)。 - 由于我们只创建单一主分区,因此,这里输入
p
,然后按回车键。说明:如果要创建 4 个以上的分区,您应该创建至少一个扩展分区,即选择e
。 - 接下来输入分区编号(1-4中的一个),并按回车键。因为只创建一个分区,所以输入
1
。 - 输入第一个可用的扇区(First sector)编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致,因此直接按回车键采用默认值(这里是
2048
)。说明:如果发现 First sector 显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的fdisk
操作,使用parted
重新操作。 - 输入最后一个扇区(Last sector)编号:因为这里仅创建一个分区,所以按回车键采用默认值(这里是
62914559
)。 - 交互工具会提示
Partition 1 of type Linux and of size 30 GiB is set
,这时候,输入wq
退出交互界面,开始分区。
整个执行过程,如下图所示:
如果您使用的是 parted
工具,进入 parted
界面后,输入 p
列出当前的分区情况。如果有分区,则使用 rm+ 序列号
来删除老的分区表,然后使用 unit s
定义起始位置,单位使用扇区个数计量,最后使用 mkpart
命令来创建即可,如下图所示:
说明:在有些操作系统里,修改分区后可能会重新自动挂载文件系统。建议先执行
df -h
命令查看一下文件系统空间和使用情况,如果文件系统重新被挂载,执行umount [文件系统名称]
再次卸载文件系统。
4、变更文件系统大小
在修改分区后,首先检查文件系统,命令如下:e2fsck -f /dev/vdb1
。
e2fsck
命令输出结果如下:
说明:使用
e2fsck
检查文件系统时,由于系统需要检查并订正文件系统元数据,所以,该操作速度比较缓慢、耗费的时间较长,请耐心等待。
然后,变更文件系统大小,命令如下:resize2fs /dev/vdb1
。输出结果如下图:
5、重新挂载磁盘
将扩容完成的文件系统挂载到原来的挂载点,本示例挂载点为 /resizetest
,命令如下:
mount /dev/vdb1 /resizetest
挂载之后,使用 df -h
命令查看文件系统空间和使用情况,如下图所示:
如果出现扩容后的文件系统信息,说明挂载成功,这时可以使用扩容后的文件系统了。
更多关于 Linux 系统下磁盘分区格式化的操作详情,请参考:如何对阿里云ECS服务器(Linux系统)的数据盘进行分区及挂载? 一文。
本文总结
本文详细介绍了对阿里云 ECS 服务器的系统盘和数据盘扩容操作详细步骤。这里我们再梳理一下磁盘扩容操作的关键点。
扩容系统盘关键点:
- 需要了解系统盘扩容的容量限制
- 需要了解系统盘扩容的限制和风险
- 对系统盘扩容的操作,是在 ECS 管理控制台完成
- 对系统盘扩容,实际上是「更换系统盘」操作
- 对系统盘扩容前,需手工创建快照
- 对系统盘扩容前,需要创建自定义镜像
扩容数据盘关键点:
- 需要了解数据盘扩容的容量限制
- 需要了解数据盘扩容的限制和风险
- 扩容数据盘,分 2 步:1. 在控制台上扩容数据盘;2. 登录远程实例进行扩容
- 扩容 Windows 系统数据盘,使用「磁盘管理」工具完成
- 扩容 Linux 系统数据盘:
- 先卸载主分区(使用
umount
命令) - 再创建主分区(使用
fdisk
命令) - 然后再变更文件大小(使用
resize2fs
命令) - 最后挂载磁盘(使用
mount
命令)
- 先卸载主分区(使用
感谢阅读,希望对您有帮助。