七.管理基本存储
1.添加分区、文件系统和挂载
1.1对磁盘进行分区(RH124-10)
磁盘分区是将物理硬盘划分为独立逻辑单元(分区),不同分区可承载不同功能(如系统、数据、交换空间)。RHEL 9 支持两种主流分区方案:MBR 和 GPT。
如:

1.2MBR分区方案
MBR(Master Boot Record,主引导记录)是计算机磁盘分区 的传统标准 ,自 1983 年随 IBM PC DOS 2.0 诞生以来,长期主导小容量存储设备的分区管理,至今仍在老旧设备、小存储场景中广泛使用。
核心作用是****"记录磁盘分区信息"**** 和****"引导操作系统启动"**** ,但其设计局限(如容量、分区数量)也使其逐渐被 GPT 取代。
图解:


MBR分区方案在BIOS固件的系统上最多支持4个主分区,通过扩展分区和逻辑分区,最多创建15个分区;
分区大小数据以32位值存储,最大磁盘和分区大小为2TiB;
2TiB磁盘和分区大小限制是MBR的局限,因此MBR方案逐渐被GPT分区方案代替。
1.3GPT分区方案
对于可扩展固件接口(UEFI)固件系统,默认使用GPT分区方案;
GPT最多支持128个分区,64位值存储分区大小,最大磁盘和分区大小可以达到8ZiB;
GPT使用全局唯一标识符(GUID)来识别每个磁盘和分区,GPT提供分区表信息的冗余。
主GPT位于磁盘头部,备份副本位于磁盘尾部,GPT使用checksum来检测GPT头和分区表中的错误与损坏,提高数据安全性。
GPT分区图解:

GPT分区表冗余结构

1.4使用常见管理工具管理分区
1.4.1 fdisk
定位:
历史最悠久、最受欢迎的命令行分区工具;
功能:
最初用于 MBR 分区表,现在也支持 GPT 分区,兼容性较强;
适用场景:
需要传统分区操作,或对兼容性要求高的场景(同时涉及 MBR 和 GPT 时可快速上手)。
1.4.2 gdisk
定位:
fdisk 的 "GPT 专用变体";
功能:
专为支持 GPT 分区表设计,在 GPT 分区的创建、修改、校验等操作上更专业、更精细。
适用场景:
需要深度管理 GPT 分区表的场景(比如大磁盘、多分区的 GPT 环境)。
1.4.3 parted & libparted
定位:
红帽企业 Linux(RHEL)的标准分区工具/库;
功能:
parted是命令行工具,libparted是其底层支持库;
可同时管理MBR 和 GPT 两种分区方案(这是它的核心优势,适用场景极广)。
适用场景:
红帽系统(RHEL)的标准化分区管理,尤其是需要同时兼容 MBR 和 GPT 的企业级环境。
1.4.3.1使用parted管理磁盘分区
(1)进入parted交互模式
parted /dev/vda

(2)查看磁盘

1.4.3.2使用parted管理分区一般流程:

1.5为新磁盘设置分区表:
对新磁盘进行分区,首先必须要为其写入磁盘标签。磁盘标签指示了所用的分区方案;
MBR=msdos;
GPT=gpt;
如:
parted /dev/vdb mklabel gpt/msdos
注:
parted命令即刻生效,可能导致数据丢失,mklabel可视为擦除现有分区表
分区表和分区的区别

1.6创建MBR分区
(1)parted指定需要创建分区的磁盘设备;
parted /dev/vdb
(2)使用mkpart子命令创建新的主分区或扩展分区;
mkpart
如:

(3)指定分区的文件系统类型,如xfs或ext4;(仅指定分区类型,不会创建文件系统)
xfs/ext4
如:

(4)指定新分区开始的扇区(磁盘存储的最小物理单位),s后缀提供了扇区的值,也可以使用MiB、GiB、TiB、MB、GB或TB后缀,若无后缀,默认为MB;
如:2048s

(5)指定应结束新分区的磁盘扇区
如:1000MB

(6)退出parted
如:quit

(7)运行udevadm settle命令,等待系统检测新分区并在/dev目录下创建关联的设备文件
如:udevadm settle
(8)或在命令行(非交互模式)直接输入完整命令
parted /dev/vdb mkpart primary xfs 2048s 1000MB
如:

1.7创建GPT分区
(1)parted指定需要创建分区的磁盘设备;
如:parted /dev/vdb

(2)使用mkpart子命令创建新的主分区或扩展分区;
如:mkpart usersdata

(3)指定分区的文件系统类型,如xfs或ext4
如:xfs

(4)指定新分区开始的扇区

(5)指定应结束新分区的磁盘扇区

(6)退出

(7)运行udevadm settle命令,等待系统检测新分区并在/dev目录下创建关联的设备文件
如:udevadm settle
(8)或在命令行(非交互模式)直接输入完整命令
parted /dev/vdb mkpart usersdata xfs 2048s 1000MB
如:

1.8创建两种分区方案对比
|---------------------|-------------------------------------------------|---------------------------------------------------|
| 对比项 | MBR 分区表 (主引导记录) | GPT 分区表 (GUID 分区表) |
| 磁盘容量支持 | 最大支持2TB磁盘 | 支持超2TB大磁盘(理论最大8ZB) |
| 分区数量限制 | 最多4个主分区,或 3 个主分区 + 1 个扩展分区(扩展分区内可分多个逻辑分区) | 最多 128 个分区,无 "主 / 扩展 / 逻辑" 区分,所有分区均为 "主分区" 类型 |
| 分区表可靠性 | 分区表仅存于磁盘开头 ,无冗余,易损坏 | 分区表有备份(磁盘末尾) + CRC 校验,可靠性更高 |
| parted初始化命令 | 若磁盘无分区表,需执行mklabel msdos (可选,部分场景可省略) | 必须执行mklabel gpt 明确创建 GPT 分区表 |
| mkpart子命令差异 | 需指定分区类型 (primary/extended),无"分区名称"参数 | 支持自定义分区名称 (如mkpart usersdata),无"分区类型"限制 |
| 非交互模式命令差异 | parted /dev/vdb mkpart primary xfs 2048s 1000MB | parted /dev/vdb mkpart usersdata xfs 2048s 1000MB |
1.9删除分区
(1)指定包含要删除分区的磁盘
如:parted /dev/vda

(2)指定要删除的分区编号
print命令列出分区编号
如:

(3)删除分区
如:rm 编号

(4)验证是否删除:(可选)
再次输入print命令,观察分区情况
(5)退出parted

1.10创建文件系统
分区完成后,需要向其中添加文件系统;
RHEL支持多种文件系统,其中常用类型是XFS和ext4;
RHEL安装程序Anaconda默认使用XFS;
|------------|-------------------------|---------------------|
| 特性 | XFS | ext4 |
| 红帽默认性 | RHEL 安装程序 Anaconda 默认使用 | 传统主流,兼容多数 Linux 发行版 |
| 性能侧重 | 高吞吐量、大文件 / 大存储优化 | 稳定性、兼容性优先 |
| 文件大小限制 | 理论最大 16EiB(艾字节) | 理论最大 16TiB(太字节) |
| 日志机制 | 元数据 + 数据日志(可靠性高) | 元数据日志(默认) |
| 典型场景 | 服务器存储、大数据业务 | 通用存储、传统业务系统 |
创建XFS文件系统
mkfs -t 文件类型(mkfs -t xfs)
或
mkfs.文件类型(mkfs.xfs)
(1)在物理磁盘上创建
mkfs -t xfs \
/dev/vdb
(2)在逻辑卷中创建
mkfs -t xfs \
/dev/vg_name/lv_name
如:mkfs.xfs /dev/vdb1

1.11手动挂载文件系统(RH124------11)
手动挂载也可用于验证,但当系统重启时,挂载会丢失;
使用mount命令进行挂载;
如:mount /dev/sdb1 /mnt
筛选出与磁盘设备相关的挂载信息:
如:mount | grep vda

1.12持久挂载文件系统
编辑/etc/fstab文件,实现系统在启动时挂载文件系统;
/etc/fstab文件每行有6个字段:
设备标识:
分区名(如 /dev/vda1)或 UUID(更可靠,避免设备名变化问题);
挂载点:
文件系统要挂载到的目录;
文件系统类型:
如 xfs、ext4、vfat 等;
挂载选项:
如 defaults(包含 rw、relatime 等常用选项)、自定义权限 / 兼容选项;
dump 标志:
0 表示不备份,1 表示备份(现代很少用 dump 工具,一般填 0);
fsck 检查顺序:
0 表示不检查,1 表示优先检查(根目录推荐),2 表示次优先检查(ext4 等文件系统用)。
如:cat /dev/fstab

解释:(以第一行为例)
设备标识:
/boot 分区的 UUID(通过 blkid /dev/vda3 可查看,UUID 比 /dev/vda3 更可靠,避免设备名变化导致挂载失败);
挂载点:
/boot(系统启动文件存储目录,如内核、grub 配置);
文件系统:
xfs(红帽默认高性能文件系统);
挂载选项:
defaults(包含 rw(可读写)、relatime(相对时间戳)等常用选项);
dump 标志:
0(不使用 dump 工具备份);
fsck 检查顺序:
0(因为 xfs 文件系统不依赖 fsck 检查,红帽规范中 xfs 填 0)。
挂载步骤:
(1)使用lsblk -fs命令,扫描连接到计算机的块设备并检索文件系统UUID
如:

(2)使用UUID或块设备进行挂载(详见RH124------11)
mount UUID="****" /mnt/data(挂载点)
或
mount 设备文件路径 挂载点目录;
如:
mount /dev/vdb1 /mnt/data
(3)在配置文件/etc/fstab修改后,要重启服务器或重新登录,让systemd注册新配置
systemctl daemon-reload
注:
重启操作系统前一定要验证挂载没有错误。
2.管理交换空间
2.1SWAP(交换分区)
swap是Linux系统中由内核内存管理子系统控制的磁盘区域;
swap与物理内存(RAM)共同构成虚拟内存。
当物理内存不足时,内核会搜索RAM,寻找已经分配给进程但空闲的内存页并"写入"SWAP,从而释放物理内存;
当某个进程要访问磁盘上的内存页 时,内核会从SWAP中"换回" 所需的内存页,重新找另一个空闲的内存页"写入"SWAP来代替;
SWAP是临时缓解内存压力的手段,但因依赖磁盘读写(位于磁盘上,速度远低RAM),不能作为长期内存不足的解决方案。
流程:

2.2SWAP的大小
SWAP大小需根据物理内存(RAM)容量和业务场景规划,红帽官方建议参考:
|-------------------|---------------------------|-------------------------------------|
| 物理内存(RAM) | 推荐 SWAP 大小(无休眠需求) | 推荐 SWAP 大小(有休眠需求,需容纳全部 RAM) |
| ≤ 2GB | 等于 RAM 容量 | 至少 2 倍于 RAM 容量 |
| 2GB ~ 8GB | RAM 容量的 50% | 至少等于 RAM 容量 |
| 8GB ~ 64GB | 4GB(或按需调整) | 至少等于 RAM 容量 |
| >64GB | 按需调整(一般 4GB~8GB) | 至少等于 RAM 容量 |
2.3创建SWAP分区
使用parted命令创建所需大小的分区,将其文件系统类型设置为linux-swap;
(1)进入parted交互模式
如:parted /dev/vdb

(2)创建分区表(执行一次即可)
如:mklabel msdos/gpt
(3)创建SWAP分区
如:mkpart myswap linux-swap
创建500MB的SWAP分区

文件类型为linux-swap
(4)验证分区是否创建
如:print

(5)退出parted
quit
(6)刷新设备
udevadm settle
完整流程:

2.4格式化SWAP分区
mkswap命令会格式化swap分区;
mkswap会在分区开头写入单个数据块,将分区的其他部分保留为未格式化,这样内核就可以用其来存储内存页;
如:mkswap /dev/vdb2

2.5激活SWAP分区
完整流程:

(1)临时激活
使用swapon命令激活已经格式化的swap分区;
使用swapon -a来激活/etc/fstab文件中所有的swap分区;
如:swapon /dev/vdb2

(2)永久激活(开机自动挂载)
编辑/etc/fstab文件,添加SWAP分区条目;
如:
echo "UUID=******** none swap defaults 0 0" >> /etc/fstab
解释:
****UUID=****:****SWAP 分区的 UUID(lsblk --fs /dev/vdb1查看);
****none:****SWAP 无挂载点(与普通文件系统不同);
****swap:****文件系统类型;
****defaults:****默认挂载选项;
最后两个0:dump 和fsck标志(SWAP 无需备份和文件系统检查,均填0)。
如:
查看UUID:
lsblk --fs /dev/vdb2

添加条目:
echo "UUID=******** none swap defaults 0 0"

更新systemd进程,应用新配置文件

激活分区:swapon -a
(3)验证激活状态
swapon --show

或
cat /proc/swaps

2.6停用SWAP分区
swapoff命令;
如:
swapoff /dev/vdb2

验证是否被停用
如:swapon --show

已经被停用;
2.7设置SWAP分区优先级
系统默认按顺序使用swap,即内核先使用第一个已激活swap,直至其空间已满,然后开始使用第二个swap;
可以为每个swap定义一个优先级,强制按顺序使用swap;
当系统有多个SWAP分区/文件时,可通过priority参数设置优先级(数值越大,优先级越高)。
完整流程:

(1)临时设置
如:
swapon --priority=100 /dev/vda1
(2)永久设置
在/etc/fstab挂载选项中添加pri=数值(默认是-2);
如:
UUID=***** none swap defaults,pri=100 0 0
(3)显示优先级
swapon --show
如:

注:
当SWAP分区有相同优先级时,内核会以轮循方式向其写入。
3.总结创建GPT/MBR分区(以parted交互模式为例)
3.1查看磁盘情况(用户身份)
lsblk

3.2创建分区表 (仅在未使用的磁盘中,用/dev/vdb为例)
parted /dev/vdb
mklabel gpt/msdos
3.3创建分区
mkpart
分区名称(如swap);
文件系统类型(如linux-swap);
分区开始的扇区(如100MiB);
分区结束的扇区(如200MB);

3.4验证创建完成

3.5运行udevadm settle命令,创建设备文件(root身份)
udevadm settle

注:
创建多个分区时,需要注意扇区开始与结束的区域:
如:
A分区扇区区域200MB-300MB;
创建B分区时应该由300MB开始,如300MB-400MB
大小即:结束值-开始值
如400-300=100MB