初始化Linux数据盘(fdisk)

初始化Linux数据盘(fdisk)

操作场景

本文以云服务器的操作系统为“CentOS 7.7 64位”为例,采用fdisk分区工具为数据盘设置分区。

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。对于Linux操作系统而言,当磁盘分区形式选用GPT时,fdisk分区工具将无法使用,需要采用parted工具。

划分分区并挂载磁盘

本操作以该场景为例,当服务器挂载了一块新的数据盘时,使用fdisk分区工具将该数据盘设为主分区,分区形式默认设置为MBR,文件系统设为xfs格式,挂载在“/opt”下,并设置开机启动自动挂载。

  1. 执行以下命令,查看新增数据盘。

fdisk -l

回显类似如下信息:

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
36
37
38
39
40
41
42
43
44
45
46
47
[root@DB-Sub12003574 ~]# fdisk -l

Disk /dev/sda: 68.7 GB, 68719476736 bytes, 134217728 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: 0x0002fb1b

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 134217727 66059264 8e Linux LVM

Disk /dev/sdb: 1073.7 GB, 1073741824000 bytes, 2097152000 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 /dev/mapper/rootvg-lvroot: 27.9 GB, 27917287424 bytes, 54525952 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 /dev/mapper/rootvg-lvswap: 17.2 GB, 17179869184 bytes, 33554432 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 /dev/mapper/rootvg-lvhome: 1073 MB, 1073741824 bytes, 2097152 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 /dev/mapper/rootvg-lvvar: 10.7 GB, 10737418240 bytes, 20971520 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 /dev/mapper/rootvg-lvopt: 10.7 GB, 10733223936 bytes, 20963328 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

表示当前的服务器有两块磁盘,“/dev/sda”是系统盘,“/dev/sdb”是新增数据盘。

  1. 执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作。

fdisk 新增数据盘

以新挂载的数据盘“/dev/sdb”为例:

fdisk /dev/sdb

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
[root@DB-Sub12003574 ~]# 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 0xa04eb0bd.

Command (m for help):
  1. 输入“n”,按“Enter”,开始新建分区。

回显类似如下信息:

1
2
3
4
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended

表示磁盘有两种分区类型:

  • “p”表示主分区。
  • “e”表示扩展分区。

说明:

磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。

磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。

  1. 以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。

回显类似如下信息:

1
2
Select (default p): p
Partition number (1-4, default 1):

“Partition number”表示主分区编号,可以选择1-4。

  1. 以分区编号选择“1”为例,输入主分区编号“1”,按“Enter”。

回显类似如下信息:

1
2
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):

“First sector”表示起始磁柱值,可以选择2048-209715199,默认为2048。

  1. 以选择默认起始磁柱值2048为例,按“Enter”。

系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

回显类似如下信息:

1
2
3
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):

“Last sector”表示截止磁柱值,可以选择2048-209715199,默认为209715199。

  1. 以选择默认截止磁柱值209715199为例,按“Enter”。

系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

回显类似如下信息:

1
2
3
4
5
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set

Command (m for help):

表示分区完成,即为数据盘新建了1个分区。

  1. 输入“p”,按“Enter”,查看新建分区的详细信息。

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
Command (m for help): p

Disk /dev/sdb: 1073.7 GB, 1073741824000 bytes, 2097152000 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: 0xa04eb0bd

Device Boot Start End Blocks Id System
/dev/sdb1 2048 2097151999 1048574976 83 Linux

表示新建分区“/dev/sdb1”的详细信息。

  1. 输入“w”,按“Enter”,将分区结果写入分区表中。

回显类似如下信息:

1
2
3
4
5
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

表示分区创建完成。

说明:

如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。

  1. 执行以下命令,将新的分区表变更同步至操作系统。

    partprobe

  1. 执行以下命令,将新建分区文件系统设为系统所需格式。

    mkfs -t 文件系统格式 /dev/sdb1

    以设置文件系统为“xfs”为例:

    mkfs -t xfs /dev/sdb1

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@DB-Sub12003574 ~]# mkfs -t xfs /dev/sdb1
    meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65535936 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=262143744, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=127999, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
格式化需要等待一段时间,请观察系统运行状态,不要退出。

不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
  1. 执行以下命令,新建挂载目录。

    mkdir 挂载目录

    以挂载目录“/opt”为例:

  1. 执行以下命令,将新建分区挂载到12中创建的目录下。

    mount 磁盘分区 挂载目录

    以挂载新建分区“/dev/sdb1”至“/opt”为例:

    mount /dev/sdb1 /opt

  1. 执行以下命令,查看挂载结果。

    df -TH

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@DB-Sub12003574 ~]# df -HT
    Filesystem Type Size Used Avail Use% Mounted on
    devtmpfs devtmpfs 17G 0 17G 0% /dev
    tmpfs tmpfs 17G 0 17G 0% /dev/shm
    tmpfs tmpfs 17G 55M 17G 1% /run
    tmpfs tmpfs 17G 0 17G 0% /sys/fs/cgroup
    /dev/mapper/rootvg-lvroot xfs 28G 4.7G 24G 17% /
    /dev/sda1 xfs 1.1G 178M 886M 17% /boot
    /dev/sdb1 xfs 1.1T 34M 1.1T 1% /opt
    /dev/mapper/rootvg-lvhome xfs 1.1G 34M 1.1G 4% /home
    /dev/mapper/rootvg-lvvar xfs 11G 320M 11G 3% /var
    tmpfs tmpfs 3.4G 13k 3.4G 1% /run/user/42
    tmpfs tmpfs 3.4G 0 3.4G 0% /run/user/1000
表示新建分区**“/dev/sdb1”**已挂载至“/opt”。



说明:

服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载

设置开机自动挂载磁盘分区

设置云服务器系统启动时自动挂载磁盘分区,不能采用在“/etc/fstab”直接指定设备名(比如/dev/sdb1)的方法,因为设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb1可能会变成/dev/sdb2。推荐使用UUID来配置自动挂载磁盘分区。

说明:

UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。

  1. 执行如下命令,查询磁盘分区的UUID。

blkid 磁盘分区

以查询磁盘分区“/dev/sdb1”的UUID为例:

blkid /dev/sdb1

回显类似如下信息:

1
2
[root@DB-Sub12003574 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="94a71f8e-1900-41d5-82c8-9e79b6754981" TYPE="xfs"

表示“/dev/sdb1”的UUID。

  1. 执行以下命令,使用VI编辑器打开“fstab”文件。

vim /etc/fstab

  1. 按“i”,进入编辑模式。

  2. 将光标移至文件末尾,按“Enter”,添加如下内容。

1
UUID=94a71f8e-1900-41d5-82c8-9e79b6754981 /opt  xfs defaults    0 0

以内容上仅为示例,具体请以实际情况为准,参数说明如下:

  • 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。

  • 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。

  • 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。

  • 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。

  • 第五列为Linux dump备份选项。

    • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
    • 1表示使用Linux dump备份。
  • 第六列为fsck选项,即开机时是否使用fsck检查磁盘。

    • 0表示不检验。

    • 挂载点为(/)根目录的分区,此处必须填写1。

      根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  1. 按“ESC”后,输入“:wq”,按“Enter”。

保存设置并退出编辑器。

  1. 执行以下步骤,验证自动挂载功能。
  1. 执行如下命令,卸载已挂载的分区。

    umount 磁盘分区

    命令示例:

    umount /dev/sdb1

  2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。

    mount -a

  3. 执行如下命令,查询文件系统挂载信息。

    mount | grep 挂载目录

    命令示例:

    mount | grep /opt

    回显类似如下信息,说明自动挂载功能生效:

    1
    2
    3
    [root@DB-Sub12003574 etc]# mount | grep /opt
    /dev/mapper/rootvg-lvopt on /opt type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/sdb1 on /opt type xfs (rw,relatime,attr2,inode64,noquota)