Linux扩容-新增磁盘分区挂载-fdisk
扩容后的云硬盘,挂载给实例后,需要对扩容的部分划分分区并初始化。本节以“CentOS 7.0 64位”操作系统为例,介绍使用fdisk工具为扩容后的磁盘创建新的分区。
一 背景信息
扩容成功后,需要为扩容部分的容量创建新的分区,或者重新创建分区替换原有分区。
- 为扩容部分的容量创建新的分区
该场景下,不需要卸载原有的分区,而是在原有分区的基础上新增分区。该操作不会中断业务,对业务影响较小。推荐系统盘或者需要保证业务不中断的磁盘扩容场景使用。如果当前磁盘使用的是MBR格式,则要求扩容后的磁盘容量不超过2TB,并且磁盘的分区数量还未达到上限。
- 重新创建分区替换原有分区
如果当前磁盘使用的是MBR分区,且磁盘分区数量已达到上限,无法再增加新的分区。此时需要先卸载已有分区,重新创建新的分区替换原有分区。该操作不会删除原有分区的数据,但操作过程中需预先中断业务,因此会对用户正在运行的业务产生影响。
- MBR分区转换为GPT分区
如果当前磁盘使用的是MBR分区,且扩容后磁盘容量已超过2TB,则此时需要将MBR分区转换为GPT分区,该操作会清除磁盘上的数据,请您预先对原数据进行备份。
二 挂载操作步骤
以下步骤,举例说明如何将磁盘扩容部分的空间划分为一个新的分区,并挂载到“/opt”下。
该磁盘采用MBR分区,磁盘容量小于2TB,且分区数量未达到上限。分区方式为MBR时,可以使用fdisk工具或parted工具划分分区,本节以fdisk工具为例。
- 执行以下命令,查看磁盘信息。
fdisk -l
回显类似如下信息,“/dev/xvda”表示系统盘。
[root@ecs-bab9 test]# fdisk -l
Disk /dev/xvda: 64.4 GB, 64424509440 bytes, 125829120 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: 0x000cc4ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 2050047 1024000 83 Linux
/dev/xvda2 2050048 22530047 10240000 83 Linux
/dev/xvda3 22530048 24578047 1024000 83 Linux
/dev/xvda4 24578048 83886079 29654016 5 Extended
/dev/xvda5 24580096 26628095 1024000 82 Linux swap / Solaris
- 执行以下命令,进入fdisk模式,以“/dev/xvda”为例。
fdisk /dev/xvda
回显类似如下信息:
[root@ecs-bab9 test]# fdisk /dev/xvda
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):
- 输入“n”,按“Enter”,开始新建分区。
本例中由于系统盘原来已经有5个分区,所以系统自动添加第6分区。
回显类似如下信息:
Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (26630144-83886079, default 26630144):
- 输入新分区的起始磁柱编号,如设置默认值,按“Enter”。
起始磁柱编号必须大于原有分区的结束磁柱编号。
回显类似如下信息:
First sector (26630144-83886079, default 26630144):
Using default value 26630144
Last sector, +sectors or +size{K,M,G} (26630144-83886079, default 83886079):
- 输入新分区的截止磁柱编号,按“Enter”。
本步骤中使用默认截止磁柱编号为例。
回显类似如下信息:
Last sector, +sectors or +size{K,M,G} (26630144-83886079, default 83886079):
Using default value 83886079
Partition 6 of type Linux and of size 27.3 GiB is set
Command (m for help):
- 输入“p”,按“Enter”,查看新建分区。
回显类似如下信息:
Disk /dev/xvda: 64.4 GB, 64424509440 bytes, 125829120 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: 0x000cc4ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 2050047 1024000 83 Linux
/dev/xvda2 2050048 22530047 10240000 83 Linux
/dev/xvda3 22530048 24578047 1024000 83 Linux
/dev/xvda4 24578048 83886079 29654016 5 Extended
/dev/xvda5 24580096 26628095 1024000 82 Linux swap / Solaris
/dev/xvda6 26630144 83886079 28627968 83 Linux
Command (m for help):
- 输入“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.
- 执行partprobe命令,将新的分区表变更同步至操作系统。
partprobe
- 执行以下命令,设置新建分区文件系统格式(df -T查看原有文件系统 )。
以“ext4” 文件格式为例:
mkfs -t ext4 /dev/xvda6
回显类似如下信息:
[root@ecs-bab9 test]# mkfs -t ext4 /dev/xvda6
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
1790544 inodes, 7156992 blocks
357849 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2155872256
219 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化需要等待一段时间,请观察系统运行状态,若回显中进程提示为done,则表示格式化完成。
- 执行以下命令,将新建分区挂载到需要增加空间的目录下,以“/opt”为例。
mount /dev/xvda6 /opt
回显类似如下信息:
[root@ecs-bab9 test]# mount /dev/xvda6 /opt
[root@ecs-bab9 test]#
说明:
新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。
- 执行以下命令,查看挂载结果。
df -TH
回显类似如下信息:
[root@ecs-bab9 test]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda2 xfs 11G 7.4G 3.2G 71% /
devtmpfs devtmpfs 4.1G 0 4.1G 0% /dev
tmpfs tmpfs 4.1G 82k 4.1G 1% /dev/shm
tmpfs tmpfs 4.1G 9.2M 4.1G 1% /run
tmpfs tmpfs 4.1G 0 4.1G 0% /sys/fs/cgroup
/dev/xvda3 xfs 1.1G 39M 1.1G 4% /home
/dev/xvda1 xfs 1.1G 131M 915M 13% /boot
/dev/xvda6 ext4 29G 47M 28G 1% /opt
三 设置开机自动挂载磁盘
如果您需要在实例启动时自动挂载磁盘,请在上述操作之后参考本节设置开机自动挂载磁盘。设置时不能采用在 /etc/fstab直接指定 /dev/xvdb1的方法,因为实例中设备的顺序编码在关闭或者开启实例过程中可能发生改变。推荐使用UUID来配置自动挂载数据盘。
说明:
磁盘的UUID(Universally Unique Identifier)是Linux系统为存储设备提供的唯一的标识字符串。
- 执行如下命令,查询磁盘分区的UUID。
blkid 磁盘分区
以查询磁盘分区“/dev/xvdb1”的UUID为例:
blkid /dev/xvdb1
回显类似如下信息,表示“/dev/xvdb1”的UUID。
[root@ecs-b656 test]# blkid /dev/xvdb1
/dev/xvdb1: UUID="1851e23f-1c57-40ab-86bb-5fc5fc606ffa" TYPE="ext4"
- 执行以下命令,使用VI编辑器打开“fstab”文件。
vi /etc/fstab
- 按“i”,进入编辑模式。
- 将光标移至文件末尾,按“Enter”,添加如下内容(UUID)。
UUID=1851e23f-1c57-40ab-86bb-5fc5fc606ffa /mnt/sdc ext4 defaults 0 2
- 按“Esc”后,输入“:wq”,按“Enter”。
保存设置并退出编辑器。