DRDB的部署
一、实验
1、软件raid :mdadm(内置,已提供)
Mdadm(Raid5): 通过软件来仿真阵列的任务,可能会损耗比较多的系统资源,比如:CPU资源,I/O总线资源
2、结构图
1、部署过程:raid-->lvs-->iscsi-->nfs
2、Drbd使raid1和raid2同步
3、关于软件raid
Raid0 | Raid1 | Raid10 | Raid5 | Raid | |
---|---|---|---|---|---|
最少磁盘 | 2 | 2 | 4 | 3 | 4 |
最大容错盘 | 无 | n/2 | n/2 | 1 | 2 |
数据安全性 | 无 | 更好 | 更好 | 好 | 比Raid5好,没Raid1和Raid10好 |
可用容量 | n | n/2 | n/2 | n-1 | n-2 |
1、CK:chunk raid将磁盘切割出的等量的区块(条带)
2、硬件磁盘阵列:系统中识别为一颗逻辑磁盘,设备名/dev/sd[a-z](针对scsi磁盘)
3、软件磁盘阵列:组合之后也是一块逻辑磁盘 /dev/md0、/dev/md1 …
4、实验要求
1、利用四个分区组成raid5
2、每个分区大小1G
3、利用一块磁盘做预备磁盘(备用,空闲)
4、Chunk:设置为256k
5、Spare disk(预备磁盘)大小同其他磁盘一样
Spare-disk:预备磁盘
当故障时,需要拔除故障磁盘,换上新磁盘(修复好的磁盘),会发生重构(rebuild)
如果不支持热插拔,需要关机更换磁盘
预备磁盘:在发生故障时,可以实时的主动重建
6、将做好的raid5(/dev/mdX) 挂载到/srv/raid
5、准备工作
(1)部署raid1节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEvvUi5N-1586876916940)(C:\Users\张三儿\Desktop\新建文件夹\捕获16.PNG)]
- 修改主机名
#hostnamectl set-hostname raid2
- IP:
ens33: 静态 net模式 能上网
ens38: 仅主机
- 修改连接名:
[root@raid2 ~]# nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 1 c00d95f6-876b-3853-aa75-c6291b9075cc 802-3-ethernet ens37
virbr0 cd20cb4a-9d0f-413a-9755-de638e35a767 bridge virbr0
ens33 a6604526-92f2-4fd8-8e28-b835180f477a 802-3-ethernet --
[root@raid2 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:c9:bc:a7 txqueuelen 1000 (Ethernet)
RX packets 263 bytes 16548 (16.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:c9:bc:b1 txqueuelen 1000 (Ethernet)
RX packets 24 bytes 2414 (2.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30 bytes 4814 (4.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
[root@raid2 ~]# nmcli connection delete 'Wired connection 1'
Connection 'Wired connection 1' (c00d95f6-876b-3853-aa75-c6291b9075cc) successfully deleted.
[root@raid2 ~]# nmcli connection add type ethernet ifname ens37 con-name ens37
Connection 'ens37' (aeaf6fd6-a392-4631-a910-e9f79e430853) successfully added.
[root@raid2 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 a6604526-92f2-4fd8-8e28-b835180f477a 802-3-ethernet ens33
ens37 aeaf6fd6-a392-4631-a910-e9f79e430853 802-3-ethernet ens37
virbr0 cd20cb4a-9d0f-413a-9755-de638e35a767 bridge virbr0
- 设置静态地址(NAT):
[root@raid2 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.146.100/24 ipv4.gateway 192.168.146.2 ipv4.dns 192.168.146.2 connection.autoconnect yes
[root@raid2 ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
- 配置第二张网卡(仅主机)
[root@raid2 ~]# nmcli connection modify ens37 ipv4.method manual ipv4.addresses 10.0.0.1/24 connection.autoconnect yes
[root@raid2 ~]# nmcli connection up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
- Vmvare下,不关机添加硬盘:
添加一块20G硬盘
[root@raid2 ~]# echo "- - -" > /sys/class/scsi_host/host
bash: /sys/class/scsi_host/host: No such file or directory
[root@raid2 ~]# for i in {0..2}
> do
> echo "- - -" > /sys/class/scsi_host/host${i}/scan
> done
[root@raid2 ~]# 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
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
- 分区:此处使用gdisk
-
fdisk MBR 2.2T 四个主分区 最多15个分区
-
gdisk GPT
3.parted GPT 可按百分比
[root@raid2 ~]# gdisk /dev/sdb
n 创建分区
+1G
code 8e00 linux LVM
p 查看
w 写保存
- 创建Raid5:
[root@raid2 ~]# mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256 --raid-devices=4 --spare-disk=1 /dev/sdb{1,2,3,4,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@raid2 ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Apr 14 10:29:31 2020
Raid Level : raid5
Array Size : 3139584 (2.99 GiB 3.21 GB) //整组raid的可用容量
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB) //每个设备的容量
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue Apr 14 10:29:36 2020
State : clean //磁盘阵列的使用状态
Active Devices : 4 //启动的设备数量
Working Devices : 5 //用于此阵列的设备数
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 256K
Consistency Policy : resync
Name : raid1:0 (local to host raid1)
UUID : 04d03a00:c0c4ae43:b42b3d2f:b24521b3
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
2 8 19 2 active sync /dev/sdb3
5 8 20 3 active sync /dev/sdb4
4 8 21 - spare /dev/sdb5
-------------------------------------------------------------------------------
mdadm:语法
mdadm --detail /dev/md0 查看详细信息
mdadm --create /dev/md0 --auto=yes --level=[015] --chunk=Nk –raid-devices=N --spare-devices=N /dev/sdX……
选项与参数:
--create:创建raid
-- auto:决定创建后面接的软件磁盘阵列设备 /dev/md0
--chunk:决定这个设备的chunk大小
--raid-devices:使用几块磁盘来组建raid
--spare-devices:使用几块磁盘来做备用磁盘
--level:决定这个磁盘阵列的等级(raid0 1 5)
- 使用cat来查看磁盘软件阵列的信息:
[root@raid2 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb4[5] sdb5[4](S) sdb3[2] sdb2[1] sdb1[0]
3142656 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
----------------------------------------------------------------------------------
(S):表示备用磁盘
[m/n] [UUUU]
m:表示这个阵列需要多少设备
n:有多少个设备正常运行
U:表示正常运行
_:表示不正常(设备)
- 格式化:
[root@raid2 ~]# mkfs.xfs -f -d su=256k,sw=3 -r extsize=768k /dev/md0
- 挂载使用:
[root@raid2 ~]# mkdir /srv/raid
[root@raid2 ~]# mount /dev/md0 /srv/raid/
[root@raid2 ~]# cd /srv/raid/
[root@raid2 raid]# touch 1.txt
[root@raid2 raid]# ls
1.txt
- 仿真RAID错误的救援模式:设置/dev/sdb4为出错状态
[root@raid2 raid]# mdadm --manage /dev/md0 --fail /dev/sdb4
mdadm: set /dev/sdb4 faulty in /dev/md0
---------------------------------------------------------------------------
mdadm语法:
mdadm –manage /dev/md0 [--add 设备] [--remove 移除设备] [--fail 设备]
--add: 会将后面的设备加入到这个md中
--remove:将设备从md移除
--fail:将md中的设备设置为出错状态
- 验证备用磁盘是否能够正常工作:
[root@raid2 ~]# mdadm --detail /dev/md0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
2 8 19 2 active sync /dev/sdb3
4 8 21 3 active sync /dev/sdb5
5 8 20 - faulty /dev/sdb4
[root@raid1 raid]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb4[5](F) sdb5[4] sdb3[2] sdb2[1] sdb1[0]
3139584 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
- 模拟移除故障磁盘:
[root@raid2 ~]# mdadm --manage /dev/md0 --remove /dev/sdb4
mdadm: hot removed /dev/sdb4 from /dev/md0
[root@raid2 ~]#mdadm --detail /dev/md0
- 模拟添加新硬盘:
[root@raid2 ~]# mdadm --manage /dev/md0 --add /dev/sdb4
mdadm: added /dev/sdb4
[root@raid2 ~]# mdadm --detail /dev/md0
-
初始创建时,spare-devices的值为1,此时,再创建一个分区,使用–add,能够添加到阵列md0
-
开机自动挂载:(man 5 mdadm.conf)
[root@raid2 ~]# mdadm --detail /dev/md0 | grep -i uuid //查看uuid
UUID : 04d03a00:c0c4ae43:b42b3d2f:b24521b3
[root@raid2 ~]# vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=04d03a00:c0c4ae43:b42b3d2f:b24521b3
[root@raid2 ~]# blkid /dev/md0
/dev/md0: UUID="f49b612b-5336-4976-880d-65aa6becbd82" TYPE="xfs"
[root@raid2 ~]# vim /etc/fstab
UUID=f49b612b-5336-4976-880d-65aa6becbd82 /srv/raid xfs defaults 0 0
- 关闭软件raid:
先卸载,且删除配置文件内与这个阵列有关的内容
[root@raid2 ~]# umount /dev/md0
[root@raid2 ~]# vim /etc/fstab (删除相关内容)
- 先覆盖RAID的metadata以及XFS的superblock,再关闭md0
[root@raid2 ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.241286 s, 217 MB/s
[root@raid2 ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb2 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb3 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb4 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb5 bs=1M count=10
[root@raid2 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
- 为什么要使用dd:
因为raid有一部分相关的数据会存在磁盘中,如果只是将配置移除,并关闭raid,但是分区没有重新格式化,开机后可能会自己重组raid,只不过名字可能不叫md0
二、存储复制解决方案DRBD
1.DRBD简介
网络raid技术(相当于网络raid1)
DRBD是一个基于软件的、无共享、复制存储解决方案,它在主机之间镜像块设备(硬盘、分区、逻辑卷等)的内容。
2.DRBD镜像数据:
- 实时: 当应用程序修改设备上的数据时,数据的副本更改是连续进行的。
- 透明: 应用程序不会意识到数据实际上是存储在多台主机上的。
- 同步 or 异步: 当使用同步镜像数据时,只有在所有(连接上的)主机上都完成写操作后,才会通知应用程序写完成。当使用异步镜像数据时,在本地完成写入时(通常在镜像数据传输到其他节点前),就会通知应用程序写入完成。(nfs中同步用sync,异步用async)
3.DRDB内核模块
-
DRBD的核心功能是通过Linux内核模块实现的
-
根据定义和Linux内核体系结构的要求,DRBD与上面各层无关。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iHTOafEK-1586876916942)(C:\Users\张三儿\Desktop\新建文件夹\图片5.png)]
Buffer:缓冲(缓存) 写缓冲 write-buffer Cache:缓存(快取) 读缓存 read-cache
4.DBDR用户空间管理工具
- DRBD附带了一组管理工具,这些工具与内核模块通信,以便配置和管理DRBD资源。
- drbdmanage:作为单独的项目提供,这是在多节点集群中编排DRBD资源的推荐方法。
- drbdadm:DRBD-utils程序套件的高级管理工具。
- drbdsetup:配置加载到内核中的DRBD模块。
- drbdmeta:允许创建、转储、还原和修改DRBD元数据结构。
5.DRBD资源
-
资源是指特定复制数据集的所有方面的集合术语。
-
资源名称
可以是任意的US-ASCII名称,不包含空白字符,用于说明该引用资源。
-
卷
1.任何资源都是一个复制组,由共享同一复制流的多个 卷 之一组成。
2.在 drbdadm 级别,可以通过资源名称和卷号将资源中的卷寻址为 resource/volume。
-
连接
连接 是共享复制数据集的两台主机之间的通信链路。
-
p资源角色
在DRBD中,每个resource都有一个角色,该角色可以是 Primary 或 Secondary 。
6.DRBD特征
-
单一主(Single-primary)模式
单一主模式下,资源在任何给定的时间仅在一个群集成员上处于主角色。
-
双主(Dual-primary)模式
双主模式下,资源在任何给定时间都处于两个群集节点上的主角色
- 复制(Replication)模式
I.Protocol A 异步复制协议。
II.Protocol B 内存同步(半同步)复制协议。
2.在 drbdadm 级别,可以通过资源名称和卷号将资源中的卷寻址为 resource/volume。
-
连接
连接 是共享复制数据集的两台主机之间的通信链路。
-
p资源角色
在DRBD中,每个resource都有一个角色,该角色可以是 Primary 或 Secondary 。
6.DRBD特征
-
单一主(Single-primary)模式
单一主模式下,资源在任何给定的时间仅在一个群集成员上处于主角色。
-
双主(Dual-primary)模式
双主模式下,资源在任何给定时间都处于两个群集节点上的主角色
- 复制(Replication)模式
I.Protocol A 异步复制协议。
II.Protocol B 内存同步(半同步)复制协议。
III.Protocol C 同步复制协议。