12_磁盘管理实战:分区、LVM 与 RAID 配置指南

磁盘管理实战:分区、LVM 与 RAID 配置指南

对 Linux 运维来说,“磁盘” 是数据的 “容器”—— 从新服务器初始化分区,到业务增长后的磁盘扩容,再到企业级数据安全的 RAID 部署,磁盘管理贯穿整个运维生命周期。不少新手会卡在 “分区工具选错”“扩容数据丢失”“RAID 选型混乱” 等问题上。今天这篇文章,带你从 “基础分区” 入手,掌握 LVM 动态扩容解决 “磁盘满” 危机,再到 RAID 高可用部署保障数据安全,形成完整的磁盘管理知识链。

一、基础:磁盘分区工具实战(fdisk vs parted)

新硬盘接入 Linux 后,第一步要做 “分区”—— 就像给仓库划分 “货架区域”,方便后续管理。Linux 常用分区工具是fdiskparted,两者适用场景不同,需根据硬盘类型选择。

1. 先懂分区表:MBR vs GPT(决定用哪个工具)

分区前需先明确硬盘的 “分区表类型”,这是选择工具的关键:

分区表类型 支持最大硬盘容量 支持最大分区数 适用场景 推荐工具
MBR 2TB 4 个主分区(或 3 主 1 扩展) 小容量硬盘(≤2TB,如旧服务器) fdisk
GPT 18EB(理论值) 128 个主分区 大容量硬盘(>2TB,如新服务器) parted

实战判断:用

lsblk -f

查看硬盘分区表,若

TYPE

列显示

dos

是 MBR,

gpt

是 GPT;新硬盘默认无分区表,需手动创建。

2. 实战 1:用 fdisk 给 MBR 硬盘分区(以 2TB 以下新硬盘 /dev/sdb 为例)

fdisk轻量易用,适合 MBR 分区表,步骤如下:

步骤 1:查看硬盘状态(确认新硬盘)

lsblk  # 输出示例:/dev/sdb 1.8T 0 disk(无分区,容量1.8TB,符合MBR)

步骤 2:进入 fdisk 交互模式

sudo fdisk /dev/sdb  # 注意:是/dev/sdb(整个硬盘),不是分区

进入后终端提示Command (m for help):,输入对应命令操作。

步骤 3:创建分区(以创建 1 个 100GB 主分区为例)

  1. 输入n(new,新建分区);

  2. 选择分区类型:输入p(primary,主分区);

  3. 分区号:默认1(按回车);

  4. 起始扇区:默认2048(按回车,不建议修改);

  5. 结束扇区:输入+100G(表示分区大小 100GB,也可输具体扇区数);

  6. 输入p(print,查看分区表),会显示/dev/sdb1(新创建的分区)。

步骤 4:保存分区表并退出

  1. 输入w(write,保存并退出),若提示 “The partition table has been altered.”,说明保存成功;

  2. 若想放弃操作,输入q(quit,不保存退出)。

步骤 5:格式化分区(创建文件系统)

分区需格式化后才能使用,常用ext4文件系统(兼容好、稳定):

sudo mkfs.ext4 /dev/sdb1  # 格式化/dev/sdb1为ext4,会提示创建inode、块等信息

步骤 6:挂载分区(让系统识别并使用)

  1. 创建挂载点(如/mnt/data):

    sudo mkdir -p /mnt/data

  2. 临时挂载(重启后失效):

    sudo mount /dev/sdb1 /mnt/data

  3. 永久挂载(修改/etc/fstab):

    先获取分区 UUID(避免硬盘序号变化导致挂载失效):

    blkid /dev/sdb1(输出示例:/dev/sdb1: UUID="abc123..." TYPE="ext4");

    编辑/etc/fstab,末尾添加一行:

    UUID=abc123... /mnt/data ext4 defaults 0 0

    生效配置:sudo mount -a(无报错说明配置正确)。

验证:

df -h /mnt/data  # 显示分区容量、已用/可用空间,说明挂载成功

3. 实战 2:用 parted 给 GPT 硬盘分区(以 4TB 新硬盘 /dev/sdc 为例)

parted支持 GPT 分区表,适合大容量硬盘,步骤如下:

步骤 1:进入 parted 交互模式

sudo parted /dev/sdc

进入后默认显示硬盘信息,提示(parted)

步骤 2:创建 GPT 分区表

  1. 输入mklabel gpt(确认创建 GPT,会提示 “Warning: The existing disk label on /dev/sdc will be destroyed...”,输入Yes确认);

  2. 输入print(查看分区表,显示 “Partition Table: gpt”,说明创建成功)。

步骤 3:创建分区(以 2TB 分区为例)

  1. 输入mkpart primary 0% 50%primary表示主分区,0%是起始位置,50%是结束位置,4TB 硬盘的 50% 即 2TB);

    也可按具体容量:mkpart primary 0GB 2048GB

  2. 输入print,显示/dev/sdc1(2TB 分区)。

步骤 4:退出并格式化挂载

  1. 输入quit退出 parted;

  2. 格式化:sudo mkfs.xfs /dev/sdc1(大容量硬盘推荐 XFS,比 ext4 支持更大文件、性能更好);

  3. 挂载:同 fdisk 步骤(创建挂载点→临时挂载→永久写入 fstab)。

避坑提醒:

fdisk

不支持 GPT 分区表,若用

fdisk

操作 GPT 硬盘,会提示 “GPT PMBR size mismatch”;同理

parted

操作 MBR 硬盘虽可行,但不如

fdisk

简洁,建议按分区表类型选工具。

二、进阶:LVM 动态扩容(解决 “磁盘满了” 危机)

传统分区最大的问题是 “容量固定”—— 若/var分区满了,只能重新分区或加新硬盘迁移数据,风险高且麻烦。LVM(逻辑卷管理) 能解决这个问题:它将多个物理硬盘 / 分区 “整合” 为一个逻辑卷,后续可随时添加新硬盘扩容,无需中断业务,是企业级扩容的首选方案。

1. LVM 核心概念(用 “仓库” 类比理解)

LVM 组件 类比场景 核心作用 对应命令前缀
PV(物理卷) 仓库的 “砖块”(单个硬盘 / 分区) 将物理磁盘 / 分区转换为 LVM 可管理的单元 pvcreate
VG(卷组) 仓库的 “墙面”(多个砖块组合) 将多个 PV 整合为一个 “资源池”,统一分配容量 vgcreate
LV(逻辑卷) 仓库的 “货架”(从墙面划分) 从 VG 中划分出的 “逻辑分区”,可直接格式化挂载 lvcreate

简单说:PV→VG→LV,LV 相当于 “可动态伸缩的分区”,扩容时只需给 VG 加新 PV,再扩展 LV 即可。

2. 实战:LVM 创建与扩容(以 “/var 目录满了,扩容到 200GB” 为例)

假设现有/dev/sdb1(100GB,已创建为 PV),因/var(挂载在 LV vg01-lv_var)满了,需加新硬盘/dev/sdc1(100GB)扩容。

阶段 1:创建 LVM(初始配置)

若还未创建 LVM,先完成初始配置:

  1. 创建 PV(将/dev/sdb1转为 PV):

    sudo pvcreate /dev/sdb1(提示 “Physical volume "/dev/sdb1" successfully created.”);

  2. 创建 VG(将 PV 加入 VG vg01):

    sudo vgcreate vg01 /dev/sdb1(提示 “Volume group "vg01" successfully created”);

  3. 创建 LV(从 VG vg01划分 100GB 给 LV lv_var):

    sudo lvcreate -L 100G -n lv_var vg01-L指定大小,-n指定 LV 名);

  4. 格式化 LV 并挂载到/var

    sudo mkfs.ext4 /dev/vg01/lv_var

    sudo mount /dev/vg01/lv_var /var(若原/var有数据,需先迁移数据再挂载);

    永久写入/etc/fstab/dev/mapper/vg01-lv_var /var ext4 defaults 0 0

阶段 2:LVM 扩容(添加新 PV 并扩展 LV)

/var满了(df -h /var显示使用率 100%),用新硬盘/dev/sdc1(100GB)扩容:

步骤 1:将新分区转为 PV
sudo pvcreate /dev/sdc1  # 新PV创建成功

sudo pvs  # 查看PV列表,会显示/dev/sdb1(已用)和/dev/sdc1(空闲)
步骤 2:将新 PV 加入现有 VG(vg01)
sudo vgextend vg01 /dev/sdc1  # 扩展VG,提示“Volume group "vg01" successfully extended”

sudo vgs  # 查看VG,vg01的容量从100GB变为200GB(空闲100GB)
步骤 3:扩展 LV(将 vg01 的空闲容量分配给 lv_var)
\# 方法1:指定扩展大小(如扩展100GB)

sudo lvextend -L +100G /dev/vg01/lv\_var  

\# 方法2:使用VG所有空闲容量(适合想把剩余容量全用上)

sudo lvextend -l +100%FREE /dev/vg01/lv\_var  

\# 验证LV大小

sudo lvs  # lv\_var容量从100GB变为200GB
步骤 4:扩展文件系统(关键!否则 LV 扩容后文件系统不识别)

LV 扩容后,需同步扩展文件系统(ext4 用resize2fs,XFS 用xfs_growfs):

\# 若LV格式是ext4(本文案例)

sudo resize2fs /dev/vg01/lv\_var  

\# 若LV格式是XFS(需先确认挂载点)

\# sudo xfs\_growfs /var

\# 验证扩容结果

df -h /var  # /var容量变为200GB,使用率下降,扩容成功

避坑提醒:

  1. 扩容前务必备份数据(如用tar打包/var关键数据),避免操作失误导致数据丢失;

  2. resize2fs需在 LV 挂载状态下执行(ext4 支持在线扩容),XFS 也支持在线扩容,但xfs_growfs需指定挂载点而非 LV 路径;

  3. 若 LV 是根分区(/),扩容步骤相同,但需确保系统已安装resize2fs工具(默认已安装)。

三、高可用:RAID 1/5/10 选型与部署(企业数据安全核心)

即使有 LVM 扩容,单块硬盘损坏仍会导致数据丢失 ——RAID(独立磁盘冗余阵列) 通过多块硬盘组合,实现 “数据冗余”(损坏一块硬盘不丢数据)和 “性能提升”(多盘并行读写),是企业级数据安全的核心方案。

1. RAID 1/5/10 核心对比(企业选型关键)

企业常用 RAID 级别是 1、5、10,需根据 “数据重要性”“性能需求”“成本” 选择:

RAID 级别 最少硬盘数 数据冗余机制 容量利用率 读写性能 适用场景 企业案例
RAID 1 2 镜像(两块硬盘数据完全相同) 50%(2 块 1TB→可用 1TB) 读性能略升,写性能不变 重要小容量数据(如系统盘、数据库日志盘) 服务器系统盘(2 块硬盘做 RAID 1)
RAID 5 3 分布式校验(数据 + 校验码分散存于多盘) (n-1)/n(3 块 1TB→可用 2TB) 读性能高,写性能略降(需计算校验) 大容量非实时数据(如文件服务器、备份存储) 办公文件服务器(3 块 4TB 做 RAID 5)
RAID 10 4 先镜像后条带(RAID 1 基础上做 RAID 0) 50%(4 块 1TB→可用 2TB) 读写性能都高(多盘并行) 高 IO、高重要性数据(如数据库主库、核心业务存储) 电商数据库主库(4 块 1TB SSD 做 RAID 10)

选型建议:

  • 系统盘:优先 RAID 1(数据重要,容量需求小,镜像冗余足够);

  • 文件服务器:选 RAID 5(容量利用率高,成本低,读性能满足需求);

  • 数据库 / 核心业务:选 RAID 10(IO 性能优先,数据不允许丢失,容忍多块硬盘损坏);

  • 不推荐 RAID 0(无冗余,一块硬盘坏则数据全丢,仅适合临时缓存)。

2. 实战:用 mdadm 部署 RAID 5(文件服务器场景,3 块 4TB 硬盘)

Linux 下用mdadm工具管理 RAID,步骤如下(以/dev/sdb//dev/sdc//dev/sdd三块硬盘为例):

步骤 1:安装 mdadm 工具

\# Ubuntu/Debian

sudo apt install mdadm -y

\# CentOS/RHEL

sudo dnf install mdadm -y

步骤 2:创建 RAID 5 阵列

sudo mdadm --create /dev/md0 \  # RAID设备名(通常为/dev/md0\~md15)

           \--level=5 \          # RAID级别5

           \--raid-devices=3 \   # 参与RAID的硬盘数

           /dev/sdb /dev/sdc /dev/sdd  # 参与RAID的硬盘

\# 执行后会提示“Continue creating array? y”,输入y确认

\# 同时会显示RAID创建进度(如“\[===>...........]  resync = 25% (976896000/3907029168 blocks)”)

步骤 3:查看 RAID 状态

\# 方法1:快速查看

cat /proc/mdstat  # 显示md0的状态(resync完成表示创建成功)

\# 方法2:详细查看(推荐)

sudo mdadm --detail /dev/md0  # 显示RAID级别、成员硬盘、容量、容错状态等

成功后State列显示 “clean, degraded, recovering”(创建中)→“clean, active”(创建完成)。

步骤 4:格式化 RAID 阵列并挂载

  1. 格式化(文件服务器推荐 XFS,支持大文件):

    sudo mkfs.xfs /dev/md0

  2. 创建挂载点(如/mnt/fileserver):

    sudo mkdir -p /mnt/fileserver

  3. 临时挂载:

    sudo mount /dev/md0 /mnt/fileserver

  4. 永久挂载(写入/etc/fstab):

    获取 RAID UUID:blkid /dev/md0

    编辑/etc/fstab,添加:

    UUID=def456... /mnt/fileserver xfs defaults 0 0

    生效:sudo mount -a

步骤 5:验证 RAID 容错性(模拟硬盘故障)

企业部署 RAID 后需验证容错能力,避免 “假 RAID” 导致数据丢失:

  1. 模拟硬盘故障(标记/dev/sdb为故障):

    sudo mdadm --fail /dev/md0 /dev/sdb

  2. 查看状态:sudo mdadm --detail /dev/md0/dev/sdb状态变为 “failed”,RAID 开始 “rebuilding”(重构数据,用校验码恢复故障盘数据到其他盘);

  3. 替换故障硬盘(假设新硬盘为/dev/sde):

    sudo mdadm --remove /dev/md0 /dev/sdb(移除故障盘);

    sudo mdadm --add /dev/md0 /dev/sde(添加新盘,RAID 自动重构数据);

  4. 重构完成后,状态恢复为 “clean, active”,数据无丢失,容错验证成功。

企业级优化:

  1. 配置热备盘:创建 RAID 时加--spare-devices=1 /dev/sde/dev/sde为热备盘,故障时自动替换);

  2. 监控 RAID 状态:用mdadm --monitor /dev/md0 --mail=``admin@xxx.com(故障时发邮件告警);

  3. 定期检查:每周执行sudo mdadm --detail /dev/md0,确保 RAID 无异常。

四、总结:磁盘管理的 “企业级实践框架”

  1. 新服务器初始化
  • 小硬盘(≤2TB):fdisk 分区→直接挂载;

  • 大硬盘(>2TB):parted(GPT)分区→若需扩容,转为 LVM PV;

  • 系统盘:2 块硬盘做 RAID 1;业务盘:根据需求选 LVM+RAID(如 RAID 5+LVM 扩容)。

  1. 业务增长扩容
  • 非 LVM 分区:备份数据→新硬盘分区→迁移数据;

  • LVM 分区:加新 PV→扩展 VG→扩展 LV→扩展文件系统(在线完成,不中断业务)。

  1. 数据安全保障
  • 重要数据:RAID 1/10(优先容错和性能);

  • 大容量数据:RAID 5(平衡容量和容错);

  • 核心原则:RAID 不是 “备份”,需结合定期备份(如 rsync 远程备份),避免多盘同时损坏导致数据丢失。

掌握分区、LVM、RAID 这三大工具,你就能应对从 “新服务器部署” 到 “业务扩容” 再到 “数据安全保障” 的全场景磁盘管理需求,无论是中小企业的文件服务器,还是大型企业的数据库存储,都能游刃有余地处理。

posted @ 2025-10-12 18:56  S&L·chuck  阅读(100)  评论(0)    收藏  举报