CentOS 6.5 是一个比较老的系统版本,但其分区的基本原则和思路对于现代 Linux 系统(如 CentOS 7/8, RHEL 7/8, Rocky Linux, AlmaLinux 等)仍然非常适用,只是具体的工具(如 parted 替代了 fdisk)和默认的文件系统(如 XFS 替代了 ext4)有所不同。

分区前的核心原则
在动手分区前,请务必理解以下几个核心原则:
-
数据与系统分离:这是最重要的一条原则,将操作系统、应用程序(代码)和用户数据(如数据库文件、上传的文件)分别放在不同的分区,这样做的好处是:
- 安全:当系统分区(如 )损坏或需要重装时,用户数据分区(如
/data)通常可以保留。 - 性能:可以根据不同分区的用途,选择不同的挂载选项(如
noatime)和文件系统参数,优化 I/O 性能。 - 管理:可以单独对某个分区进行扩容、备份或设置不同的权限。
- 安全:当系统分区(如 )损坏或需要重装时,用户数据分区(如
-
考虑未来增长:预估服务器未来的使用情况,如果这是一个 Web 服务器,要预估未来网站文件和数据库的增长量,为
/data或/var等可能增长的分区预留足够的空间。 -
性能考虑:
(图片来源网络,侵删)- I/O 密集型应用:对于数据库等对 I/O 性能要求极高的应用,可以考虑将数据盘(如
/var/lib/mysql)单独分区,并放置在性能更好的物理磁盘或 RAID 组上。 - 日志文件:日志文件(通常在
/var/log)会持续增长,应将其放在独立的分区上,防止日志填满整个磁盘导致系统崩溃。
- I/O 密集型应用:对于数据库等对 I/O 性能要求极高的应用,可以考虑将数据盘(如
-
备份!备份!备份!:任何分区操作都有数据丢失的风险! 在进行分区操作前,请务必备份服务器上所有重要的数据。
推荐的分区方案(通用服务器)
这是一个非常经典和通用的分区方案,适用于大多数 Web 服务器、应用服务器等场景。
| 挂载点 | 文件系统 | 大小建议 | 用途说明 |
|---|---|---|---|
/boot |
ext4 |
200 - 500 MB | 存放内核、initrd 和引导加载程序,独立出来可以防止根文件系统损坏导致无法启动。 |
| (根分区) | ext4 |
15 - 30 GB | 存放操作系统核心文件和基本应用程序,对于现代系统,这个大小足够了。 |
/home |
ext4 |
剩余空间或预估大小 | 存放所有用户的主目录,如果服务器上没有多个普通用户,这个分区可以省略或合并到 。 |
/var |
ext4 |
剩余空间或 20-50 GB+ | 存放日志文件、邮件队列、Web 服务器文件等。强烈建议独立出来,因为这里的数据量增长最快。 |
/tmp |
ext4 |
1 - 5 GB | 存放临时文件,设置为 noexec, nosuid 可以提高安全性,防止在 /tmp 中执行恶意脚本。 |
/swap |
swap |
物理内存的 1-2 倍 | 交换分区,当物理内存不足时,系统会使用这部分空间,对于内存较大的服务器(如 >16GB),可以设置为与内存大小相等或略小。 |
为什么这样分?
/boot独立:确保即使根文件系统出现严重问题,系统依然可以引导。/var独立:防止日志、缓存或网站文件把根分区撑爆,导致系统服务异常。/tmp独立:/tmp目录下的文件可能会被自动清理,独立出来可以避免影响根文件系统,并且可以方便地设置特殊的安全挂载选项。/home独立:方便管理用户数据,在重装系统时可以保留用户目录。
具体分区步骤(使用 fdisk 工具)
在 CentOS 6.5 中,fdisk 是最常用的分区工具,以下是基于一块新硬盘(/dev/sdb)进行分区的详细步骤。
假设场景:

- 服务器有一块新硬盘
/dev/sdb,容量为 500 GB。 - 我们要创建以下分区:
/dev/sdb1->/var(100 GB)/dev/sdb2->/data(300 GB)/dev/sdb3->/backup(剩余空间)
步骤 1:进入 fdisk 交互模式
fdisk /dev/sdb
步骤 2:创建新分区
-
创建
/var分区 (100GB)- 输入
n创建新分区。 - 输入
p选择主分区。 - 输入
1作为分区号。 - 按
Enter接受默认的起始扇区。 - 输入
+100G指定分区大小为 100GB。
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-1048575999, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999): +100G Command (m for help): p Disk /dev/sdb: 500.1 GB, 500107862025 bytes ... Device Boot Start End Blocks Id System /dev/sdb1 2048 209715455 104856704 83 LinuxId 83表示 Linux 原始分区类型,对于 ext4 文件系统这是正确的。
- 输入
-
创建
/data分区 (300GB)- 再次输入
n。 - 输入
p。 - 输入
2作为分区号。 - 按
Enter接受默认的起始扇区。 - 输入
+300G指定分区大小为 300GB。
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (209715456-1048575999, default 209715456): Using default value 209715456 Last sector, +sectors or +size{K,M,G} (209715456-1048575999, default 1048575999): +300G Command (m for help): p ... /dev/sdb2 209715456 838860799 314572672 83 Linux - 再次输入
-
创建
/backup分区 (剩余空间)- 输入
n。 - 输入
p。 - 输入
3作为分区号。 - 两次按
Enter,接受默认的起始扇区和结束扇区,以使用剩余的所有空间。
Command (m for help): n ... Partition number (1-4, default 3): 3 First sector (838860800-1048575999, default 838860800): Using default value 838860800 Last sector, +sectors or +size{K,M,G} (838860800-1048575999, default 1048575999): Command (m for help): p ... /dev/sdb3 838860800 1048575999 104857600 83 Linux - 输入
步骤 3:保存并退出
- 输入
w保存分区表并退出,如果输入q,则所有更改将丢失。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
步骤 4:创建文件系统
分区创建完成后,Linux 还无法识别它们,需要为每个分区创建文件系统(格式化),我们使用 mkfs.ext4 命令。
# 格式化 /dev/sdb1 为 /var mkfs.ext4 /dev/sdb1 # 格式化 /dev/sdb2 为 /data mkfs.ext4 /dev/sdb2 # 格式化 /dev/sdb3 为 /backup mkfs.ext4 /dev/sdb3
执行过程中,系统会询问是否继续,输入 y 即可。
步骤 5:创建挂载点并挂载
-
创建挂载点目录
mkdir -p /var /data /backup
-p选项可以一次性创建多级目录,如果父目录不存在也会一并创建。
-
挂载分区
# 挂载 /var mount /dev/sdb1 /var # 挂载 /data mount /dev/sdb2 /data # 挂载 /backup mount /dev/sdb3 /backup
-
验证挂载 使用
df -hT命令查看已挂载的分区及其文件系统类型。[root@server ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 20G 3.1G 16G 17% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 ext4 191M 33M 148M 19% /boot /dev/sdb1 ext4 99G 24K 94G 1% /var <-- 成功挂载 /dev/sdb2 ext4 293G 48K 278G 1% /data <-- 成功挂载 /dev/sdb3 ext4 98G 48K 93G 1% /backup <-- 成功挂载
步骤 6:设置开机自动挂载(关键步骤!)
手动挂载在重启后会失效,为了让分区在系统重启后自动挂载,需要修改 /etc/fstab 文件。
-
备份
fstab文件cp /etc/fstab /etc/fstab.bak
-
编辑
fstab文件使用
vim或nano编辑/etc/fstab,在文件末尾添加以下四行:# 新增内容开始 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /var ext4 defaults 0 0 UUID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy /data ext4 defaults 0 0 UUID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz /backup ext4 defaults 0 0 # 新增内容结束
- 如何获取 UUID? 使用
blkid命令可以查看所有分区的 UUID。[root@server ~]# blkid /dev/sda1: UUID="a1b2c3d4-e5f6-..." TYPE="ext4" /dev/sda2: UUID="f6e5d4c3-b2a1-..." TYPE="ext4" /dev/sdb1: UUID="xxxxxxxx-xxxx-..." TYPE="ext4" <-- 复制这个 /dev/sdb2: UUID="yyyyyyyy-yyyy-..." TYPE="ext4" <-- 复制这个 /dev/sdb3: UUID="zzzzzzzz-zzzz-..." TYPE="ext4" <-- 复制这个
defaults:这是最常见的挂载选项,包含了rw, suid, dev, exec, auto, nouser, async。0 0:这是 dump 和 fsck 的检查顺序,对于数据分区,通常设为0 0或0 2,根分区 必须是1 1。
- 如何获取 UUID? 使用
-
验证
fstab语法 在重启前,使用以下命令检查fstab语法是否正确,这可以防止因配置错误导致系统无法启动。mount -a
- 如果此命令没有任何输出,说明语法正确。
- 如果有报错,请根据错误信息修正
/etc/fstab文件。
重启服务器,新分区就会自动挂载到指定位置了。
LVM(逻辑卷管理)方案(更灵活的选择)
对于需要动态调整分区大小的场景,强烈推荐使用 LVM。
LVM 的优势:
- 动态调整大小:可以在不丢失数据的情况下在线扩展或缩小分区大小。
- 创建快照:可以创建文件系统的“快照”,非常适合备份。
- 灵活的存储池:可以将多个物理磁盘组合成一个存储池,然后从池中划分逻辑卷。
LVM 分区方案示例(基于同一块 500GB 硬盘 /dev/sdb)
-
创建物理卷 将整个
/dev/sdb硬盘作为一个物理卷。pvcreate /dev/sdb
-
创建卷组 将物理卷
/dev/sdb组成一个名为vg_data的卷组。vgcreate vg_data /dev/sdb
-
创建逻辑卷 从卷组
vg_data中创建逻辑卷。# 创建一个 100GB 的逻辑卷,用于 /var lvcreate -L 100G -n lv_var vg_data # 创建一个 300GB 的逻辑卷,用于 /data lvcreate -L 300G -n lv_data vg_data # 使用剩余空间创建一个逻辑卷,用于 /backup lvcreate -l 100%FREE -n lv_backup vg_data
-L指定大小,-l指定百分比。- 创建后的逻辑卷设备路径为:
/dev/vg_data/lv_var,/dev/vg_data/lv_data,/dev/vg_data/lv_backup。
-
格式化、挂载和设置开机自动挂载 这一步与普通分区完全相同,只是设备路径变成了 LVM 的逻辑卷路径。
# 格式化 mkfs.ext4 /dev/vg_data/lv_var mkfs.ext4 /dev/vg_data/lv_data mkfs.ext4 /dev/vg_data/lv_backup # 创建挂载点并挂载 mkdir -p /var /data /backup mount /dev/vg_data/lv_var /var mount /dev/vg_data/lv_data /data mount /dev/vg_data/lv_backup /backup # 编辑 /etc/fstab # 使用 blkid 获取 LVM 逻辑卷的 UUID 并写入 # # UUID=... /var ext4 defaults 0 0 # UUID=... /data ext4 defaults 0 0 # UUID=... /backup ext4 defaults 0 0
如何扩展 LVM 逻辑卷?(LVM 的核心优势)
假设 /data 空间不足,需要从 300GB 扩展到 400GB。
-
检查卷组是否有足够空间
vgs # 或者 vgdisplay vg_data
VG Free不足,需要先添加新的物理磁盘到卷组中。 -
扩展逻辑卷
# 将 lv_data 从 300G 扩展到 400G lvextend -L +100G /dev/vg_data/lv_data
-
扩展文件系统 文件系统需要被“告知”它所在的分区变大了。
# 对于 ext4 文件系统 resize2fs /dev/vg_data/lv_data
-
验证
df -hT /data # 你会看到 /data 的大小已经变成了 400G
| 特性 | 传统分区 | LVM (逻辑卷管理) |
|---|---|---|
| 灵活性 | 差,调整大小需要删除重建分区 | 高,可在线动态调整大小 |
| 管理 | 简单直观 | 需要理解 PV/VG/LV 概念 |
| 快照 | 不支持 | 支持,非常方便备份 |
| 多磁盘管理 | 管理多个独立分区复杂 | 可以轻松将多块磁盘整合为一个存储池 |
| 适用场景 | 分区大小固定明确,不需要动态调整 | 数据量增长不确定,需要高灵活性和快照功能 |
对于生产环境,尤其是服务器,强烈推荐使用 LVM,它提供了无与伦比的灵活性,是现代 Linux 存储管理的标准做法,对于新手,可以先从传统分区开始,理解基本原理后再学习 LVM。
