云硬盘 EVS-扩展数据盘的分区和文件系统(Linux内核低于3.6.0):扩大已有MBR分区
扩大已有MBR分区
扩大已有分区不会删除数据盘上的数据,但是需要通过umount命令先卸载已有分区,因此会影响线上业务运行。
数据盘“/dev/vdb”原有容量150GB,有两个分区“/dev/vdb1 ”和“/dev/vdb2”。将数据盘容量扩大至230GB,本示例将新增的80GB划分至已有的MBR分区内“/dev/vdb2”内。
扩容后的新增存储空间是添加在磁盘末尾的,对具有多个分区的的磁盘扩容时,只支持将新增容量划分至排在末尾的分区。
- 执行以下命令,查看磁盘的分区信息。
fdisk -l
回显类似如下信息:[root@ecs-test-0001 ~]# fdisk -lDisk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bcb4e Device Boot Start End Blocks Id System/dev/vda1 * 2048 83886079 41942016 83 LinuxDisk /dev/vdb: 247.0 GB, 246960619520 bytes, 482344960 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x38717fc1 Device Boot Start End Blocks Id System/dev/vdb1 2048 209715199 104856576 83 Linux/dev/vdb2 209715200 314572799 52428800 83 Linux
记录待扩大分区的起始磁柱值(Start)和截止磁柱值(End),本示例中待扩大分区“/dev/vdb2”的起始磁柱值为209715200,截止磁柱值为314572799。
查看回显中数据盘“/dev/vdb”的容量,扩容的容量是否已经包含在容量总和中。- 若扩容的容量未在数据盘容量总和中,请参考扩展SCSI数据盘的分区和文件系统(Linux内核低于3.6.0)章节刷新系统内容量。
- 若扩容的容量已在数据盘容量总和中,请记录待扩大分区的起始和截止磁柱值,这些值在后续重新创建分区时需要使用,记录完成后执行2。
- 执行以下命令,卸载磁盘分区。
umount 磁盘分区
命令示例:
umount /dev/vdb2
- 执行以下命令,进入fdisk分区工具。
fdisk 磁盘
命令示例:
fdisk /dev/vdb
回显类似如下信息:[root@ecs-test-0001 ~]# fdisk /dev/vdbWelcome 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):
- 执行以下步骤,删除待扩大的分区。
- 输入“d”,按“Enter”,删除磁盘分区。
- 输入分区编号,此处以分区编号选择“2”为例,按“Enter”,删除磁盘分区。
删除分区后,请参考以下操作步骤扩大原有分区,则不会导致数据盘内数据的丢失。
- 输入“n”,按“Enter”,开始新建分区。
回显类似如下信息:
Command (m for help): nPartition type: p primary (1 primary, 0 extended, 3 free) e extendedSelect (default p):
表示磁盘有两种分区类型:- “p”表示主分区。
- “e”表示扩展分区。
磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。
磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。
- 此处分区类型需要与原分区保持一致,以原分区类型是“主分区”为例,输入“p”,按“Enter”,开始重新创建一个主分区。
回显类似如下信息:
Select (default p): pPartition number (2-4, default 2):
“Partition number”表示主分区编号。
- 此处分区编号需要与原分区保持一致,以原分区编号是“2”为例,输入分区编号“2”,按“Enter”。
回显类似如下信息:
Partition number (2-4, default 2): 2First sector (209715200-482344959, default 209715200):
“First sector”表示起始磁柱值。
以下操作会导致数据丢失:- 选择的起始磁柱值与原分区的不一致。
- 选择的截止磁柱值小于原分区的值。
- 此处必须与原分区保持一致,输入1中记录的初始磁柱值209715200,此处该值也为默认值,按“Enter”。
回显类似如下信息:
First sector (209715200-482344959, default 209715200):Using default value 209715200Last sector, +sectors or +size{K,M,G} (209715200-482344959, default 482344959):
“Last sector”表示截止磁柱值。
- 此处截止磁柱值应大于等于1中记录的截止磁柱值314572799,以选择默认截止磁柱值482344959为例,按“Enter”。
回显类似如下信息:
Using default value 209715200Last sector, +sectors or +size{K,M,G} (209715200-482344959, default 482344959):Using default value 482344959Partition 2 of type Linux and of size 130 GiB is setCommand (m for help):
表示分区完成。
- 输入“p”,按“Enter”,查看分区的详细信息。
回显类似如下信息:
Command (mfor help): pDisk /dev/vdb: 247.0 GB, 246960619520 bytes, 482344960 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x38717fc1 Device Boot Start End Blocks Id System/dev/vdb1 2048 209715199 104856576 83 Linux/dev/vdb2 209715200 482344959 136314880 83 LinuxCommand (m for help):
- 输入“w”,按“Enter”,将分区结果写入分区表中。
回显类似如下信息:
Command (m for help): wThe 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 atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.
如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。
- 执行以下命令,将新的分区表变更同步至操作系统。
partprobe
- 根据磁盘的文件系统,分别执行以下操作。
- 若磁盘文件系统为ext*,请执行以下步骤。
- 执行以下命令,检查磁盘分区文件系统的正确性。
命令示例:
e2fsck -f /dev/vdb2
回显类似如下信息:[root@ecs-test-0001 ~]# e2fsck -f /dev/vdb2e2fsck 1.42.9 (28-Dec-2013)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/vdb2: 11/3276800 files (0.0% non-contiguous), 251790/13107200 blocks
- 执行以下命令,扩展磁盘分区文件系统的大小。
命令示例:
resize2fs /dev/vdb2
回显类似如下信息:[root@ecs-test-0001 ~]# resize2fs /dev/vdb2resize2fs 1.42.9 (28-Dec-2013)Resizing the filesystem on /dev/vdb2 to 34078720 (4k) blocks.The filesystem on /dev/vdb2 is now 34078720 blocks long.
- (可选)执行以下命令,新建挂载目录。
mkdir 挂载目录
以新建挂载目录“/mnt/test”为例:
mkdir /mnt/test
- 执行以下命令,挂载磁盘分区。
以挂载分区“/dev/vdb2”至“/mnt/test”为例:
mount /dev/vdb2 /mnt/test
新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。
- 执行以下命令,检查磁盘分区文件系统的正确性。
- 若磁盘文件系统为xfs,请执行以下步骤。
- (可选)执行以下命令,新建挂载目录。
mkdir 挂载目录
以新建挂载目录“/mnt/test”为例:
mkdir /mnt/test
- 执行以下命令,挂载磁盘分区。
以挂载分区“/dev/vdb2”至“/mnt/test”为例:
mount /dev/vdb2 /mnt/test
新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。
- 执行以下命令,扩展磁盘分区文件系统的大小。
命令示例:
sudo xfs_growfs /dev/vdb2
回显类似如下信息:
[root@ecs-test-0001 ~]# sudo xfs_growfs /dev/vdb2 meta-data=/dev/vdb2 isize=512 agcount=4, agsize=3276800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, spinodes=0data = bsize=4096 blocks=13107200, imaxpct=25 = sunit=0 swidth=0 blksnaming =version2 bsize=4096 ascii-ci=0 ftype=1log =internal bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 13107200 to 34078720.
- (可选)执行以下命令,新建挂载目录。
- 若磁盘文件系统为ext*,请执行以下步骤。
- 执行以下命令,查看挂载结果。
df -TH
回显类似如下信息:[root@ecs-test-0001 ~]# df -THFilesystem Type Size Used Avail Use% Mounted on/dev/vda1 ext4 43G 1.9G 39G 5% /devtmpfs devtmpfs 2.0G 0 2.0G 0% /devtmpfs tmpfs 2.0G 0 2.0G 0% /dev/shmtmpfs tmpfs 2.0G 9.1M 2.0G 1% /runtmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgrouptmpfs tmpfs 398M 0 398M 0% /run/user/0/dev/vdb1 ext4 106G 63M 101G 1% /mnt/sdc/dev/vdb2 ext4 138G 63M 131G 1% /mnt/test
云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载,请参见设置开机自动挂载磁盘分区。