云硬盘
最佳实践
文档版本 01
发布日期 2018-12-21
版权所有 © 华为技术有限公司 2021。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 通过 LVM 管理云硬盘... 1
1.1 LVM 简介...1
1.2 安装 LVM...2
1.3 通过 LVM 创建逻辑卷...3
1.4 创建并挂载文件系统... 6
1.5 使用未分配容量扩展逻辑卷的容量... 8
1.6 扩容云硬盘扩展逻辑卷的容量... 10
1.7 新增云硬盘扩展卷组的容量... 12
1.8 术语... 14
2 处理 Windows 云服务器磁盘空间不足的方法...15
2.1 简介... 15
2.2 使用系统自带磁盘清理工具清理磁盘空间... 15
2.3 使用控制面板卸载不需要的程序...17
3 使用云硬盘组建 RAID 磁盘阵列... 19
3.1 简介... 19
3.2 资源规划... 20
3.3 创建资源... 21
3.3.1 创建云服务器... 21
3.3.2 创建并挂载云硬盘... 22
3.4 使用 mdadm 工具创建 RAID 阵列... 23
3.5 配置 RAID 阵列开机自启动... 26
4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)...28
4.1 分区和文件系统扩展前准备(Linux 内核低于 3.6.0)... 28
4.2 扩展系统盘的分区和文件系统(Linux 内核低于 3.6.0)... 32
4.3 扩展数据盘的分区和文件系统(Linux 内核低于 3.6.0)... 39
4.4 扩展 SCSI 数据盘的分区和文件系统(Linux 内核低于 3.6.0)... 58
最佳实践 目 录
1 通过 LVM 管理云硬盘
1.1 LVM 简介
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分 区进行管理的一种机制。
LVM通过在云硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层云硬盘分 区布局,提高硬盘分区管理的灵活性,LVM的架构图如图1-1所示。
图1-1 LVM 架构
从上面LVM架构图中可以看出,使用LVM管理云硬盘的基本过程如下:
最佳实践 1 通过 LVM 管理云硬盘
1. 将云硬盘创建为物理卷
2. 将多个物理卷组合成卷组
3. 在卷组中创建逻辑卷
4. 在逻辑卷之上创建文件系统
通过LVM管理云硬盘之后,文件系统不再受限于云硬盘的大小,可以分布在多个云硬 盘上,也可以动态扩容。
如果需要对图1-1中的“ext4”文件系统进行扩容,通常有两种做法:
● 卷组中未分配的空间充足时,直接扩展逻辑卷的容量
● 卷组中未分配的空间不足时,扩展卷组的容量,再扩展逻辑卷的容量
1.2 安装 LVM
操作场景
默认情况下,弹性云服务器系统中并没有安装LVM,因此需要您手工安装。本章节将 帮助您查询您的弹性云服务器是否安装了LVM以及如何去安装LVM。
本文以云服务器的操作系统为“CentOS 7.4 64位”为例,不同云服务器的操作系统的 格式化操作可能不同,本文仅供参考。
前提条件
本指导假定您已有弹性云服务器,并为弹性云服务器绑定了弹性公网IP。
操作步骤
步骤1 以root用户登录弹性云服务器。
步骤2 执行以下命令,查看系统中是否安装了LVM管理工具。
rpm -qa |grep lvm2 回显类似如下信息:
[root@ecs-lvmtest ~]# rpm -qa |grep lvm2 lvm2-libs-2.02.177-4.el7.x86_64
lvm2-2.02.177-4.el7.x86_64
● 如果得到以上回显信息,则说明系统中已经安装了LVM工具,可直接查看通过
LVM创建逻辑卷。
● 如果未得到以上回显信息,则说明系统中未安装LVM工具,请执行步骤3完成安 装。
步骤3 执行以下命令,并根据回显提示信息安装LVM工具。
yum install lvm2 回显类似如下信息:
...
Installed:
最佳实践 1 通过 LVM 管理云硬盘
device-mapper-event.x86_64 7:1.02.146-4.el7 device-mapper-event-libs.x86_64 7:1.02.146-4.el7
device-mapper-persistent-data.x86_64 0:0.7.3-3.el7 lvm2-libs.x86_64 7:2.02.177-4.el7 Dependency Updated:
device-mapper.x86_64 7:1.02.146-4.el7 device-mapper-libs.x86_64 7:1.02.146-4.el7 Complete!
当回显显示“Complete!”时,表示安装LVM完成。
----结束
1.3 通过 LVM 创建逻辑卷
操作场景
如图1-2所示,本章节指导您在两块10GB的云硬盘之上创建一个15GB的逻辑卷。
说明
创建逻辑卷使用的多块云硬盘,规格可以不同。
创建过程为依次创建物理卷、创建卷组和创建逻辑卷。
图1-2 创建 LVM 逻辑卷示例
前提条件
安装LVM的弹性云服务器已经挂载了两块云硬盘。
操作步骤
步骤1 以root用户登录弹性云服务器。
最佳实践 1 通过 LVM 管理云硬盘
步骤2 执行如下命令,查看磁盘并记录设备名称。
fdisk -l | grep /dev/vd | grep -v vda 回显类似如下信息:
[root@ecs-lvmtest ~]# fdisk -l | grep /dev/vd | grep -v vda Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
可以看到云服务器上挂载的2块磁盘,设备名称分别为“/dev/vdb”、“/dev/vdc”。
步骤3 执行以下命令,将云硬盘创建为物理卷。
pvcreate 磁盘设备名1 磁盘设备名2 磁盘设备名3...
参数说明如下:
磁盘设备名:此处需要填写磁盘的设备名称,如果需要批量创建,可以填写多个设备 名称,中间以空格间隔。
命令示例:
pvcreate /dev/vdb /dev/vdc 回显类似如下信息:
[root@ecs-lvmtest ~]# pvcreate /dev/vdb /dev/vdc Physical volume "/dev/vdb" successfully created.
Physical volume "/dev/vdc" successfully created.
步骤4 执行如下命令,查看系统中物理卷的详细信息。
pvdisplay
回显类似如下信息:
[root@ecs-lvmtest ~]# pvdisplay
"/dev/vdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume --- PV Name /dev/vdc VG Name
PV Size 10.00 GiB Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID dypyLh-xjIj-PvG3-jD0j-yup5-O7SI-462R7C "/dev/vdb" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/vdb VG Name PV Size 10.00 GiB Allocatable NO PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID srv5H1-tgLu-GRTl-Vns8-GfNK-jtHk-Ag4HHB
可以看到系统有两个新的物理卷,物理卷名称分别为“/dev/vdc”、“/dev/vdb”。
最佳实践 1 通过 LVM 管理云硬盘
参数说明如下:
● 卷组名:可自定义,此处以vgdata为例。
● 物理卷名称:此处需要填写待添加进卷组的所有物理卷名称,中间以空格隔开。
命令示例:
vgcreate vgdata /dev/vdb /dev/vdc 回显类似如下信息:
[root@ecs-lvmtest ~]# vgcreate vgdata /dev/vdb /dev/vdc Volume group "vgdata" successfully created
步骤6 执行如下命令,查看系统中卷组的详细信息。
vgdisplay
回显类似如下信息:
[root@ecs-lvmtest ~]# vgdisplay --- Volume group ---
VG Name vgdata System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19.99 GiB PE Size 4.00 MiB Total PE 5118 Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GiB
VG UUID NLkZV7-hYYE-0w66-tnlt-Y6jL-Ik7S-76w4P6
步骤7 执行如下命令,创建逻辑卷。
lvcreate -L 逻辑卷大小 -n 逻辑卷名称卷组名称 参数说明如下:
● 逻辑卷大小:该值应小于卷组剩余可用空间大小,单位可以选择“MB”或
“GB”。
● 逻辑卷名称:可自定义,此处以lvdata1为例。
● 卷组名称:此处需要填写逻辑卷所在的卷组名称。
命令示例:
lvcreate -L 15GB -n lvdata1 vgdata 回显类似如下信息:
[root@ecs-lvmtest ~]# lvcreate -L 15GB -n lvdata1 vgdata Logical volume "lvdata1" created.
步骤8 执行如下命令,查询系统中逻辑卷的详细信息。
lvdisplay
最佳实践 1 通过 LVM 管理云硬盘
回显类似如下信息:
[root@ecs-lvmtest ~]# lvdisplay --- Logical volume ---
LV Path /dev/vgdata/lvdata1 LV Name lvdata1
VG Name vgdata
LV UUID c7mNcF-CdPW-5PLD-1gVj-QZpB-nHfy-PHXchV LV Write Access read/write
LV Creation host, time ecs-lvmtest.novalocal, 2018-11-29 11:28:18 +0800 LV Status available
# open 0 LV Size 15.00 GiB Current LE 3840 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 252:0
----结束
1.4 创建并挂载文件系统
操作场景
在创建完逻辑卷之后,需要在逻辑卷之上创建文件系统并挂载文件系统到相应目录 下。本章节指导您在逻辑卷之上创建“ext4”文件系统并挂载文件系统到“/Data1”
目录下。
操作步骤
步骤1 以root用户登录弹性云服务器。
步骤2 执行如下命令,创建文件系统。
mkfs.文件格式逻辑卷路径 命令示例:
mkfs.ext4 /dev/vgdata/lvdata1 回显类似如下信息:
[root@ecs-lvmtest ~]# mkfs.ext4 /dev/vgdata/lvdata1 mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2) Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks 983040 inodes, 3932160 blocks
196608 blocks (5.00%) reserved for the super user First data block=0
Maximum filesystem blocks=2151677952 120 block groups
32768 blocks per group, 32768 fragments per group 8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
最佳实践 1 通过 LVM 管理云硬盘
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
步骤3 执行如下命令,创建挂载目录。
mkdir 挂载目录 命令示例:
mkdir /Data1
步骤4 执行如下命令,将文件系统挂载到目录下。
mount 逻辑卷路径挂载目录 命令示例:
mount /dev/vgdata/lvdata1 /Data1 步骤5 执行如下命令,查询文件系统挂载信息。
mount | grep 挂载目录 命令示例:
mount | grep /Data1 回显类似如下信息:
[root@ecs-lvmtest ~]# mount | grep /Data1
/dev/mapper/vgdata-lvdata1 on /Data1 type ext4 (rw,relatime,data=ordered)
“dev/mapper/vgdata-lvdata1”为文件系统路径,记录此路径,步骤6中需要使用此 路径。
步骤6 执行以下步骤,设置云服务器系统启动时自动挂载文件系统。
如果未进行此项设置,在弹性云服务器重启时重新手动挂载文件系统。
1. 执行如下命令,查询文件系统的UUID。
blkid 文件系统路径
以查询“dev/mapper/vgdata-lvdata1”的UUID为例:
blkid /dev/mapper/vgdata-lvdata1 回显类似如下信息:
[root@ecs-lvmtest ~]# blkid /dev/mapper/vgdata-lvdata1
/dev/mapper/vgdata-lvdata1: UUID="c6a243ce-5150-41ac-8816-39db54d1a4b8" TYPE="ext4"
UUID为"c6a243ce-5150-41ac-8816-39db54d1a4b8"。
2. 执行以下命令,打开“/etc/fstab”文件。
vi /etc/fstab 回显类似如下信息:
[root@ecs-lvmtest ~]# vi /etc/fstab
## /etc/fstab
# Created by anaconda on Tue Nov 7 14:28:26 2017
## Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#UUID=27f9be47-838b-4155-b20b-e4c5e013cdf3 / ext4 defaults 1 1 UUID=2b2000b1-f926-4b6b-ade8-695ee244a901 /boot ext4 defaults 1 2
最佳实践 1 通过 LVM 管理云硬盘
3. 按“i”进入编辑模式。
4. 将光标移至文件末尾,按“Enter”,添加如下内容。
UUID=c6a243ce-5150-41ac-8816-39db54d1a4b8 /Data1 ext4 defaults 0 0
内容说明如下:
– 第一列:UUID,此处填写1查询的UUID;
– 第二列:文件系统的挂载目录,此处填写步骤3创建的挂载目录“/Data1”;
– 第三列:文件系统的文件格式,此处填写步骤2设置的文件格式“ext4”;
– 第四列:挂载选项,此处以“defaults”为例;
– 第五列:备份选项,设置为“1”时,系统自动对该文件系统进行备份;设置 为“0”时,不进行备份。此处以“0”为例;
– 第六列:扫描选项,设置为“1”时,系统在启动时自动对该文件系统进行扫 描;设置为“0”时,不进行扫描。此处以“0”为例。
5. 按“Esc”,输入“:wq!”,并按“Enter”。
保存设置并退出vi编辑器。
步骤7 执行以下步骤,验证自动挂载功能。
1. 执行如下命令,卸载文件系统。
umount 逻辑卷路径 命令示例:
umount /dev/vgdata/lvdata1
2. 执行如下命令,将/etc/fstab文件所有内容重新加载。
mount -a
3. 执行如下命令,查询文件系统挂载信息。
mount | grep 挂载目录 命令示例:
mount | grep /Data1
回显类似如下信息,说明自动挂载功能生效:
[root@ecs-lvmtest ~]# mount | grep /Data1
/dev/mapper/vgdata-lvdata1 on /Data1 type ext4 (rw,relatime,data=ordered)
----结束
1.5 使用未分配容量扩展逻辑卷的容量
操作场景
当逻辑卷容量不能满足用户需求时,可以扩展逻辑卷的容量。本指导假设您创建的 15GB逻辑卷已经不能满足需求,需要增加4GB容量。
说明
最佳实践 1 通过 LVM 管理云硬盘
操作步骤
步骤1 以root用户登录弹性云服务器。
步骤2 执行如下命令,扩展逻辑卷的容量。
lvextend -L +增加容量 逻辑卷路径 参数说明如下:
● 增加容量:该值应小于组卷剩余可用空间大小,单位可以选择“MB”或
“GB”。
● 逻辑卷路径:此处需要填写待扩容的逻辑卷的路径。
命令示例:
lvextend -L +4GB /dev/vgdata/lvdata1 回显类似如下信息:
[root@ecs-lvmtest ~]# lvextend -L +4GB /dev/vgdata/lvdata1
Size of logical volume vgdata/lvdata1 changed from 15.00 GiB (3840 extents) to 19.00 GiB (4864 extents).
Logical volume vgdata/lvdata1 successfully resized.
此时只是扩展的逻辑卷的容量,在其之上的文件系统也要随之进行扩展才能使用。
步骤3 执行如下命令,扩展文件系统的容量。
resize2fs 逻辑卷路径 命令示例:
resize2fs /dev/vgdata/lvdata1 回显类似如下信息:
[root@ecs-lvmtest ~]# resize2fs /dev/vgdata/lvdata1 resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgdata/lvdata1 is mounted on /Data1; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 28
The filesystem on /dev/vgdata/lvdata1 is now 3657728 blocks long.
步骤4 执行如下命令,查看文件系统容量是否增加。
df -h
回显类似如下信息:
[root@ecs-lvmtest ~]# df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda2 39G 1.5G 35G 5% /
devtmpfs 487M 0 487M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.7M 490M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda1 976M 131M 779M 15% /boot tmpfs 100M 0 100M 0% /run/user/0 /dev/mapper/vgdata-lvdata1 19G 44M 18G 1% /Data1
可以看到,文件系统“/dev/mapper/vgdata-lvdata1”的容量相比之前增加了4GB。
----结束
最佳实践 1 通过 LVM 管理云硬盘
1.6 扩容云硬盘扩展逻辑卷的容量
操作场景
当逻辑卷容量不能满足用户需求时,可以扩展逻辑卷的容量。本指导假设您创建的 19GB逻辑卷已经不能满足需求,通过扩容其中一个云硬盘,增加10GB容量。
操作步骤
步骤1 在控制台扩容云硬盘。
1. 登录管理控制台。
2. 选择“存储 > 云硬盘”。进入云硬盘页面。
3. 找到待扩容的云硬盘,扩容云硬盘。
关于扩容云硬盘的详细操作,请参见扩容“正在使用”状态的云硬盘容量。
步骤2 以root用户登录弹性云服务器。
步骤3 执行以下命令,查看系统是否正确识别扩容后的磁盘。
fdisk -l
回显类似如下信息:
扩容前/dev/vdb的容量是10GB,扩容后为20GB。
步骤4 执行如下命令,查看LVM的物理卷相关信息。
pvdisplay
回显类似如下信息:
最佳实践 1 通过 LVM 管理云硬盘
/dev/vdb的容量是10GB,说明物理卷容量未增加。
步骤5 执行如下命令,扩容该云硬盘对应的物理卷。
pvresize -v 磁盘设备名 命令示例:
pvresize -v /dev/vdb 回显类似如下信息:
说明/dev/vdb对应的物理卷扩容成功。
步骤6 如果还需要对现有分区进行扩容,执行如下命令,扩容对应逻辑卷。
lvextend -l +100%FREE 逻辑卷路径 命令示例:
lvextend -l +100%FREE /dev/vgdata/lvdata1 回显类似如下信息:
步骤7 执行如下命令,扩展磁盘分区文件系统的大小。
resize2fs 逻辑卷路径 命令示例:
resize2fs /dev/vgdata/lvdata1 回显类似如下信息:
步骤8 执行如下命令,查看扩容最终结果。
最佳实践 1 通过 LVM 管理云硬盘
lvdisplay
回显类似如下信息:
可以看到,逻辑卷容量“LV Size”已经增加10GB。
----结束
1.7 新增云硬盘扩展卷组的容量
操作场景
如图1-3所示,当LVM卷组的空间无法满足您的需求时,您可以通过新创建云硬盘、创 建物理卷、将物理卷添加到卷组中等操作,对LVM卷组进行扩容。
图1-3 扩容卷组示例
操作步骤
最佳实践 1 通过 LVM 管理云硬盘
2. 选择“存储 > 云硬盘”。进入云硬盘页面。
3. 单击“购买磁盘”,创建云硬盘。
关于创建云硬盘的详细操作,请参见云硬盘用户指南。
4. 在云硬盘列表,找到新创建的云硬盘,单击“挂载”。
5. 选择云硬盘待挂载的云服务器,该云服务器必须与云硬盘位于同一个可用分区,
通过下拉列表选择“挂载点”。
返回云硬盘列表页面,此时云硬盘状态为“正在挂载”,表示云硬盘处于正在挂 载至云服务器的过程中。当云硬盘状态为“正在使用”时,表示挂载至云服务器 成功。
步骤2 以root用户登录弹性云服务器。
步骤3 执行如下命令,查看系统中当前卷组的容量。
vgdisplay
回显类似如下信息:
[root@ecs-lvmtest ~]# vgdisplay --- Volume group ---
VG Name vgdata System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 19.99 GiB PE Size 4.00 MiB Total PE 5118
Alloc PE / Size 4864 / 19.00 GiB Free PE / Size 254 / 1016.00 MiB
VG UUID NLkZV7-hYYE-0w66-tnlt-Y6jL-Ik7S-76w4P6
可以看到,当前卷组容量“VG Size”为19.99 GiB。
步骤4 执行如下命令,查看磁盘并记录设备名称。
fdisk -l | grep /dev/vd | grep -v vda 回显类似如下信息:
[root@ecs-lvmtest ~]# fdisk -l | grep /dev/vd | grep -v vda Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdc: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
可以看到云服务器上新挂载的磁盘,设备名称为“/dev/vdd”。
步骤5 执行如下命令,将新挂载的磁盘创建为物理卷。
pvcreate 磁盘设备名 命令示例:
pvcreate /dev/vdd 回显类似如下信息:
最佳实践 1 通过 LVM 管理云硬盘
[root@ecs-lvmtest ~]# pvcreate /dev/vdd Physical volume "/dev/vdd" successfully created.
步骤6 执行如下命令,添加物理卷到卷组中,对卷组进行扩容。
vgextend 卷组名称物理卷名称 命令示例:
vgextend vgdata /dev/vdd 回显类似如下信息:
[root@ecs-lvmtest ~]# vgextend vgdata /dev/vdd Volume group "vgdata" successfully extended
步骤7 执行如下命令,查看系统中卷组的详细信息。
vgdisplay
回显类似如下信息:
[root@ecs-lvmtest ~]# vgdisplay --- Volume group ---
VG Name vgdata System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size <29.99 GiB PE Size 4.00 MiB Total PE 7677
Alloc PE / Size 4864 / 19.00 GiB Free PE / Size 2813 / <10.99 GiB
VG UUID NLkZV7-hYYE-0w66-tnlt-Y6jL-Ik7S-76w4P6
可以看到,卷组容量“VG Size”已经增加10GB。
----结束
1.8 术语
● 物理卷(Physical Volume)
物理卷由云硬盘和LVM管理参数组成,是LVM的基本存储设备。
● 卷组(Volume Group)
卷组是将所有的物理卷首尾相连,组成的一个在逻辑上连续编址的大存储池。
● 逻辑卷(Logical Volume)
逻辑卷是卷组按照逻辑进行分区所得到的。
最佳实践 1 通过 LVM 管理云硬盘
2 处理 Windows 云服务器磁盘空间不足的方 法
2.1 简介
当云服务器的磁盘空间不足时,会影响云服务器的运行速度,降低使用体验。当磁盘 空间不足时,此时你可以通过以下两种途径来处理:
● 清理磁盘空间,详细方法如下:
– 使用系统自带磁盘清理工具清理磁盘空间
– 使用控制面板卸载不需要的程序
● 扩容磁盘,详细方法如下:
– 扩容状态为“正在使用”的云硬盘
– 扩容状态为“可用”的云硬盘
本手册基于华为云云硬盘实践所编写,以操作系统为Windows 2016的云服务器为例。
介绍了清理磁盘空间的常用操作。同时建议在日常使用中养好良好的磁盘使用习惯,
定期清理冗余文件,有助于您节省磁盘空间。
● 定期将不常用的文件压缩保存,节省磁盘空间。
● 定期使用磁盘清理工具清理磁盘空间,删除不需要的文件,并定期清理回收箱。
● 卸载不需要的程序,释放磁盘空间。
2.2 使用系统自带磁盘清理工具清理磁盘空间
操作场景
本章节指导用户通过Windows操作系统自带的磁盘清理工具来清理空间不足的磁盘。
本文以操作系统为“Windows Server 2016 Standard 64bit”的云服务器为例。不同 操作系统的云服务器清理步骤可能不同,本文仅供参考,具体操作步骤和差异请参考 对应操作系统的产品文档。
最佳实践 2 处理 Windows 云服务器磁盘空间不足的方法
操作步骤
步骤1 在云服务器桌面,单击左下方开始图标。
弹出常用程序窗口。
步骤2 在左侧导航栏中,选择“Windows管理工具 > 磁盘清理”。
弹出“磁盘清理:驱动器选择”窗口。
图2-1 磁盘清理:驱动器选择
步骤3 在下拉框中,选择待清理的磁盘,以“C盘”为例。
弹出“磁盘清理”窗口,此时系统自动计算可在C盘上释放的空间。
图2-2 磁盘清理
步骤4 自动计算完成后,在弹窗中勾选要删除的文件,并单击“确定”。
弹出确认删除对话框。
图2-3 确认删除
最佳实践 2 处理 Windows 云服务器磁盘空间不足的方法
步骤5 单击“删除文件”,开始清理磁盘,释放磁盘空间。
----结束
2.3 使用控制面板卸载不需要的程序
操作场景
本章节指导用户通过控制面板卸载不需要的程序。
本文以操作系统为“Windows Server 2016 Standard 64bit”的云服务器为例。不同 操作系统的云服务器清理步骤可能不同,本文仅供参考,具体操作步骤和差异请参考 对应操作系统的产品文档。
操作步骤
步骤1 在云服务器桌面,单击左下方开始图标。
弹出常用程序窗口。
步骤2 在左侧导航栏中,选择“Windows系统 > 控制面板”。
弹出“所有控制面板项”窗口。
图2-4 所有控制面板项
步骤3 在导航列表中,选择“程序和功能”。
进入“程序和功能”窗口。
最佳实践 2 处理 Windows 云服务器磁盘空间不足的方法
图2-5 程序和功能
步骤4 在程序列表中,单击待卸载的程序,并右键单击“卸载”。
弹出确认卸载对话框。
图2-6 确认卸载
步骤5 单击“是”,开始卸载程序,释放磁盘空间。
----结束
最佳实践 2 处理 Windows 云服务器磁盘空间不足的方法
3 使用云硬盘组建 RAID 磁盘阵列
3.1 简介
独立冗余磁盘阵列(Redundant Array of Independent Disks,RAID),是把多块独 立的磁盘(物理磁盘)按照一定的方式组合构建磁盘组(逻辑磁盘)。相比单个磁 盘,能够提升存储性能和数据可靠性。
说明
此处的物理磁盘由云硬盘替代,将独立的云硬盘组成RAID阵列,原理与使用物理磁盘相同。
本手册以操作系统为CentOS 7.4的云服务器为例,共使用4块云硬盘介绍了组件 RAID10的方法。RAID10是结合RAID1和RAID0两种磁盘阵列,先将磁盘两两组建成 RAID1镜像,再组建RAID0将数据分条存储,至少需要4块磁盘。云服务资源的具体信 息如下:
● 资源规划:资源规划
● 创建资源:创建云服务器、创建并挂载云硬盘
常见 RAID 磁盘阵列介绍
表3-1 常见 RAID 磁盘阵列介绍 RAID
级别
简介 读写性能 安全性能 磁盘使
用率
组建不同RAID 阵列所 需的最 少磁盘 数量 RAID0 RAID0将数据分
条存储在多个磁 盘上,可实现并 行读写,提供最 快的读写速率。
多个磁盘并行读 写获取更高性能
最差 没有冗余能 力,一个磁盘 损坏,整个 RAID阵列数据 都不可用
100% 两块
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
RAID 级别
简介 读写性能 安全性能 磁盘使
用率
组建不同RAID 阵列所 需的最 少磁盘 数量 RAID1 通过构造数据镜
像实现数据冗 余,阵列中一半 的磁盘容量投入 使用,另一半磁 盘容量用来做镜 像,提供数据备 份。
读性能:与单个 磁盘相同 写性能:需要将 数据写入是两个 磁盘,写性能低 于单个磁盘
最高
提供磁盘数据 的完整备份,
当阵列中的一 个磁盘失效 时,系统可以 自动采用镜像 磁盘的数据
50% 两块
RAID01 结合RAID0和 RAID1两种磁盘 阵列,先将一半 磁盘组建成 RAID0分条存储 数据,再用另一 半磁盘做RAID1 镜像。
读性能:和 RAID0相同 写性能:和 RAID1相同
比RAID10的安
全性能低 50% 四块
RAID10 结合RAID1和 RAID0两种磁盘 阵列,先将磁盘 两两组建成 RAID1镜像,再 组建RAID0将数 据分条存储。
读性能:RAID0 相同
写性能:RAID1 相同
和RAID1的安 全性能相同
50% 四块
RAID5 RAID5不需要单 独指定数据校验 磁盘,而是将每 块磁盘生成的校 验信息分块存储 至阵列中的每块 磁盘中。
读性能:和 RAID0相同 写性能:由于要 写入奇偶校验信 息,写性能低于 单个磁盘
比RAID10的安
全性能低 66.7% 三块
3.2 资源规划
本章节介绍了组建RAID10的云服务器及云硬盘资源的规划情况。
云服务器资源
本示例中创建了1台云服务器,参数配置如表3-2所示。
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
表3-2 云服务器配置参数
参数 配置信息
名称 ecs-raid10 镜像 CentOS 7.4 64bit
规格 通用计算型、s2.medium.2(1vCPUs、2GB内存)
弹性公网IP地址 139.XX.XX.XX 私有IP地址 192.168.1.189
云硬盘资源
由于组建RAID10至少需要4块云硬盘,本示例中批量创建了4块云硬盘,并挂载至云服 务。
3.3 创建资源
3.3.1 创建云服务器
操作场景
本章节指导用户创建云服务器。本示例中共创建1台云服务器,配置情况请参见资源规 划。
操作步骤
步骤1 登录管理控制台。
步骤2 选择“计算 > 弹性云服务器”。
进入弹性云服务器页面。
步骤3 单击“购买弹性云服务器”。
关于创建弹性云服务器的详细操作,请参见“弹性云服务器用户指南”。
创建云服务器过程中,以下参数请按照说明配置:
● 镜像:本示例中云服务器的镜像为“CentOS 7.4 64bit”。
● 弹性公网IP地址:云服务器需要访问公网时,必须使用弹性公网IP,由于本示例需 要安装mdadm(multiple devices admin)工具,因此必须开通弹性公网IP。请 您根据实际情况购买或者使用已有。
本示例中使用新购买的IP,如图3-1所示。
图3-1 配置弹性公网 IP
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
本示例创建1台云服务器,具体参数如表3-3所示。
表3-3 云服务器规格
云服务器规格 计费模式 数量
规格 通用计算型 | s2.medium.2 |
1vCPUs | 2GB 按需付费 1 镜像 CentOS 7.4 64bit
系统盘 高IO, 40GB 虚拟私有云 vpc-1a55 安全组 Sys-default
网卡 subnet-1a55(192.168.1.0/24) 弹性公网IP 规格: 静态BGP
计费方式: 按带宽计费 带宽:
5Mbit/s 云服务器名
称 ecs-raid10
----结束
3.3.2 创建并挂载云硬盘
操作场景
本章节指导用户批量创建4块云硬盘,并挂载至云服务器。
操作步骤
步骤1 登录管理控制台。
步骤2 选择“存储 > 云硬盘”。
进入云硬盘页面。
步骤3 单击“购买磁盘”,创建云硬盘。
关于创建云硬盘的详细操作,请参见“云硬盘用户指南”。
本示例为批量创建4块云硬盘,具体参数如图3-2所示。
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
图3-2 云硬盘规格
步骤4 将云硬盘挂载至云服务器。
----结束
3.4 使用 mdadm 工具创建 RAID 阵列
操作场景
本章节指导用户通过mdadm工具创建RAID阵列,以RAID10为例。
本文以云服务器的操作系统为“CentOS 7.4 64bit ”为例。不同云服务器的操作系统 的配置可能不同,本文仅供参考,具体操作步骤和差异请参考对应操作系统的产品文 档。
操作步骤
步骤1 使用root用户登录云服务器。
步骤2 执行以下命令,查看磁盘并记录设备名称。
fdisk -l | grep /dev/vd | grep -v vda 回显类似如下信息:
[root@ecs-raid10 ~]# fdisk -l | grep /dev/vd | grep -v vda Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdc: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdd: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vde: 10.7 GB, 10737418240 bytes, 20971520 sectors
可以看到云服务器上挂载的4块磁盘,设备名称分别为“/dev/vdb”、“/dev/vdc”、
“/dev/vdd”和“/dev/vde”。
步骤3 执行以下命令,安装mdadm工具。
yum install mdadm -y 说明
mdadm是Linux下的RAID管理工具,务必确保安装mdadm工具的云服务器已开通弹性公网IP。
回显类似如下信息:
[root@ecs-raid10 ~]# yum install mdadm -y ...
Installed:
mdadm.x86_64 0:4.0-13.el7
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
Dependency Installed:
libreport-filesystem.x86_64 0:2.1.11-40.el7.centos Complete!
步骤4 执行以下命令,使用步骤2中查到的4块磁盘创建RAID阵列。
mdadm -Cv RAID阵列设备名 -a yes -n 磁盘数量 -l RAID级别 磁盘1设备名 磁盘2设 备名 磁盘3设备名 磁盘4设备名...
参数说明如下:
● RAID阵列设备名:可自定义,此处以/dev/md0为例。
● 磁盘数量:根据实际情况填写,此处RAID10至少为4块。
不同的RAID阵列要求的最小磁盘数量不同,具体说明请参见简介。
● RAID级别:根据实际情况填写,此处以RAID10为例。
● 磁盘设备名:此处需要填写待组建RAID阵列的所有磁盘设备名,中间以空格隔 开。
命令示例:
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/vdb /dev/vdc /dev/vdd /dev/vde 回显类似如下信息:
[root@ecs-raid10 ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/vdb /dev/vdc /dev/vdd /dev/vde mdadm: layout defaults to n2
mdadm: layout defaults to n2 mdadm: chunk size defaults to 512K mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
步骤5 执行以下命令,格式化新建的RAID阵列。
mkfs.文件格式 RAID阵列设备名 命令示例:
mkfs.ext4 /dev/md0 回显类似如下信息:
[root@ecs-raid10 ~]# mkfs.ext4 /dev/md0 mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2) Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks 1310720 inodes, 5238272 blocks
261913 blocks (5.00%) reserved for the super user First data block=0
Maximum filesystem blocks=2153775104 160 block groups
32768 blocks per group, 32768 fragments per group 8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Allocating group tables: done
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
步骤6 执行以下命令,创建挂载目录。
mkdir 挂载目录 命令示例:
mkdir /RAID10
步骤7 执行以下命令,挂载RAID阵列设备名。
mount RAID阵列设备名挂载目录 命令示例:
mount /dev/md0 /RAID10
步骤8 执行以下命令,查看RAID阵列的挂载结果。
df -h
回显类似如下信息:
[root@ecs-raid10 ~]# df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda2 39G 1.5G 35G 5% /
devtmpfs 911M 0 911M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.6M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/vda1 976M 146M 764M 17% /boot tmpfs 184M 0 184M 0% /run/user/0 /dev/md0 20G 45M 19G 1% /RAID10
步骤9 执行以下步骤,设置云服务器系统启动时自动挂载RAID阵列。
1. 执行以下命令,打开“/etc/fstab”文件。
vi /etc/fstab
2. 按“i”进入编辑模式。
回显类似如下信息:
[root@ecs-raid10 ~]# vi /etc/fstab
## /etc/fstab
# Created by anaconda on Tue Nov 7 14:28:26 2017
## Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#UUID=27f9be47-838b-4155-b20b-e4c5e013cdf3 / ext4 defaults 1 1 UUID=2b2000b1-f926-4b6b-ade8-695ee244a901 /boot ext4 defaults 1 2
3. 参考以下示例,在文件的最后一行添加如下配置:
/dev/md0 /RAID10 ext4 defaults 0 0
4. 按“Esc”,输入“:wq!”,并按“Enter”。
保存设置并退出vi编辑器。
步骤10 执行以下命令,查看磁盘RAID阵列的信息。
mdadm -D RAID阵列设备名 命令示例:
mdadm -D /dev/md0 回显类似如下信息:
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
[root@ecs-raid10 ~]# mdadm -D /dev/md0 /dev/md0:
Version : 1.2
Creation Time : Thu Nov 8 15:49:02 2018 Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB) Used Dev Size : 10476544 (9.99 GiB 10.73 GB) Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent Update Time : Thu Nov 8 16:15:11 2018 State : clean
Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Consistency Policy : resync
Name : ecs-raid10.novalocal:0 (local to host ecs-raid10.novalocal) UUID : f400dbf9:60d211d9:e006e07b:98f8758c
Events : 19
Number Major Minor RaidDevice State
0 253 16 0 active sync set-A /dev/vdb 1 253 32 1 active sync set-B /dev/vdc 2 253 48 2 active sync set-A /dev/vdd 3 253 64 3 active sync set-B /dev/vde
----结束
3.5 配置 RAID 阵列开机自启动
操作场景
本章节指导用户在mdadm配置文件中添加新建RAID阵列的信息,例如设备名、UUID 等。系统启动时,通过查询文件中配置的信息,启动运行可用的RAID阵列。
本文以云服务器的操作系统为“CentOS 7.4 64bit ”为例。不同云服务器的操作系统 的配置可能不同,本文仅供参考,具体操作步骤和差异请参考对应操作系统的产品文 档。
操作步骤
步骤1 使用root用户登录云服务器。
步骤2 执行以下命令,查看RAID阵列的UUID等信息。
mdadm --detail --scan 回显类似如下信息:
[root@ecs-raid10 ~]# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:98f8758c
步骤3 执行以下步骤,在mdadm文件中添加新建RAID阵列的信息。
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
2. 按“i”进入编辑模式。
3. 参考以下示例,在文件最后添加如下配置:
DEVICE /dev/vdb /dev/vdc /dev/vdd /dev/vde
ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:
98f8758c
说明如下:
– DEVICE行:为组建RAID阵列的磁盘设备名,多个磁盘设备名以空格隔开。
– ARRAY行:此处填写步骤2中查到的RAID阵列信息。
说明
此处仅为本示例的信息,请根据RAID阵列的实际信息添加。
4. 按“Esc”,输入“:wq!”,并按“Enter”。
保存设置并退出vi编辑器。
步骤4 执行以下命令,查看“mdadm.conf”文件是否修改成功。
more /etc/mdadm.conf 回显类似如下信息:
[root@ecs-raid10 ~]# more /etc/mdadm.conf DEVICE /dev/vdb /dev/vdc /dev/vdd /dev/vde
ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:98f8758c
可以看到步骤3中添加的信息,表示修改成功。
----结束
最佳实践 3 使用云硬盘组建 RAID 磁盘阵列
4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
4.1 分区和文件系统扩展前准备(Linux 内核低于 3.6.0)
扩展磁盘分区和文件系统前,请先检查磁盘的分区形式和文件系统,并根据磁盘的分 区形式选择对应的操作指导。
1. 检查磁盘分区形式,请参见:
– 方法一:使用fdisk命令查看分区形式和文件系统
– 方法二:使用parted命令查看分区形式和文件系统
2. 选择操作指导,请参见表4-1。
表4-1 分区和文件系统扩展场景说明
磁盘 场景 方法
系统盘 为扩容部分的云硬盘分配新的
MBR分区 新增MBR分区
将扩容部分的容量划分至已有的
MBR分区内 扩大已有MBR分区(内核版本
低于3.6.0)
数据盘 为扩容部分的云硬盘分配新的
MBR分区 新增MBR分区
将扩容部分的容量划分至已有的
MBR分区内 扩大已有MBR分区
为扩容部分的云硬盘分配新的
GPT分区 新增GPT分区
将扩容部分的容量划分至已有的
GPT分区内 扩大已有GPT分区
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
磁盘 场景 方法 将扩容部分的容量划分至已有的
MBR分区内 扩大已有MBR分区
说明
MBR分区支持的磁盘最大容量为2 TB,超过2 TB的部分无法使用。
如果当前磁盘采用MBR分区形式,并且需要将该磁盘扩容至2 TB以上投入使用。则必须将 磁盘分区形式由MBR切换成GPT,期间会中断业务,并且更换磁盘分区形式时会清除磁盘 的原有数据,请在扩容前先对数据进行备份。
方法一:使用 fdisk 命令查看分区形式和文件系统
步骤1 执行以下命令,查看云服务器挂载的所有磁盘情况。
lsblk
回显类似如下信息:
[root@ecs-test-0001 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part / vdb 253:16 0 150G 0 disk
└─vdb1 253:17 0 100G 0 part /mnt/sdc
本示例中数据盘“/dev/vdb”扩容前已有分区“/dev/vdb1”,将数据盘扩容50GB 后,新增的容量还未划分磁盘分区,因此“/dev/vdb”显示150GB,“/dev/vdb1”显 示100GB。
说明
如果执行了lsblk,发现磁盘“/dev/vdb”没有分区,针对这种没有分区的磁盘,扩容后的容量 可能无法正常使用,解决方法请参见Linux系统扩容数据盘时,如何扩展未分区磁盘文件系统 步骤2 执行以下命令,查看当前磁盘分区的分区形式。
fdisk -l
回显类似如下信息:
[root@ecs-test-0001 ~]# fdisk -l
Disk /dev/vda: 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: 0x000bcb4e
Device Boot Start End Blocks Id System /dev/vda1 * 2048 83886079 41942016 83 Linux Disk /dev/vdb: 161.1 GB, 161061273600 bytes, 314572800 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: 0x38717fc1
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
Device Boot Start End Blocks Id System /dev/vdb1 2048 209715199 104856576 83 Linux
“system”为“Linux”表示分区形式为MBR。“system”为“GPT”表示分区形式为 GPT。
● 若回显中没有列出所有的磁盘分区,和步骤1中的信息不符合。可能原因是:磁盘 已有分区为GPT,并且扩容后存在未分配分区的空间,此时使用fdisk -l无法查看 所有分区的信息,请参考方法二:使用parted命令查看分区形式和文件系统重新 确认磁盘分区形式和文件系统。
● 若回显中列出了所有的磁盘分区,和步骤1中的信息符合,则继续执行以下操作。
步骤3 执行以下命令,查看磁盘分区的文件系统格式。
blkid 磁盘分区 命令示例:
blkid /dev/vdb1
“TYPE”为“ext4”:表示为/dev/vdb1的文件系统是ext4。
步骤4 执行以下命令,确认文件系统的状态。
ext*:e2fsck -n 磁盘分区 xfs:xfs_repair -n 磁盘分区 以“ext4” 为例:
e2fsck -n /dev/vdb1 回显类似如下信息:
[root@ecs-test-0001 ~]# e2fsck -n /dev/vdb1 e2fsck 1.42.9 (28-Dec-2013)
Warning! /dev/vdb1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/vdb1: clean, 11/6553600 files, 459544/26214144 blocks
文件系统状态为clean表示状态正常,若不是clean,请先修复问题后执行扩容操作。
----结束
方法二:使用 parted 命令查看分区形式和文件系统
步骤1 执行以下命令,查看云服务器挂载的所有磁盘情况。
lsblk
回显类似如下信息:
[root@ecs-test-0001 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part / vdb 253:16 0 150G 0 disk
└─vdb1 253:17 0 100G 0 part /mnt/sdc
本示例中数据盘“/dev/vdb”扩容前已有分区“/dev/vdb1”,将数据盘扩容50GB 最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
说明
如果执行了lsblk,发现磁盘“/dev/vdb”没有分区,针对这种没有分区的磁盘,扩容后的容量 可能无法正常使用,解决方法请参见Linux系统扩容数据盘时,如何扩展未分区磁盘文件系统。
步骤2 执行以下命令,指定一块磁盘,然后输入“p”,查看磁盘的分区形式。
parted 磁盘
以查看“/dev/vdb”的分区形式为例:
parted /dev/vdb 回显类似如下信息:
[root@ecs-test-0001 ~]# parted /dev/vdb GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the
disk is smaller. Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? Fix
Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 104857600
blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: Virtio Block Device (virtblk) Disk /dev/vdb: 161GB
Sector size (logical/physical): 512B/512B Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags 1 1049kB 107GB 107GB ext4 test (parted)
“Partition Table”表示当前磁盘的分区形式,msdos表示磁盘分区形式为MBR,gpt 表示磁盘分区形式为GPT。
● 若系统出现以下Error,请输入“Fix”。
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the
disk is smaller. Fix, by moving the backup to the end (and removing the old backup)?
GPT分区表信息存储在磁盘开头,为了减少分区表损坏的风险,同时在磁盘末尾 会备份一份。当磁盘容量扩大后,末尾位置也会随之变化,因此需要根据系统提 示输入“Fix”,将分区表信息的备份文件挪到新的磁盘末尾位置。
● 若系统出现以下Warning,请输入“Fix”。
Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 104857600
blocks) or continue with the current setting?
Fix/Ignore? Fix
根据系统提示输入“Fix”,系统会自动将磁盘扩容部分的容量设置为GPT。
步骤3 查看完成后,输入“q”,退出parted模式。
----结束
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
4.2 扩展系统盘的分区和文件系统(Linux 内核低于 3.6.0)
操作场景
通过云服务管理控制台扩容成功后,仅扩大了云硬盘的存储容量,因此需要参考本章 节操作扩展分区和文件系统。
对于Linux操作系统而言,需要将扩容部分的容量划分至已有分区内,或者为扩容部分 的云硬盘分配新的分区。
如果在云服务器关机的时候扩容了系统盘,则开机后,Linux系统盘的新增容量可能会 自动扩展至末尾分区内,此时新增容量可以直接使用。
本文以内核低于3.6.0的“CentOS 6.5 64bit”操作系统为例,提供growpart和fdisk两 种工具的扩容指导。不同操作系统的操作可能不同,本文仅供参考,具体操作步骤和 差异请参考对应操作系统的产品文档。
● 扩大已有MBR分区(内核版本低于3.6.0)
● 新增MBR分区
查看Linux内核版本方法请参见查看Linux操作系统内核版本。
须知
扩容时请谨慎操作,误操作可能会导致数据丢失或者异常,建议扩容前对数据进行备 份,可以使用CBR或者快照功能,CBR请参见管理备份云硬盘,快照功能请参见创建快 照(公测)。
前提条件
● 已通过管理控制台扩容系统盘容量,并已挂载至云服务器,请参见扩容“正在使 用”状态的云硬盘容量或者扩容“可用”状态的云硬盘容量。
● 已登录云服务器。
– 弹性云服务器请参见登录弹性云服务器。
– 裸金属服务器请参见登录裸金属服务器。
查看 Linux 操作系统内核版本
执行以下命令,查看Linux操作系统内核版本。
uname -a
需要根据Linux内核版本是否高于3.6.0选择对应的操作:
● 以“CentOS 7.4 64bit”为例,回显类似如下信息:
Linux ecs-test-0001 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64
内核版本为3.10.0,高于3.6.0,具体操作请参见扩展系统盘的分区和文件系统
(Linux内核高于3.6.0)。
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
内核版本为2.6.32,低于3.6.0,需要reboot重启,才可以完成分区和文件系统扩 展,具体操作请参见本章节内容。
扩大已有 MBR 分区(内核版本低于 3.6.0)
须知
当操作系统内核低于3.6.0时,扩大已有MBR分区需要reboot重启,扩展分区和文件系 统才会生效,会中断业务。
reboot重启后,新增容量会自动扩展至系统盘末尾分区内。
以“CentOS 6.5 64bit”操作系统为例,系统盘“/dev/vda”原有容量40GB,只有一 个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的60GB划分至已 有的MBR分区内“/dev/vda1”内。
步骤1 (可选)执行以下命令,安装growpart扩容工具。
yum install cloud-utils-growpart 说明
可以用growpart命令检查当前系统是否已安装growpart扩容工具,若回显为工具使用介绍,则 表示已安装,无需重复安装。
步骤2 执行以下命令,安装dracut-modules-growroot工具。
yum install dracut-modules-growroot 回显类似如下信息:
[root@ecs-test-0002 ~]# yum install dracut-modules-growroot Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
epel/metalink | 4.3 kB 00:00
* epel: pubmirror1.math.uh.edu
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
Package dracut-modules-growroot-0.20-2.el6.noarch already installed and latest version Nothing to do
步骤3 执行以下命令,重新生成initramfs文件。
dracut -f
步骤4 执行以下命令,查看系统盘“/dev/vda”的总容量。
fdisk -l
回显类似如下信息:
[root@ecs-test-0002 ~]# fdisk -l
Disk /dev/vda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004e0be
Device Boot Start End Blocks Id System /dev/vda1 * 1 5222 41942016 83 Linux
步骤5 执行以下命令,查看系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
[root@ecs-test-0002 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 43G 1.7G 39G 5% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
步骤6 执行以下命令,重启云服务器。
reboot
待重启完成后,重新连接云服务器后,执行以下操作。
步骤7 执行以下命令,查看扩容后系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
[root@ecs-test-0002 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 106G 1.7G 99G 2% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
----结束
新增 MBR 分区
系统盘“/dev/vda”原有容量40GB,只有一个分区“/dev/vda1”。将系统盘容量扩 大至80GB,本示例为新增的40GB分配新的MBR分区“/dev/vda2”。
步骤1 执行以下命令,查看磁盘的分区信息。
fdisk -l
回显类似如下信息:
[root@ecs-2220 ~]# fdisk -l
Disk /dev/vda: 85.9 GB, 85899345920 bytes, 167772160 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: 0x0008d18f
Device Boot Start End Blocks Id System /dev/vda1 * 2048 83886079 41942016 83 Linux
表示当前系统盘“dev/vda”容量为80 GB,当前正在使用的分区“dev/vda1”为40 GB,新扩容的40 GB还未分配分区。
步骤2 执行如下命令之后,进入fdisk分区工具。
fdisk /dev/vda
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
步骤3 输入“n”,按“Enter”,开始新建分区。
回显类似如下信息:
Command (m for help): n Partition type:
p primary (1 primary, 0 extended, 3 free) e extended
表示磁盘有两种分区类型:
● “p”表示主分区。
● “e”表示扩展分区。
说明
磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不 可以直接使用,需要划分成若干个逻辑分区才可以使用。
磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。
步骤4 以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。
回显类似如下信息:
Select (default p): p
Partition number (2-4, default 2):
步骤5 以分区编号选择“2”为例,输入分区编号“2”,按“Enter”。
回显类似如下信息:
Partition number (2-4, default 2): 2
First sector (83886080-167772159, default 83886080):
步骤6 输入新分区的起始磁柱值,以使用默认起始磁柱值为例,按“Enter”。
系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,
或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
回显类似如下信息:
First sector (83886080-167772159, default 83886080):
Using default value 83886080
Last sector, +sectors or +size{K,M,G} (83886080-167772159,default 167772159):
步骤7 输入新分区的截止磁柱值,以使用默认截止磁柱值为例,按“Enter”。
系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,
或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
回显类似如下信息:
Last sector, +sectors or +size{K,M,G} (83886080-167772159, default 167772159):
Using default value 167772159
Partition 2 of type Linux and of size 40 GiB is set Command (m for help):
步骤8 输入“p”,按“Enter”,查看新建分区。
回显类似如下信息:
Command (m for help): p
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
Disk /dev/vda: 85.9 GB, 85899345920 bytes, 167772160 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: 0x0008d18f
Device Boot Start End Blocks Id System /dev/vda1 * 2048 83886079 41942016 83 Linux /dev/vda2 83886080 167772159 41943040 83 Linux Command (m for help):
步骤9 输入“w”,按“Enter”,将分区结果写入分区表中。
回显类似如下信息:
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.
表示分区创建完成。
说明
如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保 留。
步骤10 执行以下命令,将新的分区表变更同步至操作系统。
partprobe
步骤11 执行以下命令,设置新建分区文件系统格式。
mkfs -t 文件系统磁盘分区
● ext*文件系统命令示例:
以“ext4” 文件格式为例:
mkfs -t ext4 /dev/vda2 回显类似如下信息:
[root@ecs-2220 ~]# mkfs -t ext4 /dev/vda2 mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2) Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks 2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user First data block=0
Maximum filesystem blocks=2157969408 320 block groups
32768 blocks per group, 32768 fragments per group 8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624
Allocating group tables: done
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
● xfs文件系统命令示例:
mkfs -t xfs /dev/vda2 回显类似如下信息:
[root@ecs-2220 ~]# mkfs -t xfs /dev/vda2
meta-data=/dev/vda2 isize=512 agcount=4, agsize=2621440 blks = sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10485760, imaxpct=25 = sunit=0 swidth=0 blks
naming =version2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=5120, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
格式化需要等待一段时间,请观察系统运行状态,若回显中进程提示为done,则表示 格式化完成。
步骤12 (可选)执行以下命令,新建挂载目录。
若需要挂载至新建目录下,执行该操作。
mkdir 挂载目录
以新建挂载目录“/opt”为例:
mkdir /opt
步骤13 执行以下命令,挂载新建分区。
mount 磁盘分区挂载目录
以挂载新建分区“/dev/vda2”至“/opt”为例:
mount /dev/vda2 /opt 说明
新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分 区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文 件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。
步骤14 执行以下命令,查看挂载结果。
df -TH
回显类似如下信息:
[root@ecs-2220 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 43G 2.0G 39G 5% /
devtmpfs devtmpfs 509M 0 509M 0% /dev tmpfs tmpfs 520M 0 520M 0% /dev/shm tmpfs tmpfs 520M 7.2M 513M 2% /run tmpfs tmpfs 520M 0 520M 0% /sys/fs/cgroup tmpfs tmpfs 104M 0 104M 0% /run/user/0 /dev/vda2 ext4 43G 51M 40G 1% /opt
说明
云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自 动挂载,请参见设置开机自动挂载磁盘分区。
----结束
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
设置开机自动挂载磁盘分区
您可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。
本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在
“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码 在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/
vdb2,可能会导致云服务器重启后不能正常运行。
说明
UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
步骤1 执行如下命令,查询磁盘分区的UUID。
blkid 磁盘分区
以查询磁盘分区“/dev/vdb1”的UUID为例:
blkid /dev/vdb1 回显类似如下信息:
[root@ecs-test-0001 ~]# blkid /dev/vdb1
/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
表示“/dev/vdb1”的UUID。
步骤2 执行以下命令,使用VI编辑器打开“fstab”文件。
vi /etc/fstab
步骤3 按“i”,进入编辑模式。
步骤4 将光标移至文件末尾,按“Enter”,添加如下内容。
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2
以内容上仅为示例,具体请以实际情况为准,参数说明如下:
● 第一列为UUID,此处填写步骤1中查询到的磁盘分区的UUID。
● 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。
● 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。
● 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。
● 第五列为Linux dump备份选项。
– 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即 可。
– 1表示使用Linux dump备份。
● 第六列为fsck选项,即开机时是否使用fsck检查磁盘。
– 0表示不检验。
– 挂载点为(/)根目录的分区,此处必须填写1。
根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查 下去。
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)
步骤6 执行以下步骤,验证自动挂载功能。
1. 执行如下命令,卸载已挂载的分区。
umount 磁盘分区 命令示例:
umount /dev/vdb1
2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。
mount -a
3. 执行如下命令,查询文件系统挂载信息。
mount | grep 挂载目录 命令示例:
mount | grep /mnt/sdc
回显类似如下信息,说明自动挂载功能生效:
root@ecs-test-0001 ~]# mount | grep /mnt/sdc
/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
----结束
4.3 扩展数据盘的分区和文件系统(Linux 内核低于 3.6.0)
操作场景
通过云服务管理控制台扩容成功后,仅扩大了云硬盘的存储容量,因此需要参考本章 节操作扩展分区和文件系统。
对于Linux操作系统而言,需要将扩容部分的容量划分至已有分区内,或者为扩容部分 的云硬盘分配新的分区。
本文以“CentOS 7.4 64位”操作系统为例,提供MBR分区和GPT分区的操作指导。不 同操作系统的操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应操作系 统的产品文档。
● 新增MBR分区
● 扩大已有MBR分区
● 新增GPT分区
● 扩大已有GPT分区
须知
扩容时请谨慎操作,误操作可能会导致数据丢失或者异常,建议扩容前对数据进行备 份,可以使用CBR或者快照功能,CBR请参见管理备份云硬盘,快照功能请参见创建快 照(公测)。
前提条件
● 已通过管理控制台扩容系统盘容量,并已挂载至云服务器,请参见扩容“正在使 用”状态的云硬盘容量或者扩容“可用”状态的云硬盘容量。
最佳实践 4 扩展磁盘分区和文件系统(Linux 内核低于 3.6.0)