初始化Linux数据盘(容量小于等于2TiB)
操作场景
新购买的云硬盘在挂载至云服务器后,还需要进行初始化,即格式化云硬盘,之后才可以正常使用。本文介绍使用脚本和手动方式初始化Linux系统中的数据盘,不同云服务器的操作系统的初始化操作可能不同,请根据您的实际环境进行操作。
MBR分区支持的云硬盘最大容量为2 TiB,GPT分区支持的最大云硬盘容量为18 EiB,因此当云硬盘容量小于2TiB的时候,你可以选择创建MBR或者GPT分区。但是,当云硬盘容量大于2 TiB或目前小于等于2 TiB但后续可能会扩容至2TiB以上时,请在初始化云硬盘时,分区格式选择GPT分区。
操作指导 |
操作系统 |
分区格式 |
常见文件系统 |
配置示例 |
---|---|---|---|---|
不限 |
MBR |
ext*(如ext2、ext3、ext4)、xfs、btrfs |
|
|
不限 |
|
|||
CentOS |
MBR |
ext4 |
|
前提条件
云硬盘已挂载到云服务器上,挂载云硬盘参见挂载云硬盘。
约束与限制
操作步骤
初始化主要操作步骤为创建分区和文件系统,挂载分区,设置开启自动挂载。
示例说明:使用fdisk工具,针对“/dev/vdb”数据盘划分2个分区,分别为40GiB(/dev/vdb1)、60GiB(/dev/vdb2),分区设置为MBR。
- 以root用户登录云服务器。
登录弹性云服务器请参见登录弹性云服务器。
登录裸金属服务器请参见登录裸金属服务器。
- 创建分区:针对数据盘“/dev/vdb”划分2个主分区/dev/vdb1、/dev/vdb2。
- 查看/dev/vdb数据盘容量为100GiB。
lsblk
[root@ecs-centos76 ~]# 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 100G 0 disk
表示当前有两块云硬盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘,有100GiB还未分区。
- 依次执行以下命令为/dev/vdb新建第一个主分区/dev/vdb1。
n
p
1[root@ecs-test-0001 ~]# fdisk /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. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x38717fc1. 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
- “Partition type”:“p”表示主分区,“e”表示扩展分区,默认为主分区。
- “Partition number”:分区编号,可以选择1-4。
- 针对第一个分区/dev/vdb1(40 GiB)设置起始磁柱值(2048)和截止磁柱值(83886079),计算方式参见表2。
First sector (2048-209715199, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):83886079 Partition 1 of type Linux and of size 40 GB is set
- 依次执行以下命令开始新建第二个主分区/dev/vdb2。
p
2
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 2): 2
- 针对第2个分区/dev/vdb2设置起始磁柱值(83886080)和截止磁柱值(209715199)。
First sector (83886080-209715199, default 83886080): 83886080 Last sector, +sectors or +size{K,M,G} (83886080-209715199, default 209715199):209715199 Partition 2 of type Linux and of size 60 GB is set
- 查看新建分区大小、分区格式信息。
p
Command (m for help): p Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 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: 0x994727e5 Device Boot Start End Blocks Id System /dev/vdb1 2048 83886079 41942016 83 Linux /dev/vdb2 83886080 209715199 62914560 83 Linux Command (m for help):
Disk label type: dos表示分区格式为MBR。
如果之前分区操作有误,请输入“q”,按“Enter”,则会退出fdisk分区工具,之前的分区结果将不会被保留。此时,重新执行创建分区步骤1和步骤2即可。
- 查看/dev/vdb数据盘容量为100GiB。
- 创建文件系统。
- 分别对分区/dev/vdb1(40GiB)和/dev/vdb2(60GiB)创建ext4文件系统。
mkfs -t ext4 /dev/vdb2
- mkfs -t 文件系统格式 磁盘分区名:设置xfs格式文件系统命令为mkfs -t xfs 磁盘分区名,设置btrfs格式文件系统命令为mkfs -t btrfs 磁盘分区名。
- 创建文件系统格式需要等待一段时间,请确保看到如下回显后,再退出。
[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1 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, 10485504 blocks 524275 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 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
- 执行以下命令确认文件系统类型是否是ext4。
[root@ecs-test-0001 ~]# blkid /dev/vdb /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4" /dev/vdb2: UUID="0d6769k2-1745-9dsf-453d-hgd0b34267dj" TYPE="ext4"
- 分别对分区/dev/vdb1(40GiB)和/dev/vdb2(60GiB)创建ext4文件系统。
- 新建目录,并将新建分区挂载至新建目录。
- 挂载/dev/vdb1到/mnt/sdc
mkdir -p /mnt/sdc
mount /dev/vdb1 /mnt/sdc
[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 100G 0 disk ├vdb1 253:17 0 40G 0 part /mnt/sdc ├vdb2 253:18 0 60G 0 part /mnt/sdd
表示新建分区“/dev/vdb1”和“/dev/vdb2”已分别挂载至“/mnt/sdc”、“/mnt/sdd”。
- 挂载/dev/vdb1到/mnt/sdc
- (可选)使用磁盘分区的UUID来设置开机自动挂载磁盘分区。
UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。重启后,挂载会失效,因此需要设置开机自动挂载磁盘分区,即在/etc/fstab文件中添加新建磁盘分区信息,启动开机自动挂载磁盘分区。
- 不建议采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致云服务器重启后不能正常运行。
- 该操作不会影响弹性云服务器中的现有数据。
- 查询磁盘分区的UUID。
blkid /dev/vdb2
[root@ecs-test-0001 ~]# blkid /dev/vdb /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4" /dev/vdb2: UUID="0d6769k2-1745-9dsf-453d-hgd0b34267dj" TYPE="ext4"
下一步会使用查询到的UUID,请做好记录:示例UUID为:0b3040e2-1367-4abb-841d-ddb0b92693df、0d6769k2-1745-9dsf-453d-hgd0b34267dj。
- 设置开机自动挂载磁盘分区
按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,添加下行内容:
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2 UUID=0d6769k2-1745-9dsf-453d-hgd0b34267dj /mnt/sdd ext4 defaults 0 2
按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。
表3 参数说明 参数示例
说明
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df
磁盘分区的UUID
/mnt/sdc
磁盘分区的挂载目录
ext4
磁盘分区的文件系统格式
defaults
磁盘分区的挂载选项,此处通常设置为defaults即可
0
Linux dump备份选项。- 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
- 1表示使用Linux dump备份。
2
fsck选项,即开机时是否使用fsck检查磁盘。- 2表示从挂载点为非根目录(/)的分区开始检验。
- 1表示从挂载点为根目录(/)的分区开始检验。
- 0表示不检验。
- (可选)验证自动挂载功能已生效。
您可以重启云服务器验证自动挂载功能是否生效,也可以使用以下方式模拟自动挂载。
- 为了验证系统是否会执行自动挂载操作,请先卸载已挂载的分区。
umount /dev/vdb1
umount /dev/vdb2
- 将“/etc/fstab”文件所有内容重新加载。“/etc/fstab”是一个静态文件系统信息表,包含了系统启动时需要自动挂载的文件系统的列表。
mount -a
- 查询文件系统挂载信息。
mount | grep /mnt/sdc
mount | grep /mnt/sdd
回显类似如下信息,说明自动挂载功能生效。
root@ecs-test-0001 ~]# mount | grep /mnt/sdc /dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered) root@ecs-test-0001 ~]# mount | grep /mnt/sdd /dev/vdb2 on /mnt/sdd type ext4 (rw,relatime,data=ordered)
parted工具的初始化操作指导参见使用Parted工具初始化数据盘,MBR和GPT分区都可以使用parted工具来创建,只有在设置分区格式的时候命令有所不同,其它操作命令一样。
设置分区格式的命令分别为:
MBR:
mklabel msdos unit s p
GPT:
mklabel gpt unit s p
- 以root用户登录云服务器。
- 查看待初始化的云硬盘的磁盘信息。
lsblk
[root@ecs-centos76 ~]# 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 100G 0 disk
回显示例表示当前有两块云硬盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘,有100G还未分区。
- 执行以下命令获取自动初始化磁盘脚本。
wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh
图1 脚本获取成功如果回显异常,请检查云服务器是否绑定弹性公网IP,绑定弹性公网IP后才能获取脚本。
- 修改自动初始化磁盘脚本权限。
chmod +x LinuxVMDataDiskAutoInitialize.sh
- 执行初始化脚本自动检测待初始化的数据盘。
./LinuxVMDataDiskAutoInitialize.sh
脚本将自动检测当前在服务器上除系统盘之外的盘符并显示出来。
- 输入盘符如/dev/vdb并回车,脚本将自动执行硬盘的创建分区(/dev/vdb1)与格式化。
对于有数据的云硬盘,脚本会自动检测出您选择的磁盘已经被挂载并显示出挂载的位置,请根据提示选择是否卸载磁盘,输入“y ”为确定卸载,输入“n”则退出脚本。成功卸载磁盘后根据提示选择是否开始格式化磁盘。
- 对磁盘进行挂载操作,例如输入挂载目录为/data-test,脚本会自动新建该目录进行挂载操作。
脚本将会自动设置为开机自动挂载。
根据图上回显可知,针对/dev/vdb磁盘分区为/dev/vdb1的初始化成功,并且已挂载至/data-test目录下。
- (可选)查看/dev/vdb磁盘的分区格式。
parted /dev/vdb
P