第三周作业

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

什么是RAID?

简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此操作系统只会把它当做一个实体硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合,由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为普通用户的一个选择,特别是需要打容量存储空间的工作,如:视频与音频制作。

RAID功能实现

(1)提高IO能力,磁盘并行读写

(2)提高耐用性,磁盘冗余算法来实现

 1.1.1 RAID-0

以chunk=64k单位,读写数据,因为读写时都可以并行处理,所以在所有的级别中,RAID-0的速度是最快的。但是RAID-0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,素有数据都会丢失

读、写性能提升

可用空间:N*min(s1,s2......)

无容错能力

最少磁盘数:1+

 1.1.2 RAID-1

也称为镜像,两组以上的N个磁盘相互镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID-0相同,另外写入速度有微小的降低。

                          

读性能提升、写性能略有下降

可用空间:1*min(s1,s2.....)

磁盘利用率 50%

有冗余能力

最少磁盘:2+

1.1.3 RAID-5

      

 读、写性能提升

可用空间:(N-1)*min(s1,s2...)

有容错能力:允许最多1块磁盘损坏

最少磁盘:3,3+

1.1.4 RAID-10

       

 读、写性能提升

可用空间:N*min(s1,s2..)/2

有容错能力:每组镜像最多只能坏一块

最少磁盘数:4,4+

1.1.5 RAID-01

    

多块磁盘先实现RAID0,在组合成RAID1

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

   1、以/dev/sdb1和/dev/sdb2为例 

2、实现逻辑卷

需要安装lvm2包

yum -y install lvm2

3、具体操作

#创建物理卷
pvcreate /dev/sdb1 /dev/sdb2
#为卷组分配物理卷
vgcreate -s 16M testvg /dev/sdb{1,2}  #指定PE大小默认4M
#从卷组创建逻辑卷  ,从卷组取出5G作为testlv
lvcreate -L 5G -n testlv testvg
#格式逻辑卷并指定文件系统
mkfs.ext4 /dev/testvg/testlv
#永久挂载testlv逻辑卷到/users
#(1)查看ID
blkid
(2)将ID复制到/etc/fstab
(3)挂载 mount -a
(4)df -h 查看

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

mkdir /users
useradd archlinux -d /users/archlinux
su - archlinux
cp -a /etc/pam.d  /users/archlinux/

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

 扩展前的文件夹内容

扩展后

#扩展空间和扩展文件系统
lvextend -r -L +2G /dev/testvg/testlv

 

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

分区、创建、调整、查看、格式化、挂载、卸载、空间查看
1、RAID1的空闲空间为1 * min(S1,S2),两个磁盘和一个空闲盘
 
2、分区规划:3个分区,每个最小为20G。
 
3、使用用户空间中程序mdadm,调用md模块完成创建raid
 
4、格式化、挂载、开机实现自动挂载
1. 创建raid1
    [root@localhost ~] # mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 -c 128K /dev/sdb[b-d]
2. 格式化
mke2fs -t ext4 /dev/md0
3.开机挂载至 /backup ,编辑fstab文件
UUID=7ec5f0a0-260c-4c9e-8f28-ed37b4dcc1ed /backup              ext4    defaults         0 0
4.挂载
mount -a
5. 查看空间信息
df -hP

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

分区、创建、调整、查看、格式化、挂载、卸载、空间查看

1、RAID10的空闲空间为N /2  * min(S1,S2,S3,S4),4个磁盘

2、分区规划:2个分区,每个最小为5G。

3、使用用户空间中程序mdadm,调用md模块完成创建raid

4、格式化、挂载、开机实现自动挂载

1、管理磁盘

[root@localhost ~] fdisk  /dev/sda

t 5,6,7,8 fd

w

[root@localhost ~] partx -a /dev/sda

[root@localhost ~] partx -a /dev/sda

2、创建raid10

1)、查看已经存在的RAID设备的名字,为了避免重名

[root@localhost ~] # cat /proc/mdstat

md0 : 

2)、创建md10

[root@localhost ~] mdadm -C /dev/md1 -a yes -l 10 -n 4 -c 256K /dev/sda{5,6,7,8}

[root@localhost ~] mdadm -D /dev/md1

      Raid Level : raid10

     Update Time : Sat Aug 12 10:48:15 2017

           State : clean, resyncing 

  Active Devices : 4

Working Devices : 4

  Failed Devices : 0

   Spare Devices : 0

          Layout : near=2

      Chunk Size : 256K

   Resync Status : 41% complete

            Name : localhost.localdomain:1  ( local  to host localhost.localdomain)

            UUID : ea7d9cd0:53b9d9a3:fd5a08f9:1f65eac3

          Events : 6

     Number   Major   Minor   RaidDevice State

        0       8        5        0      active  sync  set -A    /dev/sda5

        1       8        6        1      active  sync  set -B    /dev/sda6

        2       8        7        2      active  sync  set -A    /dev/sda7

        3       8        8        3      active  sync  set -B    /dev/sda8

[root@localhost ~] cat /proc/mdstat

Personalities : [raid1] [raid10] 

md1 : active raid10 sda8[3] sda7[2] sda6[1] sda5[0]

       10496512 blocks super 1.2 256K chunks 2 near-copies [4 /4 ] [UUUU]

       [==================>..]  resync = 91.7% (9631424 /10496512 )

       

============== 等待进度完成 ====================

  

3、格式化

[root@localhost ~] mkfs.ext4 /dev/md1

4、开机挂载至 /mydata ,编辑fstab文件

1)、查看UUID

[root@localhost ~] blkid /dev/md1

/dev/md1 : UUID= "ebbc94c3-66b9-433b-967b-c84e44ef35b0"  TYPE= "ext4" 

2)、以UUID挂载

[root@localhost ~] vim + /etc/fstab

UUID= "ebbc94c3-66b9-433b-967b-c84e44ef35b0"  /mydata  ext4 defaults 1 2

5、创建 /mydata 目录

[root@localhost ~] # mkdir /mydata

6、测试挂载

[root@localhost ~] mount -a -v

mount : UUID=5009dc18-28f5-4b32-8c7c-0ea1328ea224 already mounted on  /boot

mount  /dev/mapper/myvg-lv_home  already mounted on  /home

mount  /dev/mapper/myvg-lv_usr  already mounted on  /usr

mount  /dev/mapper/myvg-lv_var  already mounted on  /var

mount : tmpfs already mounted on  /dev/shm

mount : devpts already mounted on  /dev/pts

mount : sysfs already mounted on  /sys

mount : proc already mounted on  /proc

mount : LABEL= 'MY222'  already mounted on  /backup

/dev/md1  on  /mydata  type  ext4 (rw)

7、查看空间信息

[root@localhost ~] df -lhP

Filesystem                Size  Used Avail Use% Mounted on

/dev/mapper/myvg-lv_root    48G  520M   45G   2% /

tmpfs                     122M     0  122M   0%  /dev/shm

/dev/sda1                  477M   33M  419M   8%  /boot

/dev/mapper/myvg-lv_home   4.7G  9.9M  4.5G   1%  /home

/dev/mapper/myvg-lv_usr     15G  710M   13G   6%  /usr

/dev/mapper/myvg-lv_var    9.5G   88M  9.0G   1%  /var

/dev/md0                   9.3G   23M  9.0G   1%  /backup

/dev/md1                   9.8G   23M  9.3G   1%  /mydata

[root@localhost ~] 

-l  local  只显示本地设备

-h human-readable

-P print  for  POSIX FORMAT

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

9.1 centos修改静态网卡

9.1.1 修改网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

9.2 修改文件内容

(静态IP地址,子网掩码,网关地址必须和虚拟网络编辑器里面的配置一样,使用的是Vmware)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=static #设置网卡获得IP地址的方式
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fd5902fd-e37b-4477-9351-7631a9f89695"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.26.6         #IP地址
NETMASK=255.255.255.0  #网络掩码
NETWORK=192.168.26.255 #网关

#重启网络配置

service network restart

[root@localhost ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]

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

 

 三次握手总结

三次握手是TCP连接的建立过程。在握手之前,主动打开连接的客户端结束CLOSE阶段,被动打开的服务器也结束CLOSE阶段,并进入LISTEN阶段。随后进入三次握手阶段:

第一次握手:首先客户端向服务器发送一个SYN包,并等待服务器确认,其中:

  • 标志位为SYN,表示请求建立连接
  • 序号为Seq = x(x一般取随机数)
  • 随后客户端进入SYN-SENT阶段

第二次握手:服务器收到客户端发来的SYN包后,对该包进行确认后结束LISTEN阶段,并返回一段TCP报文,其中:

  • 标志位为SYN和ACK,表示确认客户端的报文Seq序号有序,服务器能正常接收客户端发送的数据,并同意创建新连接;
  • 序号为Seq = y;
  • 确认为ACK = x + 1,表示收到客户端的序号Seq并将其值加1作为自己确认号ACK的值,随后服务器端进入SYN-RECV阶段

第三次握手:客户端接收到发送的SYN+ACK包后,明确了从客户端到服务器的数据传输是正常的,从而结束SYN-SENT阶段,并返回最后一段报文。其中:

  • 标志位ACK,表示确认收到服务器端同意连接的信号
  • 序号为seq=x+1,表示收到服务器的确认号ACK,并将其值作为自己的序号值;
  • 确认号为ack=y+1,表示收到服务器端序号seq,并将其值加1作为自己的确认号ack的值
  • 随后客户端进入ESTABLISHED。

当服务器端收到来自客户确认收到服务器数据的报文后,得知从服务器到客户端的数据传输是正常的,从而结束SYN-RECV阶段,进入established阶段,从而完成三次握手

四次挥手总结

 四次挥手总结:

挥手请求可以是client端,也可以是server端发起的,我们假设是client端发起:

  • 第一次挥手:client端发起挥手请求,想server端发送标志位是FIN报文段,设置序列号seq,此时,client端进入FIN_WAIT_1状态,这表示client端没有数据要发送给server端了
  • 第二次挥手:server端收到了client端发送的FIN报文段,向client段返回一个标志位是ack的报文段,ack设为seq+1,client端进入FIN_WAIT_2状态,server端告诉client端,我确认并同意你的关闭请求
  • 第三次挥手:server端向client端发送标志位是FIN的报文段,请求关闭连接,同时client端进入LAST_ACK状态
  • 第四次挥手:client端收到server端发送的FIN报文段,向server端发送标志位是ack的报文段,然后client端进入TIME_WAIT状态,server端收到client端的ack报文段以后,就关闭连接。此时,client端等待2MSL的时间后依然没有收到回复,则证明server端已正常关闭,那好,client端也可以关闭连接了。

11. 网卡绑定bond0的实现

1、添加新网卡,配置如图所以都选NAT模式

 

 2、创建bongding设备的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0

NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.26.20
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

 vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME=eth0
UUID="fd5902fd-e37b-4477-9351-7631a9f89695"
DEVICE=eth0
ONBOOT="yes"
MASTER=bond0
SLAVE=yes

 vim /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME=eth1
UUID="fd5902fd-e37b-4477-9351-7631a9f89695"
DEVICE=eth1
ONBOOT="yes"
MASTER=bond0
SLAVE=yes

3、通过nmcli实现bonding

#添加bonding接口
[root@localhost network-scripts]# nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.26.20/24
Connection 'mybond0' (e052c1a0-60a1-453c-bc25-1ed8d7def1c0) successfully added.
#添加从属接口

[root@localhost network-scripts]# nmcli con add type bond-slave ifname eth0 master bond0
Connection 'bond-slave-eth0' (c4d3c73b-5d6b-4c47-bec3-42e208211207) successfully added.
[root@localhost network-scripts]# nmcli con add type bond-slave ifname eth1 master bond0
Connection 'bond-slave-eth1' (782df219-6fb1-4137-b946-4ea6275f074d) successfully added.

#要启动绑定,则必须首先启动从属接口,远程连接会中断

nmcli con up bond-slave-eth0

nmcli con up bond-slave-eth1

#启动绑定

nmcli con up mybond0

#查看是否成功,eth0/1都没有IP地址,只有bond0有。

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2:
eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:d8:1e:33 brd ff:ff:ff:ff:ff:ff
3:
eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:d8:1e:33 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:d8:1e:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.26.20/24 brd 192.168.26.255 scope global noprefixroute bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::3da7:cd6b:355e:85dd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

5、查看主从网卡和断网实验

[root@localhost ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0        #再次看到eth0是主的
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:d8:1e:33
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:d8:1e:3d
Slave queue ID: 0 

 网卡eth0断开

 重新查看主网卡是eth1

[root@localhost ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

 

12. 实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机
3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现

#设置输出字体颜色
function color() {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1"&& $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $2 = "failure" -o $2 = "1"  ] ;then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}
 
#设置ssh免密有登录
function ssh_host(){
    
    function execute(){
        password="123456"
        while [ "$1" ] ;do
            expect <<EOF
            set timeout 20
            spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$1\n
            expect {
                "yes/no" { send "yes\n";exp_continue }
                "password" { send "$password\n" }
            }        
            expect "#" { send "exit\n" }
            expect eof
EOF
            color $1 0
            shift
 
        done
    
    }
    
    while true ;do
    declare -a ips    
        while true ;do
            read -p "输入IP,q/Q退出:" ip
            [[ $ip =~ ^(q|Q)$  ]]&&break
            [[ $ip =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]&&ips[${#ips[*]}]=$ip||{ echo "IP不合法,请重新输入";continue ; }
                        
        done        
    execute ${ips[*]}        
    read -p "是否继续远程主机,输入q/Q退出,其他任意键继续!: " var 
    [[ $var =~ ^q|Q$  ]]&&break
done
    
}
 
#$1:ID,$2:softname
function soft_install(){
    if [ $1 = 'rocky' -o $1 = "centos" ] ;then
        yum  -y install $2&&color "$1" 0||color "$1" 1
        
    elif [ $1 = 'ubuntu' ] ;then
        apt update
        apt -y install $2&&color "$1" 0||color "$1" 1
        
    else 
        echo "不支持此系统"
        
    fi
}
 
#自动化菜单
function auto_script(){
. /etc/os-release
sum=0
PS3="请选择(1-5): "
select MENU in 安装mysql 安装apache  安装nginx 免密远程登录主机传输秘钥 退出;do
case $REPLY in
1)    
    soft_install $ID "mysql"    
;;
2)
    soft_install $ID "httpd"
;;
3)
    soft_install $ID "nginx"
;;
4)
    ssh_host
;;
5)
    echo "退出"
    break
;;
*)
    echo "选择有误,重新选择"
;;
esac
done
 
}
 
auto_script 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!改善深层神经网络的方法有很多,以下是一些常见的方法: 1. 使用更好的激活函数:传统的激活函数如Sigmoid、tanh等可能存在梯度消失或爆炸的问题。可以尝试使用ReLU、Leaky ReLU、ELU等激活函数,以减轻这些问题。 2. 使用批标准化(Batch Normalization):批标准化对网络的输入进行标准化,有助于加快网络的训练速度,并且可以缓解梯度问题,使得更深层的网络也能够训练得更好。 3. 使用残差连接(Residual Connections):残差连接可以帮助信息在网络中更好地流动,从而减轻梯度消失的问题。通过将某些层的输出与输入相加,可以使得网络更易于训练。 4. 使用更好的优化算法:传统的梯度下降算法如随机梯度下降(SGD)可能存在训练速度慢、易陷入局部最优等问题。可以尝试使用更高级的优化算法如Adam、RMSprop等,以加快模型的收敛速度。 5. 添加正则化:过拟合是深层神经网络常见的问题之一。可以通过添加正则化项如L1正则化、L2正则化等来限制模型的复杂度,防止过拟合的发生。 6. 数据增强:通过对训练数据进行一些随机的变换,如平移、旋转、缩放等,可以增加模型的泛化能力,防止过拟合。 这些方法只是改善深层神经网络的一部分,具体的选择和调整需要根据具体问题和数据集来进行。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值