12_磁盘管理实战:分区、LVM 与 RAID 配置指南
磁盘管理实战:分区、LVM 与 RAID 配置指南
对 Linux 运维来说,“磁盘” 是数据的 “容器”—— 从新服务器初始化分区,到业务增长后的磁盘扩容,再到企业级数据安全的 RAID 部署,磁盘管理贯穿整个运维生命周期。不少新手会卡在 “分区工具选错”“扩容数据丢失”“RAID 选型混乱” 等问题上。今天这篇文章,带你从 “基础分区” 入手,掌握 LVM 动态扩容解决 “磁盘满” 危机,再到 RAID 高可用部署保障数据安全,形成完整的磁盘管理知识链。
一、基础:磁盘分区工具实战(fdisk vs parted)
新硬盘接入 Linux 后,第一步要做 “分区”—— 就像给仓库划分 “货架区域”,方便后续管理。Linux 常用分区工具是fdisk和parted,两者适用场景不同,需根据硬盘类型选择。
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 主分区为例)
-
输入
n(new,新建分区); -
选择分区类型:输入
p(primary,主分区); -
分区号:默认
1(按回车); -
起始扇区:默认
2048(按回车,不建议修改); -
结束扇区:输入
+100G(表示分区大小 100GB,也可输具体扇区数); -
输入
p(print,查看分区表),会显示/dev/sdb1(新创建的分区)。
步骤 4:保存分区表并退出
-
输入
w(write,保存并退出),若提示 “The partition table has been altered.”,说明保存成功; -
若想放弃操作,输入
q(quit,不保存退出)。
步骤 5:格式化分区(创建文件系统)
分区需格式化后才能使用,常用ext4文件系统(兼容好、稳定):
sudo mkfs.ext4 /dev/sdb1 # 格式化/dev/sdb1为ext4,会提示创建inode、块等信息
步骤 6:挂载分区(让系统识别并使用)
-
创建挂载点(如
/mnt/data):sudo mkdir -p /mnt/data; -
临时挂载(重启后失效):
sudo mount /dev/sdb1 /mnt/data; -
永久挂载(修改
/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 分区表
-
输入
mklabel gpt(确认创建 GPT,会提示 “Warning: The existing disk label on /dev/sdc will be destroyed...”,输入Yes确认); -
输入
print(查看分区表,显示 “Partition Table: gpt”,说明创建成功)。
步骤 3:创建分区(以 2TB 分区为例)
-
输入
mkpart primary 0% 50%(primary表示主分区,0%是起始位置,50%是结束位置,4TB 硬盘的 50% 即 2TB);也可按具体容量:
mkpart primary 0GB 2048GB; -
输入
print,显示/dev/sdc1(2TB 分区)。
步骤 4:退出并格式化挂载
-
输入
quit退出 parted; -
格式化:
sudo mkfs.xfs /dev/sdc1(大容量硬盘推荐 XFS,比 ext4 支持更大文件、性能更好); -
挂载:同 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,先完成初始配置:
-
创建 PV(将
/dev/sdb1转为 PV):sudo pvcreate /dev/sdb1(提示 “Physical volume "/dev/sdb1" successfully created.”); -
创建 VG(将 PV 加入 VG
vg01):sudo vgcreate vg01 /dev/sdb1(提示 “Volume group "vg01" successfully created”); -
创建 LV(从 VG
vg01划分 100GB 给 LVlv_var):sudo lvcreate -L 100G -n lv_var vg01(-L指定大小,-n指定 LV 名); -
格式化 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,使用率下降,扩容成功
避坑提醒:
-
扩容前务必备份数据(如用
tar打包/var关键数据),避免操作失误导致数据丢失; -
resize2fs需在 LV 挂载状态下执行(ext4 支持在线扩容),XFS 也支持在线扩容,但xfs_growfs需指定挂载点而非 LV 路径; -
若 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 阵列并挂载
-
格式化(文件服务器推荐 XFS,支持大文件):
sudo mkfs.xfs /dev/md0; -
创建挂载点(如
/mnt/fileserver):sudo mkdir -p /mnt/fileserver; -
临时挂载:
sudo mount /dev/md0 /mnt/fileserver; -
永久挂载(写入
/etc/fstab):获取 RAID UUID:
blkid /dev/md0;编辑
/etc/fstab,添加:UUID=def456... /mnt/fileserver xfs defaults 0 0;生效:
sudo mount -a。
步骤 5:验证 RAID 容错性(模拟硬盘故障)
企业部署 RAID 后需验证容错能力,避免 “假 RAID” 导致数据丢失:
-
模拟硬盘故障(标记
/dev/sdb为故障):sudo mdadm --fail /dev/md0 /dev/sdb; -
查看状态:
sudo mdadm --detail /dev/md0,/dev/sdb状态变为 “failed”,RAID 开始 “rebuilding”(重构数据,用校验码恢复故障盘数据到其他盘); -
替换故障硬盘(假设新硬盘为
/dev/sde):sudo mdadm --remove /dev/md0 /dev/sdb(移除故障盘);sudo mdadm --add /dev/md0 /dev/sde(添加新盘,RAID 自动重构数据); -
重构完成后,状态恢复为 “clean, active”,数据无丢失,容错验证成功。
企业级优化:
-
配置热备盘:创建 RAID 时加
--spare-devices=1 /dev/sde(/dev/sde为热备盘,故障时自动替换); -
监控 RAID 状态:用
mdadm --monitor /dev/md0 --mail=``admin@xxx.com(故障时发邮件告警); -
定期检查:每周执行
sudo mdadm --detail /dev/md0,确保 RAID 无异常。
四、总结:磁盘管理的 “企业级实践框架”
- 新服务器初始化:
-
小硬盘(≤2TB):fdisk 分区→直接挂载;
-
大硬盘(>2TB):parted(GPT)分区→若需扩容,转为 LVM PV;
-
系统盘:2 块硬盘做 RAID 1;业务盘:根据需求选 LVM+RAID(如 RAID 5+LVM 扩容)。
- 业务增长扩容:
-
非 LVM 分区:备份数据→新硬盘分区→迁移数据;
-
LVM 分区:加新 PV→扩展 VG→扩展 LV→扩展文件系统(在线完成,不中断业务)。
- 数据安全保障:
-
重要数据:RAID 1/10(优先容错和性能);
-
大容量数据:RAID 5(平衡容量和容错);
-
核心原则:RAID 不是 “备份”,需结合定期备份(如 rsync 远程备份),避免多盘同时损坏导致数据丢失。
掌握分区、LVM、RAID 这三大工具,你就能应对从 “新服务器部署” 到 “业务扩容” 再到 “数据安全保障” 的全场景磁盘管理需求,无论是中小企业的文件服务器,还是大型企业的数据库存储,都能游刃有余地处理。

浙公网安备 33010602011771号