生态社区

技术文档

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

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

1. 对磁盘进行分区

· 前提条件

1. 已登录服务器系统。

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

· 查看新增数据盘

[root@localhost 桌面]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda               8:0    0  100G  0 disk

├─sda1            8:1    0    1G  0 part /boot

└─sda2            8:2    0   99G  0 part

  ├─klas-root   253:0    0 65.1G  0 lvm  /

  ├─klas-swap   253:1    0    2G  0 lvm  [SWAP]

  └─klas-backup 253:2    0 31.8G  0 lvm  

sdb               8:16   0   20G  0 disk

sr0              11:0    1 1024M  0 rom  

[root@localhost 桌面]#

 

可以看到当前服务器上有两块盘:/dev/sda 和 /dev/sdb。sda 是系统盘,sdb 是新增数据盘。

· 对新增数据盘进行分区

语法:

    parted 新增数据盘名称

 

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

GNU Parted 3.3

使用 /dev/sdb

欢迎使用 GNU Parted!输入 'help' 来查看命令列表。

(parted) help                                                             

  align-check TYPE N                       check partition N for TYPE(min|opt) alignment

  help [COMMAND]                           打印通用求助信息,或 COMMAND 的帮助

  mklabel,mktable LABEL-TYPE               创建新的磁盘卷标 (分区表)

  mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区

  name 编号 名称                           将指定“编号”的分区命名为“名称”

  print [devices|free|list,all|数字]        显示分区表、可用设备、剩余空间、所有分区或特殊分区

  quit                                     退出程序

  rescue 起始点 终止点                      挽救临近“起始点”、“终止点”的遗失的分区

  resizepart NUMBER END                    改变 NUMBER 的大小

  rm NUMBER                                删除编号为 NUMBER 的分区

  select 设备                              选择要编辑的设备

  disk_set 旗标 状态                       变更已选设备上的旗标

  disk_toggle [旗标]                       切换已选设备上的旗标状态

  set 编号 旗标 状态                       改变指定“编号”分区的旗标

  toggle [编号 [旗标]]                     切换“编号”分区上的“旗标”状态

  unit 单位                                设置缺省的“单位”

  version                                  显示目前 GNU Parted 的版本与版权信息

(parted)                                                                  

 

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

· 查看当前磁盘分区形式

(parted) print                                                            

错误: /dev/sdb: 无法辨识的磁盘卷标

型号:VMware, VMware Virtual S (scsi)                                     

磁盘 /dev/sdb:21.5GB

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

分区表:unknown

磁盘标志:

 

“分区表”为“unknown”表示磁盘分区形式未知。

· 设置磁盘分区形式。

磁盘分区形式有 MBR 和 GPT 两种,这里我们设置成 GPT 格式。

(parted) mklabel gpt                                                          

(parted)                                            

· 查看磁盘分区形式

(parted) print                                                            

型号:VMware, VMware Virtual S (scsi)

磁盘 /dev/sdb:21.5GB

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

分区表:gpt

磁盘标志:

 

编号  起始点  结束点  大小  文件系统  名称  标志

 

可以看到,磁盘分区形式已经是 GPT 格式了。

· 创建分区

(parted) mkpart                                                           

分区名称?  []?                                                           

文件系统类型?  [ext2]? xfs                                               

起始点? 0G                                                              

结束点? 10G                                                              

(parted)                                                                  

(parted)

分区名称:可不填,直接回车。
文件系统类型:可根据需要自行修改,我这里选择了 xfs 格式。
起始点:0G 表示从头部开始。
结束点:填入你想设置的分区大小,我这里设置的是 10G 。

· 查看新建分区的详细信息

(parted) print                                                            

型号:VMware, VMware Virtual S (scsi)

磁盘 /dev/sdb:21.5GB

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

分区表:gpt

磁盘标志:

 

编号  起始点  结束点  大小    文件系统  名称  标志

 1    1049kB  10.0GB  9999MB  xfs

 

(parted)                                       

可以看到 /dev/sdb1 分区已经创建好了。

· 退出 parted 交互模式。

(parted)                                                                  

(parted)                                                                  

(parted) quit                                                             

信息: 你可能需要 /etc/fstab。

 

[root@localhost 桌面]#                       

parted 是直接将分区信息写到磁盘分区表中的,所以这里不需要像 fdisk 一样手动写回,直接退出就可以了。至此,磁盘分区完毕,如果我们还想继续分区,重复上面步骤即可。

· 再次查看磁盘分区信息

[root@localhost 桌面]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda               8:0    0  100G  0 disk

├─sda1            8:1    0    1G  0 part /boot

└─sda2            8:2    0   99G  0 part

  ├─klas-root   253:0    0 65.1G  0 lvm  /

  ├─klas-swap   253:1    0    2G  0 lvm  [SWAP]

  └─klas-backup 253:2    0 31.8G  0 lvm  

sdb               8:16   0   20G  0 disk

└─sdb1            8:17   0  9.3G  0 part

sr0              11:0    1 1024M  0 rom

可以查看到新建分区 /dev/sdb1 。

其实我们还可以通过非交互式的单条命令来创建分区

语法:

    parted [Disk Name] [mklabel] [LABEL-TYPE]

    parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]

 

[root@localhost 桌面]# parted /dev/sdc mklabel gpt

[root@localhost 桌面]#                                                    

[root@localhost 桌面]# parted /dev/sdc mkpart xfs 0GB 10GB

信息: 你可能需要 /etc/fstab。

[root@localhost 桌面]#

 

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

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

#语法:

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

 

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

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

         =                       sectsz=512   attr=2, projid32bit=1

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

         =                       reflink=1

data     =                       bsize=4096   blocks=2441216, 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

[root@localhost 桌面]#

 

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   12K  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   60K  469M    1% /tmp

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

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

/dev/sdb1             xfs       9.4G   99M  9.3G    2% /data

[root@localhost 桌面]#

 

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

4. 设置开机自动挂载

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

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

· 查看磁盘分区的UUID

[root@localhost 桌面]# blkid

/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/sdb1: UUID="518d9bca-54c3-40d8-8936-e80877587a72" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="bb161840-fc62-4d0a-a6ff-7f89b9c881f3"

/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=518d9bca-54c3-40d8-8936-e80877587a72 /data      xfs defaults     0   0

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