第三周作业

1. 图文并茂说明raid0,raid1, raid10, raid01, raid5等原理。

 
        raid 0是以 chunk 单位,读写数据,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。
但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失
读、写性能提升、
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:1+

 

 

        raid 1也称为镜像, 两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读
取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。
读性能提升、写性能略有下降
可用空间:1*min(S1,S2,...)
磁盘利用率 50%
有冗余能力
最少磁盘数:2+

 

 

 

 异或运算值存于不同磁盘上
磁盘利用率 (N-1)/N
有冗余能力
至少3块硬盘才可以实现
 

 

 

 

 raid 10不是独立的级别,是由raid-0和raid-1两个级别组合而成,需最少4块硬盘,先分别将2块硬盘组成2个raid-1,
再把两个raid-1组成raid-0。
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+

 

 

 

raid 01也不是独立的级别,是由raid-0和raid-1两个级别组合而成,需最少4块硬盘,先分别将2块硬盘组成2个raid-0,
再把两个raid-0组成raid-1。
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
 

2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG,要求PE大小为16M,而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

#分区类型必须修改为8e Linux LVM
pvcreate /dev/sd{b,c,d}1
vgcreate -s 16m testvg /dev/sd{b,c,d}1
lvcreate -L 5g -n testlv testvg
mkfs.ext4 /dev/testvg/testlv
mkdir /users
mount /dev/testvg/testlv /users

 

 

 

3. 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d/目录至自己的家目录。

useradd archlinux -d /users/archlinux
su - archlinux ;cp -r /etc/pam.d/ .

4. 扩展testlv至7G,要求archlinux用户的文件不能丢失

lvextend -r -L 7g /dev/testvg/testlv

lvextend -L 7g /dev/testvg/testlv
resize2fs /dev/testvg/testlv

 

5. 收缩testlv至3G,要求archlinux用户的文件不能丢失

umount /users
e2fsck -f /dev/testvg/testlv
resize2fs /dev/testvg/testlv 3g
lvreduce -L 3g /dev/testvg/testlv
mount -a

 

6. 对testlv创建快照,并尝试基于快照备份数据,验正快照的功能

#创建快照
lvcreate -n testlv-snapshot -s -L 1g -p r /dev/testvg/testlv mkdir /snap
mount /dev/testvg/testlv-snapshot /snap/
#新建文件后,恢复快照
touch "check.txt" /users/
umount /snap
umount /users
lvconvert --merge /dev/testvg/testlv-snapshot
mount -a
ls /users

7. 创建10G的RAID1,要求CHUNK为128K,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录

#分区类型必须修改为fd Linux raid autodetect
mdadm -C /dev/md1 -c 128K -a yes -l 1 -n 2 -x 1 /dev/sd{c,d,e}2
mdadm: specifying chunk size is forbidden for this level mkfs.ext4 /dev/md1
mkdir /backup
vim /etc/fstab

/dev/md1 /backup ext4 defaults 0 0

mount -a

8. 创建一个可用空间为10G的RAID10设备,要求CHUNK为256K,文件系统为ext4,开机可自动挂载至/mydata目录

mdadm -C /dev/md2 -c 256K -a yes -l 10 -n 4 /dev/sd{b,c,d,e}3
mkfs.ext4 /dev/md2
mkdir /mydata
vim /etc/fstab

/dev/md2 /mydata ext4 defaults 0 0

mount -a

9. 静态配置网卡IP,centos/ubuntu实现

#centos
vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet NAME=ens33 DEVICE=enss BOOTPROTO=none IPADDR=192.168.50.133 NETMASK=255.255.255.0 GATEWAY=192.168.50.1
#ubuntu
vim /etc/netplan/01-netcfg.yaml

network:
  version:2
  ethernets:
    ens33:
      addresses:
      - 192.168.50.200/24
      gateway:192.168.50.1

10. 图文并茂解释TCP/IP 3次握手4次断开。

TCP三次握手

 

 

A:在吗?

B:在的。干嘛?

A:在的话,我开始发包了。

 1、当客户端A想和服务器B建立TCP连接时,首先会向B发送一个请求报文。

 2、当B收到该报文后,如果B确认与A建立TCP连接,那么B需要回复A确认报文,同时也请求A建立连接。

 3、当A收到B发送的请求、确认报文,,也会向B发送一个回复确认报文,A发完之后就进入连接状态。

 

 

 

 

 A:我要走了

B:好的。

B:再见。

A:再见。

 1、A首先会向B发送一个请求关闭TCP连接的报文。A:ESTABLISHED→→FIN-WAIT-1

 2、B收到A发送的请求关闭TCP连接的报文后,也会发送给A回复报文。B:CLOSE-WAIT

       这个阶段A不能再发送数据给B,但B到A方向的连接还没有关闭,B给A发送数据,A还会接收。A:FIN-WAIT-2

 3、当B确认已经没有数据发送给A时,B开始主动关闭从B到A的TCP连接,发送一个FIN包。B:LAST-ACK

 4、当A收到B发送的关闭确认包之后,需要对B发送的关闭请求做出回复,当发出这个确认回复包之后进入TIME-WAIT阶段等待2倍的MSL时间,真正关闭。 

                                                                                                                      

11. 网卡绑定bond0的实现

#现有2块网卡,ens33,ens37
#首先创建master角色
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
#添加slave到此master上
nmcli con add type bond-slave ifname ens33  master bond0
nmcli con add type bond-slave ifname ens37  master bond0
#启动bond之前,要求先启动slave,最后再激活master
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens37
nmcli con up bond0

12. 实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机

3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现

os_type(){
        if grep -i -q ubuntu /etc/os-release;then
            echo ubuntu
        elif grep -i -q centos /etc/os-release;then
            echo centos
        else
            echo "os can not be supported!"
        fi
}



        RED="echo -e \E[1;31m"
        GREEN="echo -e \E[1;32m"
        END="\E[0m"


install_mysql(){
if [ `os_type` = centos ] ;then
        yum install mysql -y
elif [ `os_type` = ubuntu ] ;then
        apt install mysql -y
else
        echo "os can not be supported"
fi


${GREEN}安装成功$END
}


install_httpd(){
if [ `os_type` = centos ] ;then
        yum install httpd -y
elif [ `os_type` = ubuntu ] ;then
        apt install apache2 -y
else
        echo "os can not be supported"
fi


${GREEN}安装成功$END
}


ssh_expect(){
    NET=192.168.50
    user=root
    password=Aa111111
    IPLIST="
    100
    101
    238
    "
    for ID in $IPLIST ;do
        ip=$NET.$ID

    expect <<eof
spawn ssh $user@$ip
expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" {send "$password\n" }
        "#" { send "exit\n" }   
}
eof
done
}

PS3="请选择功能(1-4): "
select menu in 安装mysql 安装apache 免密钥登录主机 退出;do
       case $REPLY in
       1)
       install_mysql
       ;;
       2)
           install_httpd
              ;;
       3)
           ssh_expect
       ;;
       4)  
             break
        ;;       
       *)
       echo "输出错误"
 esac
done

 

 


 

posted @ 2022-07-03 10:30  帅气的工藤新一  阅读(116)  评论(0)    收藏  举报