1、图文并茂说明raid0,raid1, raid10, raid01, raid5等原理
- RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
图2 RAID0 :无冗错的数据条带
2.RAID1
RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。工作原理如图 3 所示。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
图3 RAID1 :无校验的相互镜像
RAID01 和 RAID10
一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。 RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力,原理如图 9 所示。
RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。
图 9 典型的 RAID01 (上)和 RAID10 (下)模型
RAID5
RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。
RAID5 (图 7)的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
图7 RAID5 :带分散校验的数据条带
2、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
#使用fdisk 分两个区
fdisk /dev/sdb
#卷升级为物理卷
partprobe /dev/sdb
#创建物理卷
pvcreate /dev/sdb1 /dev/sdb2
#创建卷组 指定PE大小
vgcreate -s 16M testvg /dev/sdb1 /dev/sdb2
#创建逻辑卷
lvcreate -n testlv -L 5G testvg
mkfs.xfs /dev/mapper/testvg-testlv
#挂载
vim /etc/fstab
UUID=6e69b50d-9f8a-417d-a9f0-a6663a58282a /users xfs defaults 0 0
mount -a
3、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d/目录至自己的家目录。
mkdir /users
useradd archlinux -d /users/archlinux
su - archlinux
cp -a /etc/pam.d .
4、 扩展testlv至7G,要求archlinux用户的文件不能丢失
lvextend -L +2G /dev/testvg/testlv
xfs_growfs /users
5、收缩testlv至3G,要求archlinux用户的文件不能丢失
umount /users
e2fsck -f /dev/mapper/testvg_testlv
resize2fs /dev/mapper/testvg_testlv 3G
lvresize -L 3G /dev/mapper/testvg-testlv
vgreduce testvg /dev/sdc1
pvremove /dev/sdc1
mount -a
6、 对testlv创建快照,并尝试基于快照备份数据,验正快照的功能
lvcreate -s n testlv_bak -L 1G -pr /dev/mapper/testvg-testlv
7、创建10G的RAID1,要求CHUNK为128K,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
#创建raid 1 sdb3 作为空闲盘
mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb{1,2} -x 1 /dev/sdb3
#创建挂载点与文件系统
cd
mkdir /backup
mkfs.ext /dev/md0
#设置挂载
vim /etc/fstab
UUID=7b6dcdd4-a061-4417-8cbc-f3e9db4e7082 /backup ext4 defaults 0 0
mount -a
8、创建一个可用空间为10G的RAID10设备,要求CHUNK为256K,文件系统为ext4,开机可自动挂载至/mydata目录
mdadm -C /dev/md1 -a yes -l 10 -n 4 -c 256 /dev/sd{d,c,e}2 /dev/sde3
mkfs.ext4 /dev/md1;mkdir /mydata
mount /dev/md1 /mydata/
blkid
echo "UUID=4b01a7a7-65bc-4941-bf17-2875cbb4faf8 /mydata ext4 default 0 0" >> /etc/fstab
9、静态配置网卡IP,centos/ubuntu实现
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
IPADDR=192.168.1.240
NETMASK=255.255.255.0
GETWAY=192.168.1.254
DNS1=114.114.114.114
DNS2=61.166.150.123
10、图文并茂解释TCP/IP 3次握手4次断开
三次握手:
概念:指在发送数据的准备阶段,服务器和客户端之间需要三次交互
第一次握手:建立连接时,客户端向服务器发送一个SYN包,并进入SYN_SENT状态,等待服务器确认
第二次握手:当服务器收到客户端的请求后,此时要给客户端给一个确认信息ACK,同时发送SYN包,此时服务器进入 SYN_RECV状态
第三次握手:客户端收到服务器发的ACK+SYN包后,向服务器发送ACK,发送完毕之后,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手
四次挥手:
概念:所谓四次挥手就是说关闭TCP连接的过程,当断开一个TCP连接时,需要客户端和服务器共发送四个包确认
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态
第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序 号),服务器进入CLOSE_WAIT状态
第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态
第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个AKC给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手
11、网卡绑定bond0的实现
由于是虚拟机环境,因此使用mod=1主备方式部署:
- 创建并编辑bond0网卡的配置文件
[root@cenos8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.1.200
PREFIX=24
GATEWAY=192.168.1.254
DNS=114.114.114.114
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
2.编辑eth0网卡的配置文件(eth0是修改网卡名后的结果):
[root@cenos8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
UUID=cb1fe6ac-a6b6-403b-bb6b-1fad857ab3cc
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
- 编辑eth1网卡的配置文件:
[root@cenos8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
UUID=5f7978ac-ebda-4a2b-9da5-dbbce969813d
DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
- 执行如下命令激活bond0,由于通过如下方式激活失败,所以直接执行了重启:
#启动从属接口
nmcli con up eth0
nmcli con up eth1
#启动bond0
nmcli con up bond0
-
ip add show
可以看到只有bond0有IP信息
[root@cenos8 ~]# ip add show
<--ommited-->
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 00:0c:29:fa:38:3c brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 00:0c:29:fa:38:46 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:fa:38:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.200/24 brd 192.168.1.255 scope global noprefixroute bond0
valid_lft forever preferred_lft forever
inet6 2409:8a55:d85c:5ae0:20c:29ff:fefa:383c/64 scope global dynamic mngtmpaddr
valid_lft 259098sec preferred_lft 172698sec
inet6 fe80::20c:29ff:fefa:383c/64 scope link
valid_lft forever preferred_lft forever
<--ommited-->
- 确认bond0的状态正常
[root@cenos8 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v4.18.0-305.3.1.el8.x86_64
Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fa:38:3c
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fa:38:46
Slave queue ID: 0
12、实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机
3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现
PS3="请选择功能(1-4)"
select MENU in 免密登录 安装mysql 安装apache 退出;do
case $REPLY in
1)
echo 1;;
2)
echo 2;;
3)
echo 3;;
4)
exit;;
esac