20260107
追求极致速度,不怕丢数据 → RAID 0小容量、极致安全 → RAID 1性价比最高、通用场景 → RAID 5(3~8 盘常见)大容量硬盘、怕双盘同时坏 → RAID 6数据库、虚拟化、高 IOPS → RAID 10(有预算首选)
·
RAID - 独立磁盘冗余阵列
不同的 RAID 方案
RAID 就算把多个独立的磁盘组合起来,形成一个逻辑上的大硬盘,以达到以下一个或多个目的:
- 提高性能:多个磁盘并行读写,速度更快
- 提高数据安全性:通过冗余保护数据,即使单个磁盘坏了也不会丢失数据
- 扩大存储容量:把多个小的磁盘组合成一个大磁盘
| RAID 级别 | 最低磁盘数 | 容量利用率 | 性能(读/写) | 容错能力 | 典型应用场景 |
|---|---|---|---|---|---|
| RAID 0 | 2 | 100%(总和) | 读写都最快 | 无容错(一个盘坏全坏) | 需要极致速度、不在意数据安全(如临时渲染、游戏缓存) |
| RAID 1 | 2 | 50%(镜像,只用一半容量) | 读快,写和单盘差不多 | 可容 1 块盘坏 | 关键数据需要高可靠性(如系统盘、数据库) |
| RAID 5 | 3 | (n-1)/n(损失 1 块盘容量) | 读很快,写中等(需计算校验) | 可容 1 块盘坏 | 最常见的企业存储,性价比高 |
| RAID 6 | 4 | (n-2)/n(损失 2 块盘容量) | 读很快,写较慢 | 可容 2 块盘坏 | 数据量大、要求更高安全性(如档案存储) |
| RAID 10 | 4 | 50% | 读写都很快 | 可容多块盘坏(视情况) | 高性能+高安全性(如虚拟化、数据库) |
- RAID 0(条带化,Striping)
- 原理:数据被分割成块,并行写入多个磁盘。
- 优点:容量利用率 100%。读写性能理论上可达单盘的 n 倍(n 为磁盘数)
- 缺点:完全无容错,任意一块磁盘损坏,整个阵列数据全部丢失。
- 适用场景:对速度要求极高、对数据安全性要求低的环境。例如:视频剪辑的临时渲染盘、游戏缓存、科学计算临时数据。
- 不推荐:任何需要持久化存储的重要数据。
- RAID 1(镜像,Mirroring)
- 原理:每份数据同时写入两块或者更多磁盘,完全镜像。
- 有点:容错强,一块盘坏了,数据仍然完整可用。读性能好,可从多个磁盘并行读取。
- 缺点:容量只有总磁盘容量的一半,写性能基本等于单盘。
- 适用场景:系统盘、关键配置文件、数据库主库、小规模但要求高可靠性的存储。
- 扩展:支持多于 2 块盘(如 RAID 1 with 3 disks),但容量仍只有单盘大小。
- RAID 5(条带化 + 分布式奇偶校验)
- 原理:数据和奇偶校验信息分布式存储在所有磁盘上。每次写操作需要计算校验。(XOR 运算)
- 优点:容量利用率高、n 块盘可用使用 n-1 块盘。容忍一块盘故障,故障后可通过剩余盘+校验信息重建数据。读性能优秀(可并行读多个盘)。
- 缺点:写性能中等(每次写都要读旧数据、计算新校验、再写)。重建时间长(盘越大越慢),重建期间性能下降且有二次故障风险。
- 适用场景:最常见的企业级存储,文件服务器、虚拟机磁盘、中小型数据库,性价比最高。
- RAID 6(双分布式奇偶校验)
- 原理:类似 RAID 5,但使用两份独立的奇偶校验(P+Q),分布在所有盘上。
- 优点:可同时容忍 2 块盘故障,安全性更高。适合大容量硬盘(现代硬盘容量大,重建时间长,RAID 5 风险高)。
- 缺点:容量损失 2 块盘。写性能更低(需要计算双份校验)。 -适用场景:海量数据存储、归档系统、NAS 大容量存储、对数据安全要求极高的环境。
- RAID 10(1+0,先镜像后条带)
- 原理:先将磁盘两两镜像(RAID 1),再将多个镜像对条带化(RAID 0)。需要偶数块盘,最低 4 块。
- 优点:兼具高性能(条带读写)和高容错(每个镜像组可坏 1 块)。重建速度快(只需镜像复制,不用复杂计算)。读写性能都非常优秀。
- 缺点:容量利用率只有 50%。成本较高(需要更多磁盘)。
- 适用场景:对性能和安全都要求高的场景,如大型数据库(MySQL、PostgreSQL)、虚拟化平台(VMware、Proxmox)、高并发 Web 应用。
追求极致速度,不怕丢数据 → RAID 0
小容量、极致安全 → RAID 1
性价比最高、通用场景 → RAID 5(3~8 盘常见)
大容量硬盘、怕双盘同时坏 → RAID 6
数据库、虚拟化、高 IOPS → RAID 10(有预算首选)
使用 RAID
RAID 5
数据条带化(Striping):大文件被切成小块(通常 64KB~1MB),轮流写入不同磁盘,实现并行 I/O。
分布式奇偶校验(Distributed Parity):每条带额外计算一份校验块(通过 XOR 异或运算),校验块也轮流放在不同磁盘上。
添加 RAID
# 清除旧签名
wipefs -a /dev/sd{b..e}
# 创建
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}
# 监控初始同步(resync)进度
watch -n 5 cat /proc/mdstat
# 4. 保存配置 + 格式化 + 挂载
mkfs.xfs -f /dev/md5
mkdir /data
mount /dev/md5 /data
扩容
mdadm --add /dev/md5 /dev/sdg
mdadm --grow /dev/md5 --raid-devices 5
故障
mdadm --fail /dev/md5 /dev/sdb
删除 RAID
umount /dev/md5
# stop RAID 阵列,将删除阵列
mdadm --stop /dev/md5
# stop之后、清除superblock之前,如果想构建原先的md5设备,使用以下命令,数据不会丢失
mdadm --assemble /dev/md5 /dev/sd{b..g}
# 清除原先设备上的 md superblock
mdadm --zero-superblock /dev/sd{b..g}
逻辑卷的管理
- 物理卷:登记物理设备。
- 卷组:将登记的物理设备进行分组。
- 逻辑卷:从组中进行空间规划。
简单案例
# 创建物理卷
[root@server ~ 19:02:24]# pvcreate /dev/sd{b,c,d}
Device /dev/sdd excluded by a filter.
Physical volume "/dev/sdd" successfully created.
Physical volume "/dev/sdc" successfully created.
[root@server ~ 19:03:02]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
/dev/sdc lvm2 --- 10.00g 10.00g
/dev/sdd lvm2 --- 10.00g 10.00g
# 创建卷组
[root@server ~ 19:03:07]# vgcreate webapp /dev/sd{b,c,d}
Physical volume "/dev/sdb" successfully created.
Volume group "webapp" successfully created
[root@server ~ 19:03:30]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
webapp 3 0 0 wz--n- <29.99g <29.99g
# 创建lv逻辑分区
[root@server ~ 19:03:33]# lvcreate -n app01 -L 10G webapp
Logical volume "app01" created.
[root@server ~ 19:04:00]# lvcreate -n app02 -L 5G webapp
Logical volume "app02" created.
[root@server ~ 19:04:10]# lvcreate -n app03 -L 8G webapp
Logical volume "app03" created.
[root@server ~ 19:04:57]#
# 进行分区格式化文件系统
[root@server ~ 19:07:47]# mkfs.ext4 /dev/webapp/app01
[root@server ~ 19:08:36]# mkfs.xfs /dev/webapp/app02
[root@server ~ 19:08:44]# mkfs.xfs /dev/webapp/app03
# 进行挂载
[root@server ~ 19:09:53]# mkdir /app0{1..3}
[root@server / 19:10:13]# mount /dev/webapp/app01 /app01
[root@server / 19:10:33]# mount /dev/webapp/app02 /app02
[root@server / 19:10:39]# mount /dev/webapp/app03 /app03
[root@server / 19:10:43]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─centos-root 253:0 0 45.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─webapp-app03 253:4 0 8G 0 lvm /app03
sdc 8:32 0 10G 0 disk
└─webapp-app01 253:2 0 10G 0 lvm /app01
sdd 8:48 0 10G 0 disk
├─webapp-app01 253:2 0 10G 0 lvm /app01
└─webapp-app02 253:3 0 5G 0 lvm /app02
sde 8:64 0 10G 0 disk
sdf 8:80 0 10G 0 disk
sdg 8:96 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
# 对磁盘扩容app02
# 注意,xfs文件系统只能扩容,不能减容
[root@server / 19:12:47]# lvextend -l +100%FREE /dev/webapp/app02
Size of logical volume webapp/app02 changed from 5.00 GiB (1280 extents) to <11.99 GiB (3069 extents).
Logical volume webapp/app02 successfully resized.
[root@server / 19:13:09]#
# 由于容量不够用了,决定增加物理卷,并且添加到webapp组里面
[root@server / 19:14:34]# pvcreate /dev/sde
Physical volume "/dev/sde" successfully created.
[root@server / 19:14:42]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
/dev/sdb webapp lvm2 a-- <10.00g 0
/dev/sdc webapp lvm2 a-- <10.00g 0
/dev/sdd webapp lvm2 a-- <10.00g 0
/dev/sde lvm2 --- 10.00g 10.00g
[root@server / 19:16:54]# vgextend webapp /dev/sde
Volume group "webapp" successfully extended
[root@server / 19:18:33]#
# 接下来给ext4文件系统扩容并且减容,(app01)
[root@server / 19:19:03]# lvextend -L +8G /dev/webapp/app01
Size of logical volume webapp/app01 changed from 10.00 GiB (2560 extents) to 18.00 GiB (4608 extents).
Logical volume webapp/app01 successfully resized.
[root@server / 19:19:25]#
# 减少容量,需要先取消挂载点
[root@server / 19:21:08]# umount /app01
[root@server / 19:22:06]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─centos-root 253:0 0 45.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
├─webapp-app02 253:3 0 12G 0 lvm /app02
└─webapp-app03 253:4 0 8G 0 lvm /app03
sdc 8:32 0 10G 0 disk
└─webapp-app01 253:2 0 18G 0 lvm
sdd 8:48 0 10G 0 disk
├─webapp-app01 253:2 0 18G 0 lvm
└─webapp-app02 253:3 0 12G 0 lvm /app02
sde 8:64 0 10G 0 disk
└─webapp-app01 253:2 0 18G 0 lvm
sdf 8:80 0 10G 0 disk
sdg 8:96 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@server / 19:22:11]#
# 接下来进行文件系统的检查
[root@server / 19:22:11]# e2fsck -f /dev/webapp/app01
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/webapp/app01: 11/655360 files (0.0% non-contiguous), 83137/2621440 blocks
# 注意!:一定要先缩减文件系统,再缩减逻辑卷,否则,硬盘数据会丢失
# 这个缩减是缩减到,不是缩减多少
# 缩减文件系统
[root@server / 19:24:48]# resize2fs /dev/webapp/app01 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/webapp/app01 to 1835008 (4k) blocks.
The filesystem on /dev/webapp/app01 is now 1835008 blocks long.
# 缩减逻辑卷
[root@server / 19:25:14]# lvreduce -L 7G /dev/webapp/app01
WARNING: Reducing active logical volume to 7.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce webapp/app01? [y/n]: y
Size of logical volume webapp/app01 changed from 18.00 GiB (4608 extents) to 7.00 GiB (1792 extents).
Logical volume webapp/app01 successfully resized.
逻辑卷快照
[root@server / 19:29:00]# lvcreate -s -n webapp-app01-snap -L 7G /dev/webapp/app01
Logical volume "webapp-app01-snap" created.
[root@server / 19:30:06]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
app01 webapp owi-a-s--- 7.00g
app02 webapp -wi-ao---- <11.99g
app03 webapp -wi-ao---- 8.00g
webapp-app01-snap webapp swi-a-s--- 7.00g app01 0.00
[root@server / 19:30:09]#
```bash
# 清除磁盘
# 首先清除逻辑卷
lvremove webapp/app*
# 清除卷组
vgremove webapp
# 清除物理卷
pvremove /dev/sd{b..e}
# 清除文件系统的签名
wipefs -a /dev/sd{b..e}
```
# 注意!!!
1. 只有 ext 文件系统可以缩减逻辑分区,需要先取消挂载,再进行检查,再对文件系统进行缩减,再缩减逻辑分区。顺序不能错,否则磁盘数据可能会损坏。
2. 擦除磁盘的方式
- 只清除签名:wipefs -a /dev/sdb
- ....
`bash
清除磁盘
首先清除逻辑卷
lvremove webapp/app*
清除卷组
vgremove webapp
清除物理卷
pvremove /dev/sd{b…e}
清除文件系统的签名
wipefs -a /dev/sd{b…e}
# 注意!!!
1. 只有 ext 文件系统可以缩减逻辑分区,需要先取消挂载,再进行检查,再对文件系统进行缩减,再缩减逻辑分区。顺序不能错,否则磁盘数据可能会损坏。
2. 擦除磁盘的方式
- 只清除签名:wipefs -a /dev/sdb
- ....
更多推荐



所有评论(0)