凌峰创科服务平台

CentOS 6.5服务器分区如何规划?

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

CentOS 6.5服务器分区如何规划?-图1
(图片来源网络,侵删)

分区前的核心原则

在动手分区前,请务必理解以下几个核心原则:

  1. 数据与系统分离:这是最重要的一条原则,将操作系统、应用程序(代码)和用户数据(如数据库文件、上传的文件)分别放在不同的分区,这样做的好处是:

    • 安全:当系统分区(如 )损坏或需要重装时,用户数据分区(如 /data)通常可以保留。
    • 性能:可以根据不同分区的用途,选择不同的挂载选项(如 noatime)和文件系统参数,优化 I/O 性能。
    • 管理:可以单独对某个分区进行扩容、备份或设置不同的权限。
  2. 考虑未来增长:预估服务器未来的使用情况,如果这是一个 Web 服务器,要预估未来网站文件和数据库的增长量,为 /data/var 等可能增长的分区预留足够的空间。

  3. 性能考虑

    CentOS 6.5服务器分区如何规划?-图2
    (图片来源网络,侵删)
    • I/O 密集型应用:对于数据库等对 I/O 性能要求极高的应用,可以考虑将数据盘(如 /var/lib/mysql)单独分区,并放置在性能更好的物理磁盘或 RAID 组上。
    • 日志文件:日志文件(通常在 /var/log)会持续增长,应将其放在独立的分区上,防止日志填满整个磁盘导致系统崩溃。
  4. 备份!备份!备份!任何分区操作都有数据丢失的风险! 在进行分区操作前,请务必备份服务器上所有重要的数据。


推荐的分区方案(通用服务器)

这是一个非常经典和通用的分区方案,适用于大多数 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)进行分区的详细步骤。

假设场景:

CentOS 6.5服务器分区如何规划?-图3
(图片来源网络,侵删)
  • 服务器有一块新硬盘 /dev/sdb,容量为 500 GB。
  • 我们要创建以下分区:
    • /dev/sdb1 -> /var (100 GB)
    • /dev/sdb2 -> /data (300 GB)
    • /dev/sdb3 -> /backup (剩余空间)

步骤 1:进入 fdisk 交互模式

fdisk /dev/sdb

步骤 2:创建新分区

  1. 创建 /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  Linux
    • Id 83 表示 Linux 原始分区类型,对于 ext4 文件系统这是正确的。
  2. 创建 /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
  3. 创建 /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:创建挂载点并挂载

  1. 创建挂载点目录

    mkdir -p /var /data /backup
    • -p 选项可以一次性创建多级目录,如果父目录不存在也会一并创建。
  2. 挂载分区

    # 挂载 /var
    mount /dev/sdb1 /var
    # 挂载 /data
    mount /dev/sdb2 /data
    # 挂载 /backup
    mount /dev/sdb3 /backup
  3. 验证挂载 使用 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 文件。

  1. 备份 fstab 文件

    cp /etc/fstab /etc/fstab.bak
  2. 编辑 fstab 文件

    使用 vimnano 编辑 /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 00 2,根分区 必须是 1 1
  3. 验证 fstab 语法 在重启前,使用以下命令检查 fstab 语法是否正确,这可以防止因配置错误导致系统无法启动。

    mount -a
    • 如果此命令没有任何输出,说明语法正确。
    • 如果有报错,请根据错误信息修正 /etc/fstab 文件。

重启服务器,新分区就会自动挂载到指定位置了。


LVM(逻辑卷管理)方案(更灵活的选择)

对于需要动态调整分区大小的场景,强烈推荐使用 LVM。

LVM 的优势:

  • 动态调整大小:可以在不丢失数据的情况下在线扩展或缩小分区大小。
  • 创建快照:可以创建文件系统的“快照”,非常适合备份。
  • 灵活的存储池:可以将多个物理磁盘组合成一个存储池,然后从池中划分逻辑卷。

LVM 分区方案示例(基于同一块 500GB 硬盘 /dev/sdb

  1. 创建物理卷 将整个 /dev/sdb 硬盘作为一个物理卷。

    pvcreate /dev/sdb
  2. 创建卷组 将物理卷 /dev/sdb 组成一个名为 vg_data 的卷组。

    vgcreate vg_data /dev/sdb
  3. 创建逻辑卷 从卷组 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
  4. 格式化、挂载和设置开机自动挂载 这一步与普通分区完全相同,只是设备路径变成了 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。

  1. 检查卷组是否有足够空间

    vgs
    # 或者 vgdisplay vg_data

    VG Free 不足,需要先添加新的物理磁盘到卷组中。

  2. 扩展逻辑卷

    # 将 lv_data 从 300G 扩展到 400G
    lvextend -L +100G /dev/vg_data/lv_data
  3. 扩展文件系统 文件系统需要被“告知”它所在的分区变大了。

    # 对于 ext4 文件系统
    resize2fs /dev/vg_data/lv_data
  4. 验证

    df -hT /data
    # 你会看到 /data 的大小已经变成了 400G

特性 传统分区 LVM (逻辑卷管理)
灵活性 差,调整大小需要删除重建分区 高,可在线动态调整大小
管理 简单直观 需要理解 PV/VG/LV 概念
快照 不支持 支持,非常方便备份
多磁盘管理 管理多个独立分区复杂 可以轻松将多块磁盘整合为一个存储池
适用场景 分区大小固定明确,不需要动态调整 数据量增长不确定,需要高灵活性和快照功能

对于生产环境,尤其是服务器,强烈推荐使用 LVM,它提供了无与伦比的灵活性,是现代 Linux 存储管理的标准做法,对于新手,可以先从传统分区开始,理解基本原理后再学习 LVM。

分享:
扫描分享到社交APP
上一篇
下一篇