Linux存储空间管理完整笔记

一、基础硬盘管理:分区 + 文件系统

1.1 硬盘核心物理属性(出厂固定,不可修改)

硬盘出厂后物理属性固化,决定基础性能上限,无法通过软件调整:

  • 容量:硬盘最大存储空间

  • I/O读写性能:读写速度、响应延迟

  • 硬件安全性:硬盘物理防护、坏道容错、寿命上限

1.2 硬盘分区

核心作用:将整块物理硬盘,划分为多个独立的逻辑区域,方便分类存储数据、单独管理、重装系统不丢失数据。

常用分区工具:fdisk(MBR分区)、parted(GPT分区,支持2T以上大硬盘)

1.3 创建文件系统(格式化)

分区只是划分区域,必须格式化(创建文件系统)后才能存储数据,格式化的本质是给分区写入文件管理规则。Linux中主要分为两种存储空间格式:

(1)普通数据分区(常规存储空间)

用于存储系统、程序、用户数据,常用文件系统:ext4、xfs

实操案例:将/dev/sdb1分区格式化为ext4格式

复制代码

# 格式化分区 mkfs.ext4 /dev/sdb1 # 挂载分区到/data目录,即可正常使用 mkdir -p /data mount /dev/sdb1 /data

(2)交换分区(swap分区)

作用:充当虚拟内存,物理内存不足时,将临时数据存入swap分区,防止系统卡顿、程序崩溃,不用于存储永久数据。

实操案例:创建并启用swap分区

复制代码

# 格式化为swap格式 mkswap /dev/sdb2 # 启用swap分区 swapon /dev/sdb2

二、硬盘动态管理:LVM逻辑卷(核心:弹性扩容缩容)

普通分区弊端:分区大小固定,空间不足无法扩容、空间过剩无法缩减。LVM逻辑卷实现硬盘空间动态管理,支持在线扩容、缩容,无需重启、不丢失数据,是企业服务器主流方案。

2.1 LVM三大核心概念(层级关系:PV→VG→LV)

1. 物理卷 PV(Physical Volume)

物理底层,将普通硬盘/分区初始化为LVM专用格式,是LVM的基础单元。

2. 卷组 VG(Volume Group)

将多个PV整合为一个大的存储资源池,屏蔽单块硬盘的限制,所有空间统一调度。

3. 逻辑卷 LV(Logical Volume)

从VG资源池中划分出的可用空间,相当于"动态分区",最终用于挂载使用,支持弹性伸缩。

2.2 LVM完整实操案例

场景:新增2块1G硬盘/dev/sdb、/dev/sdc,组建LVM,实现动态空间管理

复制代码

# 1. 创建物理卷PV pvcreate /dev/sdb /dev/sdc # 2. 创建卷组VG(命名为vg01) vgcreate vg01 /dev/sdb /dev/sdc # 3. 创建逻辑卷LV(从vg01划分1.5G空间,命名为lv01) lvcreate -L 1.5G -n lv01 vg01 # 4. 格式化并挂载使用 mkfs.ext4 /dev/vg01/lv01 mkdir /lvm_data mount /dev/vg01/lv01 /lvm_data # 5. 在线扩容(无需卸载,不丢数据) lvextend -L +500M /dev/vg01/lv01 # 刷新文件系统,让扩容生效 resize2fs /dev/vg01/lv01

三、RAID磁盘阵列(物理存储性能/安全二次提升)

3.1 RAID核心作用

单块硬盘性能、安全性有限,RAID通过组合多块物理硬盘,二次提升存储的容量、I/O读写速度、数据安全性(容错),是服务器必备技术。

3.2 RAID两种实现方式

1. 硬RAID(物理阵列卡)

外接独立硬件阵列卡设备,硬盘插在阵列卡上,通过主板BIOS(F2进入)配置阵列。

优势:不占用服务器CPU、性能强、稳定性高,企业高端服务器首选

采购重点:阵列卡支持的RAID模式、接口类型(SATA/NVMe)

2. 软RAID(系统虚拟化实现)

无硬件设备,通过Linux系统mdadm软件模拟阵列,占用少量CPU资源,适合小型服务器、测试环境。

3.3 主流RAID模式参数详解(修正原版错误+场景适配)

核心原则:组建RAID的硬盘容量、性能尽量一致,高配硬盘会被低配硬盘拉低性能,造成资源浪费

RAID级别 所需磁盘数 I/O性能 数据安全性(容错) 可用存储空间 适用场景
RAID0 ≥2 读写大幅提升(条带化读写) 无容错,坏1块盘所有数据丢失 无损耗,总容量=所有硬盘容量之和 临时存储、追求极致速度、无重要数据
RAID1 ≥2(偶数) 读提升、写无提升(双向镜像) 极高容错,最多坏所有盘-1块 损耗50%,总容量=单块硬盘容量 系统盘、重要数据存储(优先安全)
RAID4 ≥3 读提升、写性能弱(校验盘瓶颈) 可坏1块盘,多块损坏数据丢失 损耗1块盘容量,总容量=(磁盘数-1)×单盘容量 基本淘汰,无生产使用场景
RAID5 ≥3 读写均提升(无单点瓶颈) 可坏1块盘,多块损坏数据丢失 损耗1块盘容量,总容量=(磁盘数-1)×单盘容量 企业通用场景、兼顾速度与安全
RAID6 ≥4 读提升、写略低(双校验) 容错极强,可同时坏2块盘 损耗2块盘容量,总容量=(磁盘数-2)×单盘容量 大容量硬盘、数据极高安全场景
RAID10 ≥4(偶数) 读写性能拉满 可坏每组镜像中1块,最多坏半数硬盘 损耗50%,总容量=总硬盘容量÷2 数据库、高并发、高性能高安全场景

重点纠错 :原版笔记中RAID10"坏一半硬盘"表述不准确,正确规则:RAID10是先镜像后条带,同一镜像对不能同时坏两块,可同时损坏不同组的硬盘

四、软RAID(mdadm)完整实操命令+案例

工具:mdadm(Linux默认自带软RAID工具),所有操作均有可直接复用的案例

4.1 创建软RAID(核心命令)

命令格式:mdadm -Cv /dev/mdX -l RAID级别 -n 磁盘数量 -x 冗余盘数量 磁盘路径

参数说明:-C创建、-v显示过程、-l指定RAID级别、-n有效磁盘数、-x备用冗余盘

冗余盘作用:阵列磁盘损坏时,冗余盘自动顶替,无需人工干预,保障阵列持续可用

实操案例:创建含1块冗余盘的RAID5(3块数据盘+1块备用盘)

复制代码

# 基于/dev/sdb、/dev/sdc、/dev/sdd创建RAID5,/dev/sde作为冗余盘 mdadm -Cv /dev/md0 -l5 -n3 -x1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

4.2 查看软RAID状态

复制代码

# 查看阵列详细信息、重建进度 mdadm -D /dev/md0 # 查看阵列实时运行状态 cat /proc/mdstat

4.3 保存RAID配置(关键!防止重启阵列丢失)

默认软RAID为临时生效,重启系统后阵列会解散,必须生成配置文件永久保存

复制代码

# 生成配置文件 mdadm -D -s > /etc/mdadm.conf

补充优化:在/etc/mdadm.conf对应阵列末尾添加 auto=yes,实现开机自动挂载阵列

4.4 磁盘故障模拟与替换(生产常用)

场景:模拟RAID5中/dev/sdb硬盘损坏,替换新硬盘

复制代码

# 1. 模拟硬盘损坏 mdadm -f /dev/md0 /dev/sdb # 2. 移除已损坏的硬盘 mdadm /dev/md0 -r /dev/sdb # 3. 插入新硬盘/dev/sbf,添加到阵列 mdadm /dev/md0 -a /dev/sbf

4.5 软RAID在线扩容

场景:原有3块盘RAID5,新增1块硬盘,扩容阵列空间

复制代码

# 1. 添加新硬盘到阵列 mdadm /dev/md0 -a /dev/sdg # 2. 拉伸阵列,修改有效磁盘数量为4块(完成扩容) mdadm -G /dev/md0 -n4 # 3. 刷新文件系统,扩容生效 resize2fs /dev/md0

4.6 彻底删除软RAID(完整流程,无残留)

必须按顺序操作,否则会残留磁盘阵列标记,导致磁盘无法正常使用

复制代码

# 1. 取消阵列挂载 umount /dev/md0 # 2. 停止阵列服务 mdadm -S /dev/md0 # 3. 删除阵列配置文件 rm -f /etc/mdadm.conf # 4. 清除所有磁盘的阵列标记(核心步骤,消除残留信息) mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd /dev/sde

五、核心知识点总结

  1. 普通分区固定大小,LVM实现动态扩容缩容,适合业务增长场景

  2. RAID0纯速度、RAID1纯安全、RAID5均衡通用、RAID6高容错、RAID10高性能高安全

  3. 软RAID必须保存配置文件,否则重启失效

  4. 磁盘替换、扩容可在线操作,无需停机,不丢失业务数据

  5. 删除RAID必须清除磁盘超级块,彻底清空阵列残留信息

相关推荐
一叶龙洲4 小时前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
圣光SG5 小时前
Servlet学习笔记
笔记·学习·servlet
奋发向前wcx5 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
敖行客 Allthinker6 小时前
Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案
linux·运维·ubuntu
@Mike@6 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
六点_dn7 小时前
RabbitMQ学习笔记-定义与作用
笔记·学习·rabbitmq
keyipatience7 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
元Y亨H8 小时前
生产环境监控与故障应急处理(5-5-5 标准)指南
运维
j7~8 小时前
【Linux】二十二.《Linux 信号机制完全指南:表示、捕捉与处理》
linux·信号处理·volatile·可入重函数·保存信号
观山岳五楼9 小时前
Ubuntu 24 怎么使用Ubuntu 20 的镜像源
linux·运维·ubuntu