在企业业务对服务器稳定性要求持续攀升的当下,Linux 系统凭借其卓越的可靠性与出色性能,已成为部署关键服务的首选平台。然而,无论操作系统本身多么强大,其根基始终在于硬盘——更精准地说,在于硬盘的分区方案。今天,我们将深入探讨 CentOS Linux 环境下几款主流分区工具的具体用法,并系统梳理硬盘的基础知识,涵盖接口类型与分区模式,助你在实际操作中更加得心应手。
一、硬盘的接口类型
分区操作本质上是对硬盘的底层管理,因此了解硬盘接口类型至关重要。目前,硬盘接口主要分为并行接口与串行接口两大类。当前服务器与个人电脑已基本全面采用串行接口。
并行接口包含 IDE 与 SCSI 两种,其局限性在于电信号传输过程中易受干扰。接口速率对比如下:
- IDE:133MB/s
- SCSI:640MB/s
串行接口的主流类型包括 SATA、SAS 及 USB。其中,SATA 接口在服务器与个人电脑中应用最为广泛。
- SATA:6Gbps
- SAS:6Gbps
- USB:480MB/s
了解接口之后,我们再来审视分区模式。当前主流分区模式主要有两种:MBR 与 GPT。
MBR 模式(主引导记录)诞生于 1982 年,采用 32 位表示扇区数,因此单个分区容量上限为 2TB。该模式最多支持 4 个主分区,或 3 个主分区加 1 个扩展分区(扩展分区内可进一步划分多个逻辑分区)。硬盘的 0 磁道 0 扇区(512 字节)专门用于存储分区信息:前 446 字节存放引导加载程序,中间 64 字节存放分区表(每个分区占用 16 字节),最后 2 字节则存放 55AA 标识以确认硬盘模式。
GPT 模式(GUID 分区表)则先进许多:最多支持 128 个分区,采用 64 位寻址,最大支持容量达 8ZB(512 字节/块)或 64ZB(4096 字节/块)。每个磁盘与分区均使用 128 位 UUID 进行标识,且分区表在磁盘头部与尾部各存一份,并配备 CRC 校验,安全性显著提升。需要注意的是,使用 GPT 模式启动操作系统需要 UEFI 固件支持。
二、Linux 下 3 款分区工具详解
理论铺垫完毕,接下来直接进入实操环节。下面介绍三款 CentOS 环境下常用的分区工具:经典稳定的 fdisk、专为 GPT 场景设计的 gdisk,以及功能全面的 parted。前两者更侧重于 MBR 场景,而 parted 则同时兼容 MBR 与 GPT。
老当益壮 fdisk
fdisk 是 Linux 中资历最深的分区工具之一,以简洁直观著称。它主要面向 MBR 模式(无法操作超过 2TB 的磁盘),若需对 GPT 硬盘进行分区,可换用其“兄弟”工具 gdisk,用法几乎一致。本文以 fdisk 为例进行讲解。
基本用法:执行 fdisk /dev/sdb 进入交互界面,执行 fdisk -l [-u] [device...] 可查看硬盘及分区详情。
常用子命令:
- m – 显示帮助信息列表
- p – 显示当前分区列表
- l – 查看可用的分区类型
- t – 修改分区类型
- n – 创建新的分区
- d – 删除指定分区
- w – 保存更改并退出(注意:所有操作仅在内存中进行,只有输入 w 后才会真正写入硬盘)
- q – 放弃更改并退出(后悔药)
以下是一个实际操作案例,展示如何使用 fdisk 创建分区并将其类型修改为 swap:
[root@TianRandai ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
强大的分区工具 parted
parted 是一个“急性子”——它的所有操作均即时生效,不会像 fdisk 那样先缓存再统一写入。因此,使用 parted 时必须格外谨慎,尤其是在操作正在使用的硬盘时,一个命令下去可能就难以挽回。不过,它的强大之处在于同时支持 MBR 与 GPT,并且可以在非交互模式下通过脚本进行批量操作。
常用语法:
parted /dev/sdb mklabel gpt|msdos– 为磁盘指定分区表格式parted /dev/sdb print– 显示磁盘详细信息parted /dev/sdb mkpart primary 0 200– 创建主分区,大小默认以 MB 为单位parted /dev/sdb rm 1– 删除分区 1parted -l– 显示所有磁盘的信息
来看一个使用 parted 操作 GPT 磁盘的完整示例:
[root@TianRandai ~]# parted /dev/sdb mklabel gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes Information: You may need to update /etc/fstab. [root@TianRandai ~]# parted /dev/sdb mkpart primary 0 2G Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? i Information: You may need to update /etc/fstab. [root@TianRandai ~]# parted /dev/sdb print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 2000MB 2000MB primary [root@TianRandai ~]# parted /dev/sdb rm 1 Information: You may need to update /etc/fstab. [root@TianRandai ~]# parted /dev/sdb print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags
分区操作完成后,下一步便是格式化文件系统。常见的格式化命令为 mkfs.文件系统类型,例如 mkfs.ext4 /dev/sdb1。格式化之后,还需执行挂载操作才能正常使用。
先来查看系统支持哪些文件系统类型:
[root@TianRandai ~]# mkfs mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
将 /dev/sdb1 格式化为 ext4 并挂载到指定目录:
[root@TianRandai ~]# mkfs.ext4 /dev/sdb1 [root@TianRandai ~]# mkdir /mnt/disk1 [root@TianRandai ~]# mount /dev/sdb1 /mnt/disk1 [root@TianRandai ~]# df -h Filesystem Size Used A vail Use% Mounted on /dev/sda2 10G 4.5G 5.5G 45% / devtmpfs 898M 0 898M 0% /dev tmpfs 912M 88K 912M 1% /dev/shm tmpfs 912M 9.0M 903M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 169M 846M 17% /boot tmpfs 183M 20K 183M 1% /run/user/0 /dev/sdb1 1.9G 5.7M 1.7G 1% /mnt/disk1
若分区需用作 swap 交换空间,则应使用 mkswap 进行格式化,随后通过 swapon 启用。具体操作步骤如下:
[root@TianRandai ~]# free -h
total used free shared buff/cache a vailable
Mem: 1.8G 483M 429M 10M 911M 1.1G
Swap: 2.0G 0B 2.0G
[root@TianRandai ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 1953104 KiB
no label, UUID=5d9a150e-c247-4c7f-a4be-273a72bd3b5a
[root@TianRandai ~]# swapon /dev/sdb1
[root@TianRandai ~]# free -h
total used free shared buff/cache a vailable
Mem: 1.8G 484M 427M 10M 911M 1.1G
Swap: 3.9G 0B 3.9G
最后补充一点:若希望分区在开机时自动挂载,需将挂载信息写入 /etc/fstab 配置文件。关于 fstab 的具体配置细节,我们将在后续文章中专门展开讲解,此处先留一个悬念。
