生态社区

技术文档

麒麟服务器系统磁盘管理之fdisk

发布时间:2023-08-31    浏览次数:2086次    作者:湖南省计算产业生态创新中心 (长沙)

1. 对磁盘进行分区

· 前提条件:

1. 已登录服务器系统。

2. 已挂载数据盘到服务器,且该盘未初始化。

· 查看新增数据盘

root@localhost 桌面]# fdisk -l

Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区

磁盘型号:VMware Virtual S

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

 

Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区

磁盘型号:VMware Virtual S

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x7243b1bf

 

设备       启动    起点      末尾      扇区 大小 Id 类型

/dev/sda1  *       2048   2099199   2097152   1G 83 Linux

/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM

 

 

Disk /dev/mapper/klas-root:65.15 GiB,69948407808 字节,136617984 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

 

Disk /dev/mapper/klas-swap:2.4 GiB,2193620992 字节,4284416 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

 

Disk /dev/mapper/klas-backup:31.83 GiB,34154217472 字节,66707456 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

这里可以看到当前服务器上有两块盘:/dev/sda 和 /dev/sdb。sda 是系统盘,sdb 是新增数据盘,且没有进行初始化。

· 对新增数据盘进行分区

#语法:fdisk 新增数据盘名称

 

[root@localhost 桌面]# fdisk /dev/sdb

 

欢迎使用 fdisk (util-linux 2.35.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

 

设备不包含可识别的分区表。

创建了一个磁盘标识符为 0x18e09c4e 的新 DOS 磁盘标签。

 

命令(输入 m 获取帮助):m

 

帮助:

 

  DOS (MBR)

   a   开关 可启动 标志

   b   编辑嵌套的 BSD 磁盘标签

   c   开关 dos 兼容性标志

 

  常规

   d   删除分区

   F   列出未分区的空闲区

   l   列出已知分区类型

   n   添加新分区

   p   打印分区表

   t   更改分区类型

   v   检查分区表

   i   打印某个分区的相关信息

 

  杂项

   m   打印此菜单

   u   更改 显示/记录 单位

   x   更多功能(仅限专业人员)

 

  脚本

   I   从 sfdisk 脚本文件加载磁盘布局

   O   将磁盘布局转储为 sfdisk 脚本文件

 

  保存并退出

   w   将分区表写入磁盘并退出

   q   退出而不保存更改

 

  新建空磁盘标签

   g   新建一份 GPT 分区表

   G   新建一份空 GPT (IRIX) 分区表

   o   新建一份的空 DOS 分区表

   s   新建一份空 Sun 分区表

 

 

命令(输入 m 获取帮助):

 

注意,这里 fdisk 命令默认帮我们把磁盘设置成 DOS 格式,也就是 MBR 格式,因为 fdisk 命令只支持 MBR 格式。如果想将磁盘设置成 GPT 格式,那我们就需要使用 parted 命令。

然后我们按照提示输入“m”获取帮助,可以看到上面列出了 fdisk 命令中所有的子命令。这里面很多的子命令,我们后面都会用到。

· 输入“n”,开始创建新分区。

命令(输入 m 获取帮助):n

分区类型

   p   主分区 (0 primary, 0 extended, 4 free)

   e   扩展分区 (逻辑分区容器)

选择 (默认 p):

 

注意:因为磁盘已经被设成 DOS 格式了,所以只支持 4 个主分区。

这里会让我们选择新分区的类型。我们选择创建一个主分区,所以应该输入“p”。

选择 (默认 p):p

分区号 (1-4, 默认  1):

第一个扇区 (2048-41943039, 默认 2048):

最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +10G

 

创建了一个新分区 1,类型为“Linux”,大小为 10 GiB。

 

命令(输入 m 获取帮助):

 

分区号、起始扇区位置直接使用默认值就好,直接回车。末尾扇区这里需要我们根据自己对分区大小的需求来输入了,比如我希望分区大小为 10G,那么就输入“+10G”。

到这里,我们的分区就已经创建好了。

· 输入“p”,查看新建分区的详细信息。

命令(输入 m 获取帮助):p

 

Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区

磁盘型号:VMware Virtual S

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x18e09c4e

 

设备       启动  起点     末尾     扇区 大小 Id 类型

/dev/sdb1        2048 20973567 20971520  10G 83 Linux

 

命令(输入 m 获取帮助):

 

可以看到 /dev/sdb1 这个分区已经创建好了,大小也是我设置的 10G。

· 输入“w”,将分区结果写回磁盘分区表中。

上面我们创建的 /dev/sdb1 分区的信息其实是存在内存当中的,并没有写入磁盘分区表。所以我们还要将结果写入磁盘分区表,这样才算真正完成了磁盘分区。

如果我们在这一步发现,之前分区操作有误,那么直接输入“q”,那么会直接退出 fdisk 命令的交互模式,之前的分区结果将不会被保留。

命令(输入 m 获取帮助):w

分区表已调整。

将调用 ioctl() 来重新读分区表。

正在同步磁盘。

 

[root@localhost 桌面]#

 

将分区结果写入磁盘分区表后,我们就会自动退出 fdisk 命令的交互模式。至此,磁盘分区完毕,如果我们还想继续分区,重复上面步骤即可。

· 再次查看新增数据盘

[root@localhost 桌面]# fdisk -l

Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区

磁盘型号:VMware Virtual S

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x18e09c4e

 

设备       启动  起点     末尾     扇区 大小 Id 类型

/dev/sdb1        2048 20973567 20971520  10G 83 Linux

 

 

Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区

磁盘型号:VMware Virtual S

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x7243b1bf

 

设备       启动    起点      末尾      扇区 大小 Id 类型

/dev/sda1  *       2048   2099199   2097152   1G 83 Linux

/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM

 

 

Disk /dev/mapper/klas-root:65.15 GiB,69948407808 字节,136617984 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

 

Disk /dev/mapper/klas-swap:2.4 GiB,2193620992 字节,4284416 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

 

 

Disk /dev/mapper/klas-backup:31.83 GiB,34154217472 字节,66707456 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost 桌面]#

 

我们可以看到 /dev/sdb1 这个分区已经创建好了,并且已经同步至操作系统。

2. 对磁盘分区进行格式化

完成对磁盘分区之后,我们就需要把分区文件系统格式化成我们想要的格式,比如 xfs 、 ext4 等等。

#语法:

    mkfs.文件系统格式 分区名称    或者    mkfs -t 文件系统格式 分区名称

 

[root@localhost 桌面]# mkfs.xfs /dev/sdb1

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=1, sparse=1, rmapbt=0

         =                       reflink=1

data     =                       bsize=4096   blocks=2621440, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0, ftype=1

log      =internal log           bsize=4096   blocks=2560, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

 

3. 挂载磁盘分区

完成对磁盘分区的格式化之后,我们还并不能直接使用这个分区。还需要把这个分区挂载到某个目录下,这样才能正常使用。

· 创建挂载目录

语法:mkdir 挂载目录

 

[root@localhost 桌面]# mkdir /data

[root@localhost 桌面]#

[root@localhost 桌面]# ls /

backup  bin  boot  box  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sudo  sys  tmp  usr  var

 

· 将创建的分区挂载到我们创建的挂载目录下

语法: mount 分区名称 挂载目录

 

[root@localhost 桌面]# mount /dev/sdb1 /data

[root@localhost 桌面]#

[root@localhost 桌面]#

 

· 查看挂载结果

[root@localhost 桌面]# df -hT

文件系统              类型      容量  已用  可用 已用% 挂载点

devtmpfs              devtmpfs  442M     0  442M    0% /dev

tmpfs                 tmpfs     469M   16K  469M    1% /dev/shm

tmpfs                 tmpfs     469M   14M  456M    3% /run

tmpfs                 tmpfs     469M     0  469M    0% /sys/fs/cgroup

/dev/mapper/klas-root xfs        66G  9.6G   56G   15% /

tmpfs                 tmpfs     469M   68K  469M    1% /tmp

/dev/sda1             xfs      1014M  214M  801M   22% /boot

tmpfs                 tmpfs      94M   12K   94M    1% /run/user/1001

tmpfs                 tmpfs      94M   52K   94M    1% /run/user/0

tmpfs                 tmpfs      94M     0   94M    0% /run/user/992

/dev/sdb1             xfs        10G  104M  9.9G    2% /data

[root@localhost 桌面]#

最后一行可以看到,我们创建的 /dev/sdb1 这个分区已经挂载到 /data 目录下了。

4. 设置开机自动挂载

我们上面手动挂载新建分区之后,如果机器重启,那么我们又需要重新挂载一次。为了避免麻烦和保证业务的持续运行,我们可以将挂载内容写入到 /etc/fstab ,这样每次开机系统就会自动挂载我们新建的分区了。

这里我们最好不要采用在 /etc/fstab直接指定 /dev/sdb1 的方法,因为云中设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb可能会变成/dev/sdc。我们推荐使用 UUID 来配置自动挂载数据盘。

· 查看磁盘分区的UUID

[root@localhost 桌面]# blkid

/dev/sdb1: UUID="81e9e293-493b-4ce8-9d35-ccd43e918b31" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="18e09c4e-01"

/dev/sda1: UUID="d176e55c-58b6-44b2-995d-de3575936f97" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="7243b1bf-01"

/dev/sda2: UUID="gTaXnQ-coMf-JnnY-CIwd-PIha-ncLj-9nUU5a" TYPE="LVM2_member" PARTUUID="7243b1bf-02"

/dev/mapper/klas-root: UUID="d5cb49ee-0f67-44ad-9c7d-b08e3a307a87" BLOCK_SIZE="512" TYPE="xfs"

/dev/mapper/klas-swap: UUID="d8bff809-ed34-4e7a-aadb-dc89f801c1a7" TYPE="swap"

/dev/mapper/klas-backup: LABEL="KYLIN-BACKUP" UUID="1e5acd36-f27e-4390-8436-60b30cee1952" BLOCK_SIZE="512" TYPE="xfs"

[root@localhost 桌面]#

 

第一行就是我们创建的分区了。

· 编辑 /etc/fstab

vim /etc/fstab

· “i”进入编辑模式,然后将光标移动到末尾,添加以下内容。

UUID=81e9e293-493b-4ce8-9d35-ccd43e918b31 /data      xfs defaults     0   0

“esc”,然后输入”:wq“,最后回车。