云贝教育 |【技术文章】基于kylin V10的磁盘分区

Linux磁盘分区技术详解引言在Linux系统中,磁盘分区是数据存储和管理的基础。合理规划磁盘分区方案,不仅可以优化系统性能,还能提升数据的安全性和可管理性。

本文将深入探讨kylin V10下的磁盘分区技术,涵盖基本概念、常用工具、分区策略以及最佳实践。

一、磁盘分区的基本概念

磁盘分区是将物理磁盘划分为多个逻辑区域的过程,每个区域可以独立管理,安装不同的文件系统。Linux支持多种分区类型,包括传统的MBR(Master Boot Record)分区表和更先进的GUID分区表(GPT)。

MBR分区表

MBR分区表是最常见的分区格式,它将磁盘的前512字节作为引导扇区,包含引导代码和分区表。MBR最多支持4个主分区,或3个主分区加一个扩展分区,扩展分区下可包含多个逻辑分区。由于MBR的限制,单个分区的最大容量为2TB。

GPT分区表

GPT是为了解决MBR的局限而设计的,它使用更复杂的分区机制,可以支持超过2TB的磁盘,并允许创建更多的分区。GPT分区表存储在磁盘的开头和末尾,提供了更好的数据保护和恢复能力。

二、Linux下的分区工具

Linux提供了多种强大的分区工具,包括fdisk、parted、gdisk等,它们各有特点,适用于不同的场景。

  • fdisk

fdisk是最早的分区工具之一,支持MBR分区表,界面友好,适用于创建和管理简单的分区结构。

  • parted

parted是一个更现代的工具,支持MBR和GPT分区表,提供了丰富的命令集,包括创建、调整大小、移动和复制分区,适用于更复杂的分区任务。

  • gdisk

gdisk是专为GPT分区表设计的工具,提供了与fdisk类似的命令行界面,但功能更强大,是处理大容量磁盘的理想选择。

三、分区策略与最佳实践

在Linux中规划磁盘分区时,应考虑以下几点:

  • 根分区(/):通常用于存储系统核心文件,建议单独分区,保持较小的大小,以利于备份和恢复。
  • 交换分区(swap):用于虚拟内存,一般设置为物理内存的1-2倍大小,但现代系统中,也可以考虑使用swap文件代替分区。
  • 用户数据分区:如/home,应根据实际需求分配足够空间,以便存储用户文件。
  • 日志分区(/var/log):日志文件会随着时间增长,单独分区便于管理和清理。
  • 临时文件分区(/tmp):临时文件经常被创建和删除,单独分区可避免对根分区的影响。
  • 性能优化:对于性能敏感的应用,如数据库,可以考虑将数据和日志文件放在不同的物理磁盘上,以分散I/O负载。

四、操作指南

接下来,主要以fdisk命令介绍分区管理操作。

4.1 fdisk分区

1)查看当前的磁盘

[root@db2 ~]# fdisk -l | grep /dev*
Disk /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 sectors
/dev/nvme0n1p1 *       2048   2099199   2097152   1G 83 Linux
/dev/nvme0n1p2      2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/mapper/klas-root: 65.15 GiB, 69948407808 bytes, 136617984 sectors
Disk /dev/mapper/klas-swap: 2.4 GiB, 2193620992 bytes, 4284416 sectors
Disk /dev/mapper/klas-backup: 31.83 GiB, 34154217472 bytes, 66707456 sectors
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/mapper/vg_01-lv01: 25 GiB, 26843545600 bytes, 52428800 sectors

2)通过lsblk确认未使用的磁盘

[root@db2 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
└─vg_01-lv01    253:3    0   25G  0 lvm  /data
sdb               8:16   0   20G  0 disk 
└─vg_01-lv01    253:3    0   25G  0 lvm  /data
sdc               8:32   0   20G  0 disk 
sr0              11:0    1    4G  0 rom  /run/media/root/Kylin-Server-10
nvme0n1         259:0    0  100G  0 disk 
├─nvme0n1p1     259:1    0    1G  0 part /boot
└─nvme0n1p2     259: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  

可以确认/dev/sdc磁盘未被使用。

3) 启动fdisk 打开终端,输入以下命令来启动fdisk

fdisk /dev/sdc

这里/dev/sdc是你要操作的磁盘设备。

参数详解

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag    激活或去激活一个分区
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition   删除分区
   F   list free unpartitioned space  列出未分区的空闲区
   l   list known partition types 列出已知可设置的分区类型
   n   add a new partition  添加分区
   p   print the partition table  打印分区表
   t   change a partition type   更新分区类型,配合l命令使用
   v   verify the partition table   确认分区表
   i   print information about a partition   打印某个分区信息

  Misc
   m   print this menu  打印功能菜单
   u   change display/entry units  更改单位(cylinder、sector等),废弃参数
   x   extra functionality (experts only) 专家模式,提供更高级的分区操作。

  Script
   I   load disk layout from sfdisk script file  从sfdisk脚本文件加载磁盘布局
   O   dump disk layout to sfdisk script file    转储磁盘布局到sfdisk脚本文件

  Save & Exit
   w   write table to disk and exit 写入分区表并退出fdisk
   q   quit without saving changes   退出而不保存更改

  Create a new label
   g   create a new empty GPT partition table    在当前磁盘上创建一个新的 GPT 分区表
   G   create a new empty SGI (IRIX) partition table   在当前磁盘上创建一个空的 GPT (IRIX) 分区表
   o   create a new empty DOS partition table       在当前磁盘上创建一个空的 DOS 分区表(MBR分区下默认就是DOS)
   s   create a new empty Sun partition table    在当前磁盘上创建一个空的 Sun 分区表

4)创建示例

  • 创建主分区
Command (m for help): n   -->添加分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1):   -->输入主分区编号,默认1
First cylinder (1-2610, default 1):     -->输入分区的起始位置,默认1
Last cylinder, +/-cylinders or +/-size{K,M,G,T,P} (1-2610, default 2610): +2G  -->指定2G大小

Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): p
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Geometry: 255 heads, 63 sectors/track, 2610 cylinders
Units: cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot Start   End Cylinders Size Id Type
/dev/sdc1           1   262       262   2G 83 Linux

指定分区大小,可以直接指定大小,或者指定Cylinder个数。

kylinV10版本中,基本单元为Cylinder,一个Cylinder为7M。相比Redhat,基础单元是扇区,一个扇区为512byte。

  • 创建扩展分区

当创建了3个主分区之后,只能创建扩展分区

Command (m for help): p
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Geometry: 255 heads, 63 sectors/track, 2610 cylinders
Units: cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot Start   End Cylinders Size Id Type
/dev/sdc1           1   262       262   2G 83 Linux
/dev/sdc2         262   524       262   2G 83 Linux
/dev/sdc3         524   786       262   2G 83 Linux

Command (m for help): n
Partition type
   p   primary (3 primary, 0 extended, 1 free)   -->当前有3个主分区,只能创建扩展分区
   e   extended (container for logical partitions)
Select (default e): 
Using default response e.
Selected partition 4
First cylinder (786-2610, default 786): 
Last cylinder, +/-cylinders or +/-size{K,M,G,T,P} (786-2610, default 2610): +2G  -->指定分区大小2G

Created a new partition 4 of type 'Extended' and of size 2 GiB.

Command (m for help): p
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Geometry: 255 heads, 63 sectors/track, 2610 cylinders
Units: cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot Start   End Cylinders Size Id Type
/dev/sdc1           1   262       262   2G 83 Linux
/dev/sdc2         262   524       262   2G 83 Linux
/dev/sdc3         524   786       262   2G 83 Linux
/dev/sdc4         786  1048       262   2G  5 Extended  -->显示的类型是扩展

  • 创建逻辑分区
Command (m for help): n 
All primary partitions are in use.
Adding logical partition 5    -->从编号5开始,创建的是逻辑分区      
First cylinder (786-1048, default 786): 
Last cylinder, +/-cylinders or +/-size{K,M,G,T,P} (786-1048, default 1048): +2G

Created a new partition 5 of type 'Linux' and of size 2 GiB.

Command (m for help): p
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Geometry: 255 heads, 63 sectors/track, 2610 cylinders
Units: cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot Start   End Cylinders Size Id Type
/dev/sdc1           1   262       262   2G 83 Linux
/dev/sdc2         262   524       262   2G 83 Linux
/dev/sdc3         524   786       262   2G 83 Linux
/dev/sdc4         786  1048       262   2G  5 Extended
/dev/sdc5         786  1047       262   2G 83 Linux   -->显示的类型是LINUX

  • 保存退出
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

  • 启用分区

在物理服务器中,即使保存了磁盘区分的配置,但刚刚创建的逻辑分区还处于未启用的状态。此时,可以通过partprobe命令使内核强制读取分区表,启用逻辑分区

partprobe /dev/sdc

4.2 删除分区

[root@db2 ~]# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1-5, default 5): ^C
Command (m for help): p   -->查看当前分区

Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot    Start      End Sectors Size Id Type
/dev/sdc1           2048  4208639 4206592   2G 83 Linux
/dev/sdc2        4208640  8402943 4194304   2G 83 Linux
/dev/sdc3        8402944 12611583 4208640   2G 83 Linux
/dev/sdc4       12611584 16820223 4208640   2G  5 Extended
/dev/sdc5       12613632 14710783 2097152   1G 83 Linux

Command (m for help): d   -->通过d参数,删除指定分区
Partition number (1-5, default 5): 5

Partition 5 has been deleted.

Command (m for help): p
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot    Start      End Sectors Size Id Type
/dev/sdc1           2048  4208639 4206592   2G 83 Linux
/dev/sdc2        4208640  8402943 4194304   2G 83 Linux
/dev/sdc3        8402944 12611583 4208640   2G 83 Linux
/dev/sdc4       12611584 16820223 4208640   2G  5 Extended

4.3 查看分区

1)fdisk 

fdisk是一个在Linux系统上用于磁盘管理的命令行工具,可以用来查看、创建、修改、删除磁盘分区等操作

[root@db2 ~]# fdisk -l /dev/sdc
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x625d3154

Device     Boot    Start      End Sectors Size Id Type
/dev/sdc1           2048  4208639 4206592   2G 83 Linux
/dev/sdc2        4208640  8402943 4194304   2G 83 Linux
/dev/sdc3        8402944 12611583 4208640   2G 83 Linux
/dev/sdc4       12611584 16820223 4208640   2G  5 Extended
/dev/sdc5       12613632 16818175 4204544   2G 83 Linux

2) lsblk

当在Linux系统上运行lsblk命令时,它会显示系统上的块设备信息,包括磁盘、分区和挂载点

[root@db2 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
└─vg_01-lv01    253:3    0   25G  0 lvm  /data   -->挂载点
sdb               8:16   0   20G  0 disk 
└─vg_01-lv01    253:3    0   25G  0 lvm  /data
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0    2G  0 part 
├─sdc2            8:34   0    2G  0 part 
├─sdc3            8:35   0    2G  0 part 
├─sdc4            8:36   0    1K  0 part 
└─sdc5            8:37   0    2G  0 part 
sr0              11:0    1    4G  0 rom  /run/media/root/Kylin-Server-10
nvme0n1         259:0    0  100G  0 disk 
├─nvme0n1p1     259:1    0    1G  0 part /boot
└─nvme0n1p2     259:2    0   99G  0 part    -->分区作为lvm
  ├─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 

可以确认type=part为分区类型

说明

NAME: 设备的名称,例如/dev/sda表示第一个物理硬盘。
MAJ:MIN: 主设备号和次设备号,用于内核对设备的标识。
RM: 可移动设备标志,0表示不是可移动设备,1表示是可移动设备。
SIZE: 设备的容量大小,通常以单位(如G、M)显示。
RO: 只读标记,0表示可读写设备,1表示只读设备。
TYPE: 设备的类型,如磁盘(disk)或分区(part)。
MOUNTPOINT: 设备的挂载点,如果没有挂载点则显示为<none>。

3) blkid

blkid命令用于打印或提取块设备的属性信息,通常用于识别块设备的类型、文件系统以及UUID等信息

[root@db2 ~]# blkid
/dev/nvme0n1p1: UUID="dfe0bc41-062c-4193-aef9-c688678e2691" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="d39b5619-01"
/dev/nvme0n1p2: UUID="kloVNL-U91m-IcuS-oiaG-Tb9z-pWv2-f6azHu" TYPE="LVM2_member" PARTUUID="d39b5619-02"
/dev/sr0: BLOCK_SIZE="2048" UUID="2021-08-09-17-54-20-00" LABEL="Kylin-Server-10" TYPE="iso9660"
/dev/mapper/klas-root: UUID="4fc3f6c9-f72e-419b-95d2-1cc00e258909" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/klas-swap: UUID="2824c3f7-f605-4eb5-8d7e-6fd960bef381" TYPE="swap"
/dev/mapper/klas-backup: LABEL="KYLIN-BACKUP" UUID="cf4ce59e-3047-4dbf-9099-875c0f3a7daf" BLOCK_SIZE="512" TYPE="xfs"
/dev/sda: UUID="PXgoOr-8qDY-0Zmn-5K3E-JbJ1-f1kk-yvA6Nz" TYPE="LVM2_member"
/dev/sdc1: PARTUUID="625d3154-01"
/dev/sdc2: PARTUUID="625d3154-02"
/dev/sdc3: PARTUUID="625d3154-03"
/dev/sdc5: PARTUUID="625d3154-05"
/dev/sdb: UUID="SLBB1J-RXyz-Rvbh-T8It-qIBH-CfU9-R1Wbad" TYPE="LVM2_member"
/dev/mapper/vg_01-lv01: UUID="35d21ce0-d3c7-4252-86ba-329b0e953a91" BLOCK_SIZE="4096" TYPE="ext4"

在上述示例中:

/dev/sdc1 是第一个分区的设备路径,其PARTUUID为"625d3154-01” 

由于分区未格式化挂载,所以只显示了PARTUUID

blkid命令输出的信息包括:

UUID:每个文件系统都有一个唯一的UUID,用于识别文件系统的唯一性。
TYPE:文件系统的类型,比如ext4、xfs等。
PARTUUID:分区的唯一标识,用于标识分区的唯一性。
通过blkid命令,用户可以方便地查看块设备上的文件系统信息以及UUID,有助于在系统管理中快速识别和操作设备。

4.4 格式化分区

1)mkfs

使用常见的xfs格式磁盘

[root@db2 ~]# mkfs.xfs -b size=8192 /dev/sdc1 -f
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=65728 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=8192   blocks=262912, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=8192   ascii-ci=0, ftype=1
log      =internal log           bsize=8192   blocks=1280, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=8192   blocks=0, rtextents=0

上面的示例将/dev/sdc1格式化为xfs文件系统,逻辑块大小为8K

2)blkid

[root@db2 ~]# blkid | grep /dev/sdc1
/dev/sdc1: UUID="1586705b-0dc4-49a4-9196-e41dc8fc0cb3" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="625d3154-01"

在格式化之后,多了UUID和BLOCK_SIZE的参数

 

五、总结

󠁪结语合理规划和管理Linux磁盘分区,不仅能提升系统的稳定性和性能,还能增强数据的安全性和可维护性。通过选择合适的分区工具和策略,可以构建出既高效又可靠的存储架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值