RAID1软件实现(Linux系统)

编程

实现raid有2种方式:

软件 RAID 的性能较低,因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前,操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。

硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时,即使出现电源故障,它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。

RAID有不同的级别。在这里,我们仅列出在真实环境下的使用最多的 RAID 级别。

    • RAID0 = 条带化

    • RAID1 = 镜像

    • RAID5 = 单磁盘分布式奇偶校验

    • RAID6 = 双磁盘分布式奇偶校验

    • RAID10 = 镜像 + 条带。(嵌套RAID)

RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。

RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。

RAID 1 :磁盘利用率为50%,二次读写实现磁盘镜像。

1、准备工作

安装系统后,主板上连接2块硬盘,这里我用虚拟机做实验。

试验系统:Centos 8.1.1911

2、创建逻辑卷RAID 1

查看逻辑卷及分区

[root@study ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 19G 0 part

├─cl-root 253:0 0 17G 0 lvm /

└─cl-swap 253:1 0 2G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

sdc 8:32 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

[root@study ~]#

我们使用sdb 和 sdc 简历逻辑卷RAID1

[root@study ~]# mdadm -C /dev/md0 -l raid1 -n 2 /dev/sdb /dev/sdc

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?

Continue creating array? (y/n) y

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@study ~]#

查看状态

[root@study ~]# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Tue Jun 9 07:24:46 2020

Raid Level : raid1

Array Size : 1046528 (1022.00 MiB 1071.64 MB)

Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Tue Jun 9 07:24:52 2020

State : clean

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Consistency Policy : resync

Name : study.server.com:0 (local to host study.server.com)

UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c

Events : 17

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

1 8 32 1 active sync /dev/sdc

[root@study ~]#

格式化分区并挂载使用

[root@study ~]# mkfs.ext4 /dev/md0

mke2fs 1.44.6 (5-Mar-2019)

创建含有 261632 个块(每块 4k)和 65408 个inode的文件系统

文件系统UUID:07d1f71a-95dd-4985-b018-e205de9b9772

超级块的备份存储于下列块:

32768, 98304, 163840, 229376

正在分配组表: 完成

正在写入inode表: 完成

创建日志(4096 个块)完成

写入超级块和文件系统账户统计信息: 已完成

[root@study ~]# mkdir /mnt/raid1

[root@study ~]# mount /dev/md0 /mnt/raid1/

[root@study ~]# echo "this is linux raid1" > /mnt/raid1/readme.txt

[root@study ~]# ll /mnt/raid1/readme.txt

-rw-r--r--. 1 root root 20 6月 9 07:27 /mnt/raid1/readme.txt

[root@study ~]# cat /mnt/raid1/readme.txt

this is linux raid1

[root@study ~]#

配置自动挂载

[root@study ~]# umount /mnt/raid1

[root@study ~]# blkid /dev/md0

/dev/md0: UUID="07d1f71a-95dd-4985-b018-e205de9b9772" TYPE="ext4"

[root@study ~]# vim /etc/fstab

[root@study ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Thu May 28 03:40:23 2020

#

# Accessible filesystems, by reference, are maintained under "/dev/disk/".

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.

#

# After editing this file, run "systemctl daemon-reload" to update systemd

# units generated from this file.

#

/dev/mapper/cl-root / xfs defaults 0 0

UUID=9df293e1-6753-4be2-9733-dad673e61f4a /boot ext4 defaults 1 2

/dev/mapper/cl-swap swap swap defaults 0 0

UUID="07d1f71a-95dd-4985-b018-e205de9b9772" /mnt/raid1 ext4 defaults 0 0

[root@study ~]# mount -a

[root@study ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 885M 0 885M 0% /dev

tmpfs 903M 0 903M 0% /dev/shm

tmpfs 903M 9.4M 894M 2% /run

tmpfs 903M 0 903M 0% /sys/fs/cgroup

/dev/mapper/cl-root 17G 4.3G 13G 26% /

/dev/sda1 976M 143M 766M 16% /boot

tmpfs 181M 1.2M 180M 1% /run/user/42

tmpfs 181M 4.0K 181M 1% /run/user/0

/dev/md0 990M 2.6M 921M 1% /mnt/raid1

[root@study ~]#

3、模拟raid磁盘故障

移除磁盘sdc。

移除后,partprobe刷新下分区。

[root@study ~]# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Tue Jun 9 07:24:46 2020

Raid Level : raid1

Array Size : 1046528 (1022.00 MiB 1071.64 MB)

Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Tue Jun 9 07:30:15 2020

State : clean

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Consistency Policy : resync

Name : study.server.com:0 (local to host study.server.com)

UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c

Events : 17

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

1 8 32 1 active sync /dev/sdc

[root@study ~]# partprobe /dev/md0

[root@study ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 19G 0 part

├─cl-root 253:0 0 17G 0 lvm /

└─cl-swap 253:1 0 2G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

└─md0 9:0 0 1022M 0 raid1 /mnt/raid1

sr0 11:0 1 1024M 0 rom

查看raid1状态数据

发现数据依然存在,没有影响到数据。

[root@study ~]# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Tue Jun 9 07:24:46 2020

Raid Level : raid1

Array Size : 1046528 (1022.00 MiB 1071.64 MB)

Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Tue Jun 9 07:35:17 2020

State : clean, degraded

Active Devices : 1

Working Devices : 1

Failed Devices : 1

Spare Devices : 0

Consistency Policy : resync

Name : study.server.com:0 (local to host study.server.com)

UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c

Events : 20

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

- 0 0 1 removed

1 8 32 - faulty /dev/sdc

[root@study ~]# ll /mnt/raid1/

总用量 20

drwx------. 2 root root 16384 6月 9 07:26 lost+found

-rw-r--r--. 1 root root 20 6月 9 07:27 readme.txt

[root@study ~]# cat /mnt/raid1/readme.txt

this is linux raid1

[root@study ~]#

修复RAID1

移除故障磁盘,插入新磁盘,然后重启服务器。

[root@study ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 19G 0 part

├─cl-root 253:0 0 17G 0 lvm /

└─cl-swap 253:1 0 2G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

└─md0 9:0 0 1022M 0 raid1 /mnt/raid1

sdc 8:32 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

[root@study ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 886M 0 886M 0% /dev

tmpfs 904M 0 904M 0% /dev/shm

tmpfs 904M 9.4M 894M 2% /run

tmpfs 904M 0 904M 0% /sys/fs/cgroup

/dev/mapper/cl-root 17G 4.4G 13G 26% /

/dev/sda1 976M 143M 766M 16% /boot

tmpfs 181M 1.2M 180M 1% /run/user/42

tmpfs 181M 4.0K 181M 1% /run/user/0

/dev/md0 990M 2.6M 921M 1% /mnt/raid1

[root@study ~]# umount /mnt/raid1

[root@study ~]# mdadm --manage /dev/md0 --add /dev/sdc

mdadm: added /dev/sdc

[root@study ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 19G 0 part

├─cl-root 253:0 0 17G 0 lvm /

└─cl-swap 253:1 0 2G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

└─md0 9:0 0 1022M 0 raid1

sdc 8:32 0 1G 0 disk

└─md0 9:0 0 1022M 0 raid1

sr0 11:0 1 1024M 0 rom

查看数据

[root@study ~]# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Tue Jun 9 07:24:46 2020

Raid Level : raid1

Array Size : 1046528 (1022.00 MiB 1071.64 MB)

Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Tue Jun 9 21:11:45 2020

State : clean

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Consistency Policy : resync

Name : study.server.com:0 (local to host study.server.com)

UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c

Events : 53

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

2 8 32 1 active sync /dev/sdc

[root@study ~]# mount -a

[root@study ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 886M 0 886M 0% /dev

tmpfs 904M 0 904M 0% /dev/shm

tmpfs 904M 9.4M 894M 2% /run

tmpfs 904M 0 904M 0% /sys/fs/cgroup

/dev/mapper/cl-root 17G 4.4G 13G 26% /

/dev/sda1 976M 143M 766M 16% /boot

tmpfs 181M 1.2M 180M 1% /run/user/42

tmpfs 181M 4.0K 181M 1% /run/user/0

/dev/md0 990M 2.6M 921M 1% /mnt/raid1

[root@study ~]# ll /mnt/raid1/

总用量 20

drwx------. 2 root root 16384 6月 9 07:26 lost+found

-rw-r--r--. 1 root root 20 6月 9 07:27 readme.txt

[root@study ~]# cat /mnt/raid1/readme.txt

this is linux raid1

[root@study ~]#


读书和健身总有一个在路上

原文链接:https://www.cnblogs.com/Renqy/archive/2020/06/10/13083241.html

以上是 RAID1软件实现(Linux系统) 的全部内容, 来源链接: utcz.com/z/517305.html

回到顶部