第三周作业
1. 图文并茂说明raid0,raid1, raid10, raid01, raid5等原理。
最少磁盘数:1+
raid 1也称为镜像, 两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读
取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。
读性能提升、写性能略有下降
可用空间:1*min(S1,S2,...)
磁盘利用率 50%
有冗余能力
最少磁盘数:2+
有冗余能力
至少3块硬盘才可以实现
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
可用空间: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