2025-08-08 11:35:32 +08:00

254 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实测软Raid
## 一、环境介绍
| 操作系统 | 硬盘1 | 硬盘2 |
| -------------------- | ------- | ------- |
| ubuntu24.04 云服务器 | 70g ssd | 70g ssd |
## 二、测试创建Raid 1
1、创建Raid 1
```
root@VM-2-2-ubuntu:/data# mdadm -C /dev/md0 -l 1 -n 2 /dev/vdb /dev/vdc
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
```
2、查看创建进度
```
###查看raid进度###
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[1] vdb[0]
73333760 blocks super 1.2 [2/2] [UU]
[===>.................] resync = 15.5% (11405312/73333760) finish=5.0min speed=206165K/sec
unused devices: <none>
```
3、创建完成
```
###Raid进度完成###
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[1] vdb[0]
73333760 blocks super 1.2 [2/2] [UU]
unused devices: <none>
```
4、格式化磁盘
```
###格式化###
root@VM-2-2-ubuntu:/data# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=4, agsize=4583360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=18333440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
```
5、挂载
```
root@VM-2-2-ubuntu:/data# mount /dev/md0 /data
root@VM-2-2-ubuntu:/data# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 197M 1.1M 196M 1% /run
/dev/vda2 50G 4.9G 43G 11% /
tmpfs 984M 24K 984M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 197M 12K 197M 1% /run/user/1000
/dev/md0 70G 1.4G 69G 2% /data
root@VM-2-2-ubuntu:~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 May 8 16:10 ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-name-VM-2-2-ubuntu:0 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-uuid-261fcd66:9689a33e:294c4f85:6e096e48 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:10 virtio-disk-f6vtxkjm -> ../../vdb
lrwxrwxrwx 1 root root 9 May 8 16:10 virtio-disk-ld0km1yk -> ../../vdc
```
6、写入数据测试性能并计算文件的md5值
```
root@VM-2-2-ubuntu:/data# dd if=/dev/zero of=sun.txt bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 4.83928 s, 444 MB/s
root@VM-2-2-ubuntu:/data# md5sum sun.txt
a981130cf2b7e09f4686dc273cf7187e sun.txt
```
三、模拟单盘故障,拔掉异常的盘,然后添加新盘
1、卸载vdb尝试读取写入文件
```
root@VM-2-2-ubuntu:~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 May 8 16:10 ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-name-VM-2-2-ubuntu:0 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-uuid-261fcd66:9689a33e:294c4f85:6e096e48 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:10 virtio-disk-ld0km1yk -> ../../vdc
###可正常读取###
root@VM-2-2-ubuntu:/data# md5sum sun.txt
a981130cf2b7e09f4686dc273cf7187e sun.txt
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[1]
73333760 blocks super 1.2 [2/1] [_U]
unused devices: <none>
root@VM-2-2-ubuntu:/data# rz -E
Sent - Linux内核设计与实现第三版.pdf 9.72 MB/s Spend: 4 seconds
root@VM-2-2-ubuntu:/data# ls
Linux内核设计与实现第三版.pdf sun.txt 通用交流材料_95_1744028634000.pptx
```
2、加回单盘这里有点难受的是需要进行全盘数据校验
1. **全盘数据校验机制**
RAID1 的同步并非仅针对已写入文件,而是对整块硬盘的 **所有存储单元(包括空白区域)​** 进行校验
即使你只拔插硬盘RAID 控制器仍需逐块比对数据一致性,确保两个硬盘的镜像完全一致。
2. **触发同步的条件**
当硬盘被移除后重新插入时RAID 控制器会将其标记为「潜在不一致状态」,即使文件系统未损坏,仍需通过全盘同步消除数据差异风险
```
root@VM-2-2-ubuntu:/data# ls -al /dev/disk/by-id
total 0
drwxr-xr-x 2 root root 140 May 9 10:51 .
drwxr-xr-x 8 root root 160 May 8 16:10 ..
lrwxrwxrwx 1 root root 9 May 8 16:10 ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-name-VM-2-2-ubuntu:0 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-uuid-261fcd66:9689a33e:294c4f85:6e096e48 -> ../../md0
lrwxrwxrwx 1 root root 9 May 9 10:51 virtio-disk-f6vtxkjm -> ../../vdb
lrwxrwxrwx 1 root root 9 May 8 16:10 virtio-disk-ld0km1yk -> ../../vdc
root@VM-2-2-ubuntu:/data# mdadm --add /dev/md0 /dev/vdb
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdb[2] vdc[1]
73333760 blocks super 1.2 [2/2] [UU]
unused devices: <none>
```
3、干掉另外一块盘测试数据完整性并同样加回
```
root@VM-2-2-ubuntu:/data# ls -al /dev/disk/by-id
total 0
drwxr-xr-x 2 root root 120 May 9 11:11 .
drwxr-xr-x 8 root root 160 May 8 16:10 ..
lrwxrwxrwx 1 root root 9 May 8 16:10 ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-name-VM-2-2-ubuntu:0 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-uuid-261fcd66:9689a33e:294c4f85:6e096e48 -> ../../md0
lrwxrwxrwx 1 root root 9 May 9 10:51 virtio-disk-f6vtxkjm -> ../../vdb
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdb[2]
73333760 blocks super 1.2 [2/1] [U_]
unused devices: <none>
root@VM-2-2-ubuntu:/data# md5sum sun.txt
a981130cf2b7e09f4686dc273cf7187e sun.txt
root@VM-2-2-ubuntu:/data# ls -al /dev/disk/by-id
total 0
drwxr-xr-x 2 root root 140 May 9 11:13 .
drwxr-xr-x 8 root root 160 May 8 16:10 ..
lrwxrwxrwx 1 root root 9 May 8 16:10 ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-name-VM-2-2-ubuntu:0 -> ../../md0
lrwxrwxrwx 1 root root 9 May 8 16:44 md-uuid-261fcd66:9689a33e:294c4f85:6e096e48 -> ../../md0
lrwxrwxrwx 1 root root 9 May 9 10:51 virtio-disk-f6vtxkjm -> ../../vdb
lrwxrwxrwx 1 root root 9 May 9 11:13 virtio-disk-ld0km1yk -> ../../vdc
root@VM-2-2-ubuntu:/data# mdadm --add /dev/md0 /dev/vdc
mdadm: added /dev/vdc
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[3] vdb[2]
73333760 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.8% (601728/73333760) finish=6.0min speed=200576K/sec
unused devices: <none>
```
四、模拟raid 1 扩容(拔盘之前优先关机,再拔盘,然后开机!!!)
1、扩容单硬盘至75G然后挂载加回
```
root@VM-2-2-ubuntu:/data# mdadm --add /dev/md0 /dev/vdc
mdadm: added /dev/vdc
root@VM-2-2-ubuntu:/data# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[3] vdb[2]
73333760 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 1.3% (1001728/73333760) finish=4.8min speed=250432K/sec
unused devices: <none>
```
2、等待重建完毕后再扩容另外一块磁盘并加入
```
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdc[3] vdb[2]
73333760 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Every 2.0s: cat /proc/mdstat VM-2-2-ubuntu: Fri May 9 11:42:12 2025
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 vdb[2] vdc[3]
73333760 blocks super 1.2 [2/2] [UU]
unused devices: <none>
```
3、扩容Raid
```
mdadm --grow /dev/md0 --size=max
```
4、扩容文件系统
```
```