磁盘分区MBR和GPT分区系列
操作场景
磁盘挂载至云服务器后,需要登录云服务器初始化磁盘,即格式化磁盘,之后磁盘才可以正常使用。
系统盘
系统盘不需要初始化,创建云服务器时会自带系统盘并且自动初始化,默认磁盘分区形式为主启动记录分区(MBR, Master boot record)。
数据盘
- 创建云服务器时直接创建数据盘,数据盘会自动挂载至云服务器。
- 单独创建数据盘,然后将该数据盘挂载至云服务器。
以上两种情况创建的数据盘挂载至云服务器后,均需要初始化后才可以使用,请您根据业务的实际规划选择合适的分区方式。
约束与限制
从数据源创建的磁盘无需初始化。该磁盘在初始状态就具有数据源中的数据,初始化有丢失数据的风险。
磁盘分区形式
常用的磁盘分区形式如表1所示,并且针对Linux操作系统,不同的磁盘分区形式需要选择不同的分区工具。
磁盘分区形式 | 支持最大磁盘容量 | 支持分区数量 | Linux分区工具 |
---|---|---|---|
主启动记录分区(MBR) | 2 TB | 4个主分区3个主分区和1个扩展分区MBR分区包含主分区和扩展分区,其中扩展分区里面可以包含若干个逻辑分区。扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。以创建6个分区为例,以下两种分区情况供参考:3个主分区,1个扩展分区,其中扩展分区中包含3个逻辑分区。1个主分区,1个扩展分区,其中扩展分区中包含5个逻辑分区。 | 以下两种工具均可以使用:fdisk工具parted工具 |
全局分区表(GPT, Guid Partition Table) | 18 EB1 EB = 1048576 TB | 不限制分区数量GPT格式下没有主分区、扩展分区以及逻辑分区之分。 | parted工具 |
MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,当前数据盘支持的最大容量为32 TB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。
当磁盘已经投入使用后,此时切换磁盘分区形式时,磁盘上的原有数据将会清除,因此请在磁盘初始化时谨慎选择磁盘分区形式。
若使用fdisk来分区大于2T的磁盘,则会出现如下的警告:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | [root@oracledb ~]# fdisk /dev/vdf WARNING: The size of this disk is 4.3 TB (4294967296000 bytes). DOS partition table format can not be used on drives for volumes larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID partition table format (GPT). [root@ecs-1305 ~]# fdisk -l | grep dev Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors /dev/sda1 * 2048 83886079 41942016 83 Linux Disk /dev/sdb: 10995.1 GB, 10995116277760 bytes, 21474836480 sectors [root@ecs-1305 ~]# fdisk /dev/sdb 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 0x5d71db33. WARNING: The size of this disk is 11.0 TB (10995116277760 bytes). DOS partition table format can not be used on drives for volumes larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID partition table format (GPT). Command (m for help): p Disk /dev/sdb: 10995.1 GB, 10995116277760 bytes, 21474836480 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: 0x5d71db33 Device Boot Start End Blocks Id System |
磁盘分区操作指导
使用脚本初始化数据盘:
磁盘容量小于2 TB的场景:
磁盘容量大于2 TB的场景:
示例:初始化容量大于2TB的Linux数据盘(parted)
操作场景
本文以云服务器的操作系统为“CentOS 7.4 64位”、磁盘容量为3 TB举例,采用Parted分区工具为容量大于2 TB的数据盘设置分区。
MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。
fdisk分区工具只适用于MBR分区,parted工具适用于MBR分区和GPT分区。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍。
不同云服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的云服务器操作系统的产品文档。
须知:
首次使用磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。
划分分区并挂载磁盘
本操作以该场景为例,当云服务器挂载了一块新的数据盘时,采用parted分区工具为数据盘设置分区,分区形式设置为GPT,文件系统设为ext4格式,挂载在“/mnt/sdc”下,并设置开机启动自动挂载。
执行以下命令,查看新增数据盘。
lsblk
回显类似如下信息:
123456[root@ecs-centos74 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 253:0 0 40G 0 disk├─vda1 253:1 0 1G 0 part /boot└─vda2 253:2 0 39G 0 part /vdb 253:16 0 3T 0 disk表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。
执行以下命令,进入parted分区工具,开始对新增数据盘执行分区操作。
parted 新增数据盘
以新挂载的数据盘“/dev/vdb”为例:
parted /dev/vdb
回显类似如下信息:
12345[root@ecs-centos74 ~]# parted /dev/vdbGNU Parted 3.1Using /dev/vdbWelcome to GNU Parted! Type 'help' to view a list of commands.(parted)输入“p”,按“Enter”,查看当前磁盘分区形式。
回显类似如下信息:
12345678(parted) pError: /dev/vdb: unrecognised disk labelModel: Virtio Block Device (virtblk)Disk /dev/vdb: 3299GBSector size (logical/physical): 512B/512BPartition Table: unknownDisk Flags:(parted)“Partition Table”为“unknown”表示磁盘分区形式未知,新的数据盘还未设置分区形式。
输入以下命令,设置磁盘分区形式。
mklabel 磁盘分区形式
磁盘分区形式有MBR和GPT两种,大于2 TB的磁盘容量,请采用GPT分区方式:
mklabel gpt
须知:
MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,当前数据盘支持的最大容量为32 TB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。
当磁盘已经投入使用后,此时切换磁盘分区形式时,磁盘上的原有数据将会清除,因此请在磁盘初始化时谨慎选择磁盘分区形式。
输入“p”,按“Enter”,设置分区形式后查看磁盘分区形式。
回显类似如下信息:
1234567891011(parted) mklabel gpt(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdb: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name Flags(parted)输入“unit s”,按“Enter”,设置磁盘的计量单位为磁柱。
以为整个磁盘创建一个分区为例,执行以下命令,按“Enter”。
mkpart 磁盘分区名称 起始磁柱值 截止磁柱值
命令示例:
mkpart opt 2048s 100%
“2048s”表示磁盘起始磁柱值,“100%”表示磁盘截止磁柱值,此处仅供参考,您可以根据业务需要自行规划磁盘分区数量及容量。
回显类似如下信息:
123(parted) mkpart opt 2048s 100%Warning: The resulting partition is not properly aligned for best performance.Ignore/Cancel? Ignore若出现以上性能优化提醒,请输入“Ignore”,忽视即可。
输入“p”,按“Enter”,查看新建分区的详细信息。
回显类似如下信息:
123456789(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdb: 6442450944sSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name Flags1 2048s 6442448895s 6442446848s opt表示新建分区“dev/vdb1”的详细信息。
输入“q”,按“Enter”,退出parted分区工具。
执行以下命令,查看磁盘分区信息。
lsblk
回显类似如下信息:
1234567[root@ecs-centos74 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 253:0 0 40G 0 disk├─vda1 253:1 0 1G 0 part /boot└─vda2 253:2 0 39G 0 part /vdb 253:16 0 3T 0 disk└─vdb1 253:17 0 3T 0 part此时可以查看到新建分区“/dev/vdb1”。
执行以下命令,将新建分区文件系统设为系统所需格式。
mkfs -t 文件系统格式 /dev/vdb1
以设置文件系统为“ext4”为例:
mkfs -t ext4 /dev/vdb1
回显类似如下信息:
1234567891011121314151617181920212223[root@ecs-centos74 ~]# mkfs -t ext4 /dev/vdb1mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks201326592 inodes, 805305856 blocks40265292 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=295279001624576 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,102400000, 214990848, 512000000, 550731776, 644972544Allocating group tables: doneWriting inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done格式化需要等待一段时间,请观察系统运行状态,不要退出。
须知:
不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
执行以下命令,新建挂载目录。
mkdir 挂载目录
以新建挂载目录“/mnt/sdc”为例:
mkdir /mnt/sdc
说明:
Linux系统默认带有/mnt目录,如果创建失败,可能是/mnt被误删除了,可以执行命令mkdir -p /mnt/sdc创建。
执行以下命令,将新建分区挂载到12中创建的目录下。
mount 磁盘分区 挂载目录
以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:
mount /dev/vdb1 /mnt/sdc
执行以下命令,查看挂载结果。
df -TH
回显类似如下信息:
12345678910[root@ecs-centos74 ~]# df -THFilesystem Type Size Used Avail Use% Mounted on/dev/vda2 ext4 42G 1.5G 38G 4% /devtmpfs devtmpfs 2.0G 0 2.0G 0% /devtmpfs tmpfs 2.0G 0 2.0G 0% /dev/shmtmpfs tmpfs 2.0G 8.9M 2.0G 1% /runtmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup/dev/vda1 ext4 1.1G 153M 801M 17% /boottmpfs tmpfs 398M 0 398M 0% /run/user/0/dev/vdb1 ext4 3.3T 93M 3.1T 1% /mnt/sdc表示新建分区“dev/vdb1”已挂载至“/mnt/sdc”。
设置开机自动挂载磁盘分区
您可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。已有数据的云服务器也可以进行设置,该操作不会影响现有数据。
本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致云服务器重启后不能正常运行。
说明:
UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
执行如下命令,查询磁盘分区的UUID。
blkid 磁盘分区
以查询磁盘分区“/dev/vdb1”的UUID为例:
blkid /dev/vdb1
回显类似如下信息:
12[root@ecs-test-0001 ~]# blkid /dev/vdb1/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"表示“/dev/vdb1”的UUID。
执行以下命令,使用VI编辑器打开“fstab”文件。
vi /etc/fstab
按“i”,进入编辑模式。
将光标移至文件末尾,按“Enter”,添加如下内容。
1UUID=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开始,系统会按照数字从小到大依次检查下去。
按“ESC”后,输入“:wq”,按“Enter”。
保存设置并退出编辑器。
执行以下步骤,验证自动挂载功能。
执行如下命令,卸载已挂载的分区。
umount 磁盘分区
命令示例:
umount /dev/vdb1
执行如下命令,将“/etc/fstab”文件所有内容重新加载。
mount -a
执行如下命令,查询文件系统挂载信息。
mount | grep 挂载目录
命令示例:
mount | grep /mnt/sdc
回显类似如下信息,说明自动挂载功能生效:
12root@ecs-test-0001 ~]# mount | grep /mnt/sdc/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
示例:初始化Linux数据盘(fdisk)
操作场景
本文以云服务器的操作系统为“CentOS 7.4 64位”为例,采用fdisk分区工具为数据盘设置分区。
MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。
fdisk分区工具只适用于MBR分区,parted工具适用于MBR分区和GPT分区。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍。
不同云服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的云服务器操作系统的产品文档。
首次使用磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。
划分分区并挂载磁盘
本操作以该场景为例,当云服务器挂载了一块新的数据盘时,使用fdisk分区工具将该数据盘设为主分区,分区形式默认设置为MBR,文件系统设为ext4格式,挂载在“/mnt/sdc”下,并设置开机启动自动挂载。
fdisk -l
回显类似如下信息:
12345678910111213141516[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: 0x000bcb4eDevice Boot Start End Blocks Id System/dev/vda1 * 2048 83886079 41942016 83 LinuxDisk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。
执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作。
fdisk 新增数据盘
以新挂载的数据盘“/dev/vdb”为例:
fdisk /dev/vdb
回显类似如下信息:
12345678910[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.Device does not contain a recognized partition tableBuilding a new DOS disklabel with disk identifier 0x38717fc1.Command (m for help):输入“n”,按“Enter”,开始新建分区。
回显类似如下信息:
1234Command (m for help): nPartition type:p primary (0 primary, 0 extended, 4 free)e extended表示磁盘有两种分区类型:
- “p”表示主分区。
- “e”表示扩展分区。
说明:
磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。
磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。
以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。
回显类似如下信息:
12Select (default p): pPartition number (1-4, default 1):“Partition number”表示主分区编号,可以选择1-4。
以分区编号选择“1”为例,输入主分区编号“1”,按“Enter”。
回显类似如下信息:
12Partition number (1-4, default 1): 1First sector (2048-209715199, default 2048):“First sector”表示起始磁柱值,可以选择2048-209715199,默认为2048。
以选择默认起始磁柱值2048为例,按“Enter”。
系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
回显类似如下信息:
123First sector (2048-209715199, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):“Last sector”表示截止磁柱值,可以选择2048-209715199,默认为209715199。
以选择默认截止磁柱值209715199为例,按“Enter”。
系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
回显类似如下信息:
12345Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):Using default value 209715199Partition 1 of type Linux and of size 100 GiB is setCommand (m for help):表示分区完成,即为数据盘新建了1个分区。
输入“p”,按“Enter”,查看新建分区的详细信息。
回显类似如下信息:
12345678910111213Command (m for help): pDisk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 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: 0x38717fc1Device Boot Start End Blocks Id System/dev/vdb1 2048 209715199 104856576 83 LinuxCommand (m for help):表示新建分区“/dev/vdb1”的详细信息。
输入“w”,按“Enter”,将分区结果写入分区表中。
回显类似如下信息:
12345Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.表示分区创建完成。
说明:
如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。
执行以下命令,将新的分区表变更同步至操作系统。
partprobe
执行以下命令,将新建分区文件系统设为系统所需格式。
mkfs -t 文件系统格式 /dev/vdb1
以设置文件系统为“ext4”为例:
mkfs -t ext4 /dev/vdb1
回显类似如下信息:
12345678910111213141516171819202122[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks6553600 inodes, 26214144 blocks1310707 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2174746624800 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000, 7962624, 11239424, 20480000, 23887872Allocating group tables: doneWriting inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done格式化需要等待一段时间,请观察系统运行状态,不要退出。
须知
不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
执行以下命令,新建挂载目录。
mkdir 挂载目录
以新建挂载目录“/mnt/sdc”为例:
mkdir /mnt/sdc
说明:
Linux系统默认带有/mnt目录,如果创建失败,可能是/mnt被误删除了,可以执行命令mkdir -p /mnt/sdc创建。
执行以下命令,将新建分区挂载到12中创建的目录下。
mount 磁盘分区 挂载目录
以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:
mount /dev/vdb1 /mnt/sdc
执行以下命令,查看挂载结果。
df -TH
回显类似如下信息:
123456789[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/vdb1”已挂载至“/mnt/sdc”。
说明:
云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载,请参见设置开机自动挂载磁盘分区。
设置开机自动挂载磁盘分区
您可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。已有数据的云服务器也可以进行设置,该操作不会影响现有数据。
本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致云服务器重启后不能正常运行。
说明:UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
执行如下命令,查询磁盘分区的UUID。
blkid 磁盘分区
以查询磁盘分区“/dev/vdb1”的UUID为例:
blkid /dev/vdb1
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!回显类似如下信息:
12[root@ecs-test-0001 ~]# blkid /dev/vdb1/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"表示“/dev/vdb1”的UUID。
执行以下命令,使用VI编辑器打开“fstab”文件。
vi /etc/fstab
按“i”,进入编辑模式。
将光标移至文件末尾,按“Enter”,添加如下内容。
1UUID=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开始,系统会按照数字从小到大依次检查下去。
按“ESC”后,输入“:wq”,按“Enter”。
保存设置并退出编辑器。
执行以下步骤,验证自动挂载功能。
执行如下命令,卸载已挂载的分区。
umount 磁盘分区
命令示例:
umount /dev/vdb1
执行如下命令,将“/etc/fstab”文件所有内容重新加载。
mount -a
执行如下命令,查询文件系统挂载信息。
mount | grep 挂载目录
命令示例:
mount | grep /mnt/sdc
回显类似如下信息,说明自动挂载功能生效:
12root@ecs-test-0001 ~]# mount | grep /mnt/sdc/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
parted命令
通常我们用的比较多的分区工具是fdisk
命令,但由于fdisk
只支持MBR分区,MBR分区表最大支撑2T的磁盘,所以无法划分大于2T的分区。而parted
工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。
parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。
用法:parted [选项]... [设备 [命令 [参数]...]...]
将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。
帮助选项:
1 2 3 4 5 6 7 | -h, --help ---------------------------------显示此求助信息 -l, --list --------------------------列出所有设别的分区信息 -i, --interactive -------------------在必要时,提示用户 -s, --script ------------------从不提示用户 -v, --version ---------------显示版本 |
操作命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 检查MINOR ------------------------- 对文件系统进行一个简单的检查 cp [FROM-DEVICE] FROM-MINOR TO-MINOR -----------------将文件系统复制到另一个分区 help [COMMAND] -----------------------------------打印通用求助信息,或关于 COMMAND 的信息 mklabel 标签类型 ---------------------------------------创建新的磁盘标签 (分区表) mkfs MINOR 文件系统类型 ---------------------------------------在 MINOR 创建类型为“文件系统类型”的文件系统 mkpart 分区类型 [文件系统类型] 起始点 终止点 ------------------创建一个分区 mkpartfs 分区类型 文件系统类型 起始点 终止点 --------------创建一个带有文件系统的分区 move MINOR 起始点 终止点 ----------------------------------移动编号为 MINOR 的分区 name MINOR 名称 -----------------------------------将编号为 MINOR 的分区命名为“名称” print [MINOR] --------------------------------------------------退出程序 rescue 起始点 终止点 --------------------------挽救临近“起始点”、“终止点”的遗失的分区 resize MINOR 起始点 终止点 ----------------改变位于编号为 MINOR 的分区中文件系统的大小 rm MINOR -----------------------------删除编号为 MINOR 的分区 select 设备 -----------------------------选择要编辑的设备 |
操作实例:
首先类似于fdisk一样,先选择要分区的硬盘,此处为/dev/hdd:
1 2 3 4 5 6 | [root@localhost ~]# parted /dev/hdd GNU Parted 3.1 Using /dev/hdd Welcome to GNU Parted! Type 'help' to view a list of commands. 12345 |
选择了/dev/hdd作为我们操作的硬盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):
1 2 3 4 5 | (parted) mklabel Warning: The existing disk label on /dev/hdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No?(警告用户磁盘上的数据将会被销毁,询问是否继续,我们这里是新的磁盘,输入yes后回车) yes New disk label type? [msdos]? (默认为msdos形式的分区,我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车)gpt 1234 |
创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称、文件系统和分区的起止位置:
1 2 3 4 5 6 | (parted) mkpart Partition name? []? dp1 File system type? [ext2]? ext3 Start? 0 End? 500GB 12345 |
分好区后可以使用print命令打印分区信息,下面是一个print的样例:
1 2 3 4 5 6 7 8 | (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdd: 2199GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB dp1 1234567 |
如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果:
1 2 3 4 5 6 7 8 | (parted)rm 1 #rm后面使用分区的号码 (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdd: 2199GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1234567 |
按照上面的方法把整个硬盘都分区好,下面是一个分完后的样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | (parted) mkpart Partition name? []? dp1 File system type? [ext2]? ext3 Start? 0 End? 500GB (parted) mkpart Partition name? []? dp2 File system type? [ext2]? ext3 Start? 500GB End? 2199GB (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdd: 2199GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB dp1 2 500GB 2199GB 1699GB dp2 123456789101112131415161718 |
由于parted内建的mkfs还不够完善,所以以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化了,此时如果使用fdisk -l命令打印分区表会出现警告信息,这是正常的:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@10.10.90.97 ~]# fdisk -l WARNING: GPT (GUID Partition Table) detected on '/dev/hdd'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/hdd: 2199.0 GB, 2199022206976 bytes 255 heads, 63 sectors/track, 267349 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hdd1 1 267350 2147482623+ ee EFI GPT [root@10.10.90.97 ~]# mkfs.ext3 /dev/hdd1 [root@10.10.90.97 ~]# mkfs.ext3 /dev/hdd2 [root@10.10.90.97 ~]# mkdir /dp1 /dp2 [root@10.10.90.97 ~]# mount /dev/hdd1 /dp1 [root@10.10.90.97 ~]# mount /dev/hdd2 /dp2 |
parted交互操作实例
1、选择分区硬盘
首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdb: ((parted)表示在parted中输入的命令,其他为自动打印的信息)
1 2 3 4 | [root@my-linux ~]# parted /dev/hdb GNU Parted 1.8.1 Using /dev/hdb Welcome to GNU Parted! Type 'help' to view a list of commands. |
2、创建分区
选择了/dev/hdb作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):
1 2 | (parted) mklabel New disk label type? gpt (我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车) |
3、完成分区操作
创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置
1 2 3 4 5 | (parted) mkpart Partition name? []? dp1 File system type? [ext2]? xfs Start? 0 (可以用百分比表示,比如Start? 0% , End? 50%) End? 500GB |
4、验证分区信息
分好区后可以使用print命令打印分区信息,下面是一个print的样例
1 2 3 4 5 6 7 | (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdb: 3841GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB dp1 |
5、删除分区示例
如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果
1 2 3 4 5 6 7 | (parted)rm 1 #rm后面使用分区的号码,就是用print打印出来的Number (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdb: 3841GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags |
7、格式化操作
在交互状态下,完成以后我们可以使用quit
命令退出parted并使用系统的mkfs
命令对分区进行格式化。
1 2 3 4 5 6 7 8 9 10 11 12 | [root@my-linux ~]# fdisk -l WARNING: GPT (GUID Partition Table) detected on '/dev/hdb'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/hdb: 3841.0 GB, 3841022206976 bytes 255 heads, 63 sectors/track, 267349 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 267350 2147482623+ ee EFI GPT [root@my-linux ~]# mkfs.xfs /dev/hdb1 [root@my-linux ~]# mkfs.xfs /dev/hdb2 [root@my-linux ~]# mkdir /data1 /data2 [root@my-linux ~]# mount /dev/hdb1 /data1 [root@my-linux ~]# mount /dev/hdb2 /data2 |
8、交互创建分区的完整示示例
按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | (parted) mkpart Partition name? []? dp1 File system type? [ext2]? xfs Start? 0 End? 500GB (parted) mkpart Partition name? []? dp2 File system type? [ext2]? xfs Start? 500GB End? 3841GB (parted) print Model: VBOX HARDDISK (ide) Disk /dev/hdb: 3841GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB dp1 2 500GB 3841GB 1699GB dp2 |
parted非交互方式
1、创建分区表
1 | parted /dev/sdl mklabel gpt |
2、将硬盘所有容量分给主分区
1 | parted /dev/sdl mkpart primary 0% 100% |
3、查询磁盘的已有分区
1 | parted /dev/sdl print |
4、查询硬盘分区
1 2 3 | fdisk -l or lsblk |
5、格式化分区
1 | mkfs -t xfs /dev/sdl1 |
6、查询/dev/sdl1的blkid
1 | blkid /dev/sdl1 |
7、修改/etc/fstab
1 | vi /etc/fstab |
编辑/etc/fstab
使开机可知道挂载文件系统。
8、挂载文件系统,查询
1 2 | mount -a df -h |
parted非交互方式示例
创建gpt分区表
1 2 | [root@my-linux ~]# parted /dev/sdb mklabel gpt Information: You may need to update /etc/fstab. |
划分3个分区
1 2 3 4 5 6 7 8 | [root@my-linux ~]# parted /dev/sdb mkpart primary 0% 27% Information: You may need to update /etc/fstab. [root@my-linux ~]# parted /dev/sdb mkpart primary 27% 54% Information: You may need to update /etc/fstab. [root@my-linux ~]# parted /dev/sdb mkpart primary 54% 81% Information: You may need to update /etc/fstab. |
打印分区
1 2 3 4 5 6 7 8 9 10 11 | [root@my-linux ~]# parted /dev/sdb print Model: HP LOGICAL VOLUME (scsi) Disk /dev/sdb: 3841GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2097kB 1037GB 1037GB primary 2 1037GB 2074GB 1037GB primary 3 2074GB 3111GB 1037GB primary |
删除分区
删除分区的命令是parted /dev/sdb rm 1
其中最后的数字 1 表示分区编号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@my-linux ~]# parted /dev/sdb rm 1 Information: You may need to update /etc/fstab. [root@my-linux ~]# parted /dev/sdb rm 2 Information: You may need to update /etc/fstab. [root@my-linux ~]# parted /dev/sdb rm 3 Information: You may need to update /etc/fstab. [root@my-linux ~]# parted /dev/sdb print Model: HP LOGICAL VOLUME (scsi) Disk /dev/sdb: 3841GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags [root@my-linux ~]# |
MBR 和 GPT
MBR:MBR分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区
GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。突破 MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。
parted 分区对齐报错
[Warning: The resulting partition is not properly aligned for best performance
在使用parted
创建分区时产生告警信息, "Warning: The resulting partition is not properly aligned for best performance."
在使用parted
分区工具时,告警显示新的分区没有正确对齐以达到最佳性能。
1 2 3 4 5 6 7 | (parted) mkpart primary 128 1048575 Warning: You requested a partition from 128s to 1048575s. The closest location we can manage is 128s to 1048542s. Is this still acceptable to you? Yes/No? Yes Warning: The resulting partition is not properly aligned for best performance. <----- Ignore/Cancel? C |
忽略这个告警分区可以正常创建,只不过会影响磁盘性能。那么该如何创建一个正确对齐的分区呢?
解决方案
1、百分比
一般来说只要正确的选择分区开始的位置就可以解决这个问题,但需要查询和计算一下相应的参数。通常相较于使用明确的开始和结束位置使用百分比可以更容易使分区对齐。
mkpart primary 0% 100%
or mkpart primary 0% 320GB
创建单个分区, 或mkpart primary 0% 50%
and mkpart primary 50% 100%
创建两个大小相等的分区。
2、1MiB偏移量
一般情况下,很大一部分磁盘的默认对齐粒度为1MiB,因此在大多数情况下,使用MiB作为mkpart
中的单元就可以创建一个对齐的分区。由于磁盘空间上的第一个MiB包括0扇区中的遗留主引导记录(MBR)和紧随其后的gpt主表(如果是gpt类型),因此需要跳过磁盘上的第一个MiB,并从1MiB开始分区:
mkpart primary 1MiB 100%
例如,创建单个分区。
计算偏移量
如果使用百分比或1MiB偏移量不起作用,可以通过查询设备相应的sysfs条目来直接计算所需的对齐
获取如下值:
1 2 3 | # cat /sys/block/sdb/queue/optimal_io_size # cat /sys/block/sdb/alignment_offset # cat /sys/block/sdb/queue/physical_block_size |
获取正确的偏移扇区数是将 optimal_io_size
和 alignment_offset
相加然后除以 physical_block_size
.
For example:
1 2 3 4 5 | optimal_io_size = 1310720 alignment_offset = 0 physical_block_size = 512 i.e 1310720+0/512 = 2560 |
现在创建分区的命令可以是:
1 2 3 | (parted) mkpart primary 2560 100% OR (parted) mkpart primary 2560 1000G |
parted命令总结
1 2 3 4 5 6 7 8 9 10 11 12 | -- gpt parted /dev/sdb mklabel gpt mkpart opt 0% 100% mkfs -t ext4 /dev/sdb1 -- 将新硬盘划分成2个容量相等的 xfs 类型的主分区 mkpart primary xfs 0% 50% mkpart primary xfs 50% 100% -- mkpart也可以交互式创建分区 |
参考
https://support.huaweicloud.com/qs-evs/evs_01_0033.html
https://support.huaweicloud.com/qs-evs/evs_01_0038.html