Linux 磁盘管理与分区配置
Linux 磁盘管理与分区配置
一、磁盘类型与设备命名
在 Linux 系统中,不同类型的磁盘会被赋予不同的设备名称,便于系统识别和管理。常见磁盘类型及命名规则如下:
磁盘类型 | 设备命名前缀 | 命名规则 | 示例 |
SATA/SCSI/SAS | sd | 按发现顺序命名,第一块为 sda,第二块为 sdb,分区后缀数字(如 sda1) | 第一块硬盘的第一个分区:/dev/sda1 |
NVMe(高速固态硬盘) | nvme | 格式为 nvmeXnYpZ:- X:通道号(起始为 0)- Y:硬盘序号(起始为 1)- Z:分区序号(起始为 1) | 通道 0 第一块硬盘的第一个分区:/dev/nvme0n1p1 |
virtio-block(虚拟化环境) | vd | 类似 sd 规则,第一块为 vda,分区后缀数字(如 vda1) | 虚拟硬盘的第一个分区:/dev/vda1 |
二、分区方案:MBR 与 GPT
磁盘分区需要遵循特定的分区表格式,常见的两种方案为 MBR 和 GPT,两者在功能和限制上有显著差异。
1. MBR(Master Boot Record,主引导记录)
MBR 是传统的分区表格式,广泛用于早期计算机系统,但其存在明显限制:
核心特点:
- 容量限制:最大支持 2TB 的磁盘和单个分区(超过 2TB 的部分无法识别)。
- 分区数量限制:最多支持 4 个主分区;若需更多分区,需创建 1 个扩展分区,再在扩展分区内划分逻辑分区(总分区数最多 15 个)。
- 结构组成:位于磁盘第一个扇区(512 字节),包含:
- 主引导代码(446 字节):负责启动系统。
- 分区表(64 字节):记录 4 个主分区的信息(每个分区占 16 字节)。
- 结束标志(2 字节):固定为 0x55AA。
适用场景:
- 磁盘容量 ≤ 2TB 的老旧系统或兼容性需求场景。
2. GPT(GUID Partition Table,全局唯一标识分区表)
GPT 是现代分区表格式,解决了 MBR 的限制,适用于大容量磁盘和新系统:
核心优势:
- 容量支持:最大支持 8ZiB(约 800 万 TB)的磁盘和分区,适配现代大容量存储设备。
- 分区数量:默认支持 128 个主分区(无扩展分区 / 逻辑分区概念),满足多分区需求。
- 数据安全:分区表在磁盘首尾各保存一份(主分区表 + 备份分区表),某一份损坏可通过另一份恢复。
- 兼容性:需配合 UEFI 固件使用(传统 BIOS 也可支持,但功能受限)。
适用场景:
- 磁盘容量 > 2TB 的系统、UEFI 启动的现代计算机、需要多分区的服务器环境。
3. 单位换算说明
磁盘容量单位需注意 “十进制” 与 “二进制” 的区别:
- 十进制(厂商标注):1KB=1000B,1MB=1000KB,1GB=1000MB,以此类推。
- 二进制(系统识别):1KiB=1024B,1MiB=1024KiB,1GiB=1024MiB,以此类推。
(Linux 中 parted 工具默认使用二进制单位 MiB/GiB,需注意与十进制单位的差异。)
三、分区创建工具与方法
1. fdisk 工具(适用于 MBR 分区)
fdisk 是创建和管理 MBR 分区的经典工具,支持交互式操作:
操作步骤:
- 查看磁盘信息:确认目标磁盘设备名(如 /dev/sdb)
fdisk -l # 列出所有磁盘及分区信息
- 进入交互界面:
fdisk /dev/sdb # 对 /dev/sdb 磁盘进行分区
- 常用交互命令(输入 m 可查看帮助):
- n:新建分区(选择 p 主分区或 e 扩展分区,扩展分区内可创建逻辑分区)。
- d:删除分区。
- t:修改分区类型 ID(如标记为 Linux 分区、swap 分区等)。
- p:查看当前分区表。
- w:保存分区表并退出(生效分区配置)。
- q:不保存退出。
- 刷新内核识别:分区后需通知内核更新分区表
partprobe /dev/sdb # 刷新 /dev/sdb 的分区信息
2. parted 工具(支持 MBR 和 GPT)
parted 是更强大的分区工具,支持 MBR 和 GPT 分区表,适合大容量磁盘:
交互式创建 MBR 分区:
parted /dev/sdb # 进入 /dev/sdb 的交互界面(parted) mklabel msdos # 指定 MBR 分区表(msdos 即 MBR)(parted) unit MiB # 设置单位为 MiB(二进制)(parted) mkpart # 新建分区Partition type? primary/extended? primary # 主分区File system type? [ext2]? xfs # 标记文件系统(仅标记,未格式化)Start? 1 # 起始位置(从 1MiB 开始,跳过引导区)End? 501 # 结束位置(分区大小为 500MiB)(parted) p # 查看分区表(parted) quit # 退出,自动保存udevadm settle # 同步分区表到系统
交互式创建 GPT 分区:
parted /dev/sdb(parted) mklabel gpt # 指定 GPT 分区表(parted) unit MiB # 设置单位为 MiB(parted) mkpartPartition name? []? data1 # 分区名称(可选)File system type? [ext2]? ext4 # 标记文件系统类型Start? 1 # 起始位置End? 100 # 结束位置(分区大小 99MiB)(parted) p(parted) quitudevadm settle
无交互模式创建分区:
适合脚本自动化操作:
# 创建 MBR 分区parted /dev/sdb mklabel msdosparted /dev/sdb mkpart primary xfs 1MiB 501MiB# 创建 GPT 分区parted /dev/sdb mklabel gptparted /dev/sdb mkpart data1 ext4 1MiB 100MiB
四、分区格式化与挂载配置
分区创建后需格式化文件系统并配置挂载,才能实际存储数据。
1. 格式化文件系统
使用 mkfs 工具格式化分区(支持多种文件系统,如 ext4、XFS 等):
# 格式化分区为 ext4(Linux 常用)mkfs.ext4 /dev/sdb1# 格式化分区为 XFS(CentOS 7+ 默认,适合大文件)mkfs.xfs /dev/sdb1# 查看支持的文件系统:按 Tab 键补全mkfs. # 输入 mkfs. 后按 Tab 键,列出所有支持的文件系统工具
2. 创建挂载点
挂载点是访问分区的目录入口:
mkdir /data # 创建 /data 作为挂载点
3. 配置自动挂载(/etc/fstab)
通过 /etc/fstab 配置分区开机自动挂载,需使用分区的 UUID(唯一标识,避免设备名变动影响挂载):
步骤:
- 查看分区 UUID:
blkid /dev/sdb1 # 输出格式:/dev/sdb1: UUID="xxx" TYPE="ext4"
- 编辑 /etc/fstab:
vim /etc/fstab
添加以下内容(格式:UUID=xxx 挂载点 文件系统类型 挂载参数 0 0):
UUID=12345678-1234-5678-1234-567812345678 /data ext4 defaults 0 0
- 挂载参数 defaults:包含 rw(读写)、suid、dev、exec、auto 等默认权限。
- 最后两个 0:表示不启用 dump 备份和 fsck 磁盘检查(系统分区通常设为 1 1)。
- 验证挂载配置:
mount -a # 加载 /etc/fstab 中的所有挂载配置df -Th # 查看挂载状态(确认 /data 已挂载)
五、交换分区管理
交换分区(Swap Partition)是 Linux 系统的虚拟内存,当物理内存不足时,系统会将部分不活跃数据写入交换分区,缓解内存压力。
1. 交换分区的作用与特点
- 核心作用:扩展虚拟内存,防止物理内存耗尽导致的进程崩溃(OOM,Out Of Memory)。
- 性能特性:交换分区位于磁盘,速度远低于物理内存,仅作为内存不足时的应急机制。
- 适用场景:所有 Linux 系统建议配置(服务器需根据内存需求调整大小,嵌入式设备可省略)。
2. 交换分区大小建议
物理内存容量 | 建议交换分区大小(普通场景) | 建议交换分区大小(需休眠功能) |
≤ 2GB | 物理内存的 2 倍 | 物理内存的 3 倍 |
2GB ~ 8GB | 等于物理内存容量 | 物理内存 + 2GB |
8GB ~ 64GB | 4GB ~ 8GB | 物理内存的 1.5 倍 |
> 64GB | 根据实际需求(通常 4GB ~ 16GB) | 不建议使用休眠功能 |
3. 交换分区的创建与配置
步骤 1:创建交换分区(使用 parted)
parted /dev/sdb # 进入目标磁盘(parted) mkpart # 新建分区Partition name? []? swap1File system type? [ext2]? linux-swap # 标记为交换分区类型Start? 101MiB # 起始位置(接在已有分区之后)End? 111MiB # 结束位置(大小为 10MiB)(parted) quitudevadm settle # 同步分区表
步骤 2:格式化交换分区
mkswap /dev/sdb2 # 格式化 /dev/sdb2 为交换分区(自动生成 UUID)
步骤 3:配置自动挂载(/etc/fstab)
交换分区无需挂载点,直接配置类型为 swap:
- 查看交换分区 UUID:
blkid /dev/sdb2 # 获取 UUID(格式:UUID="xxx" TYPE="swap")
- 编辑 /etc/fstab:
vim /etc/fstab
添加内容:
UUID=87654321-8765-4321-8765-432187654321 swap swap defaults 0 0
步骤 4:启用交换分区
swapon -a # 加载 /etc/fstab 中的所有交换分区free -m # 查看内存和交换分区使用情况(Swap 行显示已启用)
4. 交换分区管理命令
命令 | 功能说明 |
free -m | 查看物理内存和交换分区的使用情况(MB 单位) |
swapon -a | 启用 /etc/fstab 中所有交换分区 |
swapon /dev/sdb2 | 单独启用指定交换分区 |
swapoff -a | 关闭所有交换分区 |
swapoff /dev/sdb2 | 单独关闭指定交换分区 |
swapon -s | 查看所有已启用的交换分区信息 |
5. 交换分区 vs 交换文件
除交换分区外,Linux 还支持通过交换文件实现虚拟内存:
- 交换分区:独立分区,性能略优,适合固定需求场景。
- 交换文件:在现有文件系统中创建文件作为交换空间,灵活易调整(无需重新分区),适合临时扩展内存。
(创建命令:dd if=/dev/zero of=/swapfile bs=1G count=10 → mkswap /swapfile → swapon /swapfile)。
六、总结
- 磁盘类型:根据硬件类型(SATA/NVMe/virtio)识别设备命名,便于定位目标磁盘。
- 分区方案:MBR 适用于小容量磁盘,GPT 适用于大容量和现代系统,需根据磁盘大小选择。
- 分区工具:fdisk 适合 MBR 分区,parted 支持 MBR 和 GPT,功能更全面。
- 挂载配置:通过 /etc/fstab 实现分区开机自动挂载,使用 UUID 确保稳定性。
- 交换分区:作为虚拟内存补充,需根据物理内存大小合理配置,保障系统在内存压力下的稳定性。
掌握磁盘分区与管理是 Linux 系统运维的基础,合理规划分区结构和交换空间,可显著提升系统的稳定性和存储效率。