初始化Linux数据盘(容量大于2TiB)
操作场景
云硬盘容量大于2TiB时,只能使用parted工具为磁盘新建GPT分区。不同云服务器的操作系统的初始化操作可能不同。
分区格式 |
操作系统 |
文件系统 |
初始化工具 |
配置示例 |
---|---|---|---|---|
GPT |
不限 |
ext*(如ext2、ext3、ext4)、xfs、btrfs |
parted |
|
前提条件
云硬盘已挂载到云服务器上。
约束与限制
- 从数据源创建的云硬盘无需初始化。该云硬盘在初始状态就具有数据源中的数据,初始化有丢失数据的风险。如果需要重新初始化,建议先备份云硬盘中的数据。。
- 初始化云硬盘不会删除云硬盘快照,初始化后仍可以使用快照回滚数据至原云硬盘。
操作步骤
示例说明:使用parted工具,针对“/dev/vdb”数据盘划分1个GPT分区。
- 登录云服务器。
登录弹性云服务器请参见登录弹性云服务器。
登录裸金属服务器请参见登录裸金属服务器。
- 针对数据盘“/dev/vdb”划分1个分区/dev/vdb1。
- 查看/dev/vdb数据盘容量为3TiB。
- 开始新建分区/dev/vdb1。
p
[root@ecs-centos74 ~]# 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: /dev/vdb: unrecognised disk label Model: Virtio Block Device (virtblk) Disk /dev/vdb: 3299GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: (parted)
“Partition Table”:“unknown”表示磁盘分区格式未知,新的数据盘还未设置分区格式。
如果出现报错“-bash: parted: command not found”,则说明系统不识别该命令,需要执行“yum install -y parted”命令来安装该命令。安装成功后再执行上述命令。
- 针对分区/dev/vdb1设置分区格式为GPT。
unit s
p
(parted) mklabel gpt (parted) unit s (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vdb: 6442450944s Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags (parted)
- 如果磁盘容量小于等于2 TiB,您想使用parted工具新建MBR分区,则此处命令为:mklabel msdos。
- 切换云硬盘分区格式,则该云硬盘上的数据将会被清除,请您在初始化时谨慎选择云硬盘的分区格式。
- 云硬盘初始化时设置的磁盘分区格式(MBR或GPT),后续在该云硬盘下创建的所有分区的格式均和首次初始化时设置的分区格式一致,因此如果您创建第2个及后续分区时,无需执行该步骤。
- 针对分区/dev/vdb1设置分区名称及大小。
p
- “2048s”表示磁盘起始磁柱值,“100%”为磁盘截止磁柱值,表示将磁盘100%容量给到/dev/vdb1分区。
- 如果您需要将数据盘容量划分至两个及以上的分区,分区的起始磁柱值和截止磁柱值计算方法跟2中的相同。
(parted) mkpart /dev/vdb1 2048s 100% (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vdb: 6442450944s Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2048s 6442448895s 6442446848s /dev/vdb1
输入“q”,按“Enter”,执行“lsblk”再次查看新建分区“/dev/vdb1”。
[root@ecs-centos74 ~]# 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 3T 0 disk └─vdb1 253:17 0 3T 0 part
- 为“/dev/vdb1”创建ext4文件系统。
mkfs -t ext4 /dev/vdb1
创建文件系统格式需要等待一段时间,请观察系统运行状态,不要退出。
[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 201326592 inodes, 805305856 blocks 40265292 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2952790016 24576 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, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@ecs-test-0001 ~]#
执行“parted /dev/vdb”命令,再输入“p”,查看分区文件系统类型。
[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 Model: Virtio Block Device (virtblk) Disk /dev/vdb: 3299GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3299GB 3299GB ext4 /dev/vdb1 (parted) q [root@ecs-test-0001 ~]#
输入“q”,按“Enter”,退出parted模式。
- 新建目录,并将新建分区挂载至新建目录。
mkdir -p /mnt/sdc
mount /dev/vdb1 /mnt/sdc
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 3T 0 disk ├vdb1 253:17 0 3T 0 part /mnt/sdc
表示新建分区“/dev/vdb1”已挂载至“/mnt/sdc”。
- 使用磁盘分区的UUID来设置开机自动挂载磁盘分区。
- 重启后,挂载会失效,因此需要设置开机自动挂载磁盘分区,即在/etc/fstab文件中添加新建磁盘分区信息,启动开机自动挂载磁盘分区。
- 不建议采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致云服务器重启后不能正常运行。
- UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
- 该操作不会影响弹性云服务器中的现有数据。
- 查询磁盘分区的UUID。
[root@ecs-test-0001 ~]# blkid /dev/vdb1 /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
磁盘分区“/dev/vdb1”的UUID为0b3040e2-1367-4abb-841d-ddb0b92693df。
- 设置开机自动挂载磁盘分区。
按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,添加下行内容:
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2
按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。
表1 参数说明 参数示例
说明
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表示不检验。
- Linux dump备份选项。
- 验证自动挂载功能已生效。
umount /dev/vdb1
mount -a
则系统会将“/etc/fstab”文件所有内容重新加载。
查询文件系统挂载信息。
mount | grep /mnt/sdc
回显类似如下信息,说明自动挂载功能生效:
root@ecs-test-0001 ~]# mount | grep /mnt/sdc /dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)