第三周作业

1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

raid 0 是将多块硬盘串联在一起当做一块大硬盘使用,数据依次存储到每个硬盘中,存储容量是所有硬盘容量的总和。读写能力成倍提升,没有冗余能力和容错能力,空间利用率100%,至少需要两块硬盘。如果其中任何一块损坏则整个数据都会破坏。

raid 1 也称镜像卷,最少使用两块硬盘或2的倍数的硬盘数量。保存数据时,数据完整的保存在一块硬盘上,在另一块硬盘上生成镜像文件即以复制备份的形式保存在另一块硬盘上。存储容量是两块盘总容量的一半,利用率为50%,读性能有所提升,但写性能下降,有冗余能力,其中一块盘损坏不影响文件的完整性。

raid 5 最少使用3块硬盘,类似于raid 4,不同之处在于,raid 4是其中一块固定的硬盘用来保存校验位,而raid 5是保存在每个磁盘上,每块硬盘既有数据也有校验位。raid 5读写性能都有所提升,可用磁盘空间为磁盘总数-1,允许最多一块硬盘损坏。

raid 10不是独立的级别,是由raid 0和raid 1两个级别组合而成,需要最少4块硬盘。先将两块硬盘组成raid 1,再把两个raid 1组成raid 0。raid 10读写性能都有所提升,可用磁盘空间为总磁盘数的一半,每组镜像最多允许坏一块硬盘,即不同镜像中共允许坏2块硬盘。

raid 01类似于raid 10,需要最少4块硬盘,先将两块硬盘组成raid 0,再把两个raid 0组成raid 1。

raid 10和raid 01在数据安全上raid 10要更可靠一些,而且在磁盘发生故障后,raid 10的读取速度要高于raid 01,因为raid 01底层是raid 0,一旦坏一块硬盘则与其同一组的另一块磁盘也将无法读取数据,而raid 10 底层是raid 1,一组内坏一块另一块依然可以使用,所以更推荐使用 raid 10。


2. 完成对LVM磁盘扩容及缩容示例。

扩展LV时,分两种情况:

情况一,当VG有足够空间时可直接扩展LV

例:扩展LV并重置文件系统大小   lvextend -r -l +100%free  /dev/testvg/log_lv

情况二,当VG没有足够空间,需要先扩展VG,再扩展LV。

例:(1)添加硬盘 /dev/sdc并创建PV               

pvcreate /dev/sdc

(2)扩展VG

vgextend testvg /dev/sdc

(3)扩展LV并重置文件系统大小

lvextend -r -L +5G /dev/testvg/log_lv

缩容

例:(1)卸载

umont /log

(2)检测文件系统

fsck -f /dev/testvg/log_lv

(3)缩减文件系统(只支持ext4,不支持xfs)

resize2fs /dev/testvg/log_lv 10G

(4)缩减LV

lvreduce -L 10G /dev/testvg/log_lv(会提示有风险,输入y确定后才能完成)

(5)重新挂载

mount -a 

df -h


3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。

主流的程序包管理器

redhat:rpm文件, rpm 包管理器              debian:deb文件, dpkg 包管理器

包文件组成

(1)包内的文件 (2)元数据,如:包的名称,版本,依赖性,描述等 (3)可能会有包安装或卸载时运行的脚本

程序包获取途径

(1)系统发行的光盘或官网 (2)第三方组织提供 (3)软件项目官方站点 (4)搜索引擎 

(5)自己制作,将源码文件,利用工具如rpmbuild,fpm等工具制作成rpm包文件

rpm 常用命令选项:

-i  安装软件 -V 验证模式  -v 显示附加信息  -U 安装或升级 -F 升级软件 -e 卸载 -q 查询模式   

-h 以###显示程序包管理执行进度

适用于查询模式(-q)的常用子选项

-a:列出所有通过rpm或yum安装在本机的软件名称    -f:查看该文件由哪个程序包安装生成

-p rpmfile:针对尚未安装的软件包文件做查询操作   -c:列出已安装在本机的指定软件的配置文件

-d:列出已安装在本机的指定软件包含的文档    -i:列出已安装在本机的指定软件的详细信息

-l:列出指定的程序包安装后生成的所有文件

yum常用命令选项

-h 帮助       -y 当安装过程提示选择全部为yes       -q 不显示安装过程

yum install 安装软件     yum info 查看包信息      yum remove 卸载包

yum history 查看yum包管理历史          yum list 查看包列表 

yum provides | whatprovides feature1 [feature2]  查看指定的特性(可以是某文件)是由哪个程序包所提供,文件要写全路径,而不只是文件名,否则可能无法查询到

apt常用命令选项

apt install 安装软件包 apt remove 移除软件包  apt purge  移除软件包及配置文件

apt update 刷新存储库索引 apt upgrade 升级所有可升级的软件包

apt search 搜索应用程序   apt show  显示安装细节 

apt depends 查询软件依赖那些包    apt rdepends 查询软件被那些包所依赖


4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。

工作原理:yum/dnf是基于C/S模式,yum服务器存放rpm包和相关包的元数据库,yum客户端访问yum服务器进行查询或安装等。

实现过程:现在yum服务器上创建yum repository,在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

#搭建仓库内部服务器

yum install httpd -y —— systemctl enable --now httpd —— 

mkdir -p  /var/www/html/rockylinux/8/{BaseOS,AppStream} —— ls /misc/cd —— 

cp -r  /misc/cd/AppStream/  var/www/html/rockylinux/8/ ——

cp -r  /misc/cd/BaseOS/  var/www/html/rockylinux/8/

#yum客户端配置

vim test.repo

[BaseOS]

name=BaseOS

baseurl=file:///var/www/html/rockylinux/8/BaseOS

gpgcheck=0

[AppStream]

name=AppStream

baseurl=file:///var/www/html/rockylinux/8/AppStream

gpgcheck=0

#从阿里云上下载extras源和epel源

[extras]

name=extras

baseurl=https://mirrors.aliyun.com/rockylinux/8/extras/x86_64/os/

gpgcheck=0

[epel]

name=epel

baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/

gpgcheck=0

yum clean all  更新缓存

yum reposync --repoid=extras --download-metadata -p /var/www/html/rockylinux/8/

yum reposync --repoid=epel --download-metadata -p /var/www/html/rockylinux/8/

#在另一台虚拟机上搭建仓库供公司内部使用

vim test.repo

[BaseOS]

name=BaseOS

baseurl=http://10.0.0.150/rockylinux/8/BaseOS/

gpgcheck=0

[AppStream]

name=AppStream

baseurl=http://10.0.0.150/rockylinux/8/AppStream/

gpgcheck=0

[extras]

name=extras

baseurl=http://10.0.0.150/rockylinux/8/extras/

gpgcheck=0

[epel]

name=epel

baseurl=http://10.0.0.150/rockylinux/8/epel/

gpgcheck=0

5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu

最小化安装——关闭防火墙和SELINUX——配置YUM源——安装常用软件——快照


6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务

CPUS=`grep -c processor  /proc/cpuinfo`

HTTPD_VERSION=2.4.59

HTTPD_FILE=http-${HTTPD_VERSION}.tar.gz

INSTALL_DIR=/apps/httpd

./etc/os-release

if [[ $ID =~ rhel|rocky|centos ]];then

    systemctl disable --now firewalld

    yum -y install gcc make apr-devel apr-util-devel openssl=devel pcre-devel reahat-rpm-config bzip2 wget

elif [ $ID = 'ubuntu' ];then

    apt update

    apt -y install gcc make libapr1-dev libaprutil1-dev libpcre3-dev libssl-dev 

fi

if [ ! -f ${HTTPD_FILE} ];then

    wget https://dlcdn.apache.org/httpd/${HTTPD_FILE} || { echo "下载失败!" ; exit 20; }

fi

tar xf ${HTTPD_FILE} -C /usr/local/src

cd /usr/local/src/httpd-${HTTPD_VERSION}

./configue --prefix={INSTALL_DIR} --enable-ssl --disable-status

make -j $CPUS && make install

ln -s /apps/https/bin/apachectl  /usr/local/bin

apachectl start && echo "安装成功!"

7. 总结开放系统互联OSI模型,每层作用及对应的协议。

应用层    常见的一些服务应用程序产生或接收到的数据都是在应用层。

表示层    为应用层产生的数据提供数据转换类的服务,如编码、格式转换,数据压缩、加密与解密等。

会话层    负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

传输层    管理两个节点之间的数据传输,确保数据被可靠地传输到目标地址。在传输层有两种协议,UDP和TCP协议。

网络层    决定数据的路径选择和转寄,将网络表头加至数据包(加上源IP和目标IP地址),以形成报文。因为数据包有了目标IP地址,根据路由规则,可知道将这个数据包怎么传递出去以及怎么找到目标主机。另一方面,数据包中还有源IP地址,使得对方主机回应的时候,可以将对方产生的数据根据这个源IP地址路由回来,使得自己能够收到对方的响应数据。

数据链路层    互连设备之间传送和识别数据帧,负责网络寻址、错误侦测和改错。

物理层    负责管理电脑通信设备和网络媒体之间的互通。在物理层,网卡会将数字信号转变成电信号传递给网线(或其它数据传输介质),物理层处理后得到的数据是二进制数据。


8. 调整动态端口范围为20000-60000

#cat /proc/sys/net/ipv4/ip_local_port_range

#echo 20000 60000 > /proc/sys/net/ipv4/ip_local_port_range

#cat /proc/sys/net/ipv4/ip_local_port_range


9. 总结TCP包头结构,TCP三次握手,4次挥手。

(1)TCP包头结构

TCP协议首部前20个字节是固定的一些字段,20字节之后有一段可选字段,长度可变。

1,前4个字节是源端口字段和目标端口字段,每个字段2字节。源端口和目标端口是用16位表示的,可推算计算机的端口个数为2^16,65536。

2,序号占用4字节,表示本报文段所发送数据的第一个字节的编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0开始。

3,确认号占用4字节,它是等待发送方发送下个数据包的起始字节。

4,数据偏移表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。由于数据偏移最大是4比特位,它能描述的范围是0-15,所以最大值是60字节,去掉固定的20字节,也就说明可选字段的长度最多只能是40字节。

5,保留字段,目前还未定义功能的字段,占用6个比特位。

6,URG位,占用1个比特位,其值为0或1,当为1时表示这是紧急数据,需要尽快发送,而不是按原来的编号顺序传输。

7,ACK位,占用1个比特位,其值为0或1,当为1时才表明前面的ack确认号字段是有效的,当ACK=0时,确认号字段无效。TCP要求当连接建立完成之后,ACK字段总是设置为1.

8,PSH位,占用1个比特位,其值为0或1。当为1时则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中。

9,RST位,占用1个比特位,其值为0或1。当为1时表明需要重新建立TCP连接,所以这会导致先释放连接。这可能是因为连接出线了差错,或者其它原因。

10,SYN位,占用1个比特位,其值为0或1。在建立连接时使用,用来同步序号。当SYN=1ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文,此时结合ACK即可判断是请求还是响应。

11,FIN位,占用1个比特位,其值为0或1。当为1时表明请求释放TCP连接。

12,窗口,2字节,表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据。这个字段的意义是为了保证接收速度较慢时,让发送速度也缓下来,否则接收方的Recv Buffer存放不下。接收方可能随时会动态调整窗口值,从而让发送方也能动态按需发送一定量的数据。

13,校验和,2字节。该字段会对TCP首部和TCP数据部分都做校验。

14,紧急指针,2字节,只有在URG=1时才有意义,该字段指出紧急数据的字节数。

15,可选字段,这部分是固定20字节之后的,长度可变。

根据网络层IP数据包最大长度是1500字节,IP首部固定部分20字节,TCP首部固定20字节,剩下的就是TCP数据部分,最大是1460字节。

(2)TCP三次握手:首先是服务端B的服务进程已经监听在某个端口上,监听之后等待客户端A建立TCP连接。

1,当A想要和B建立TCP连接时,首先会发生一个连接请求报文给B。在这个请求报文中,SYN=1,ACK=0,seq=x。当A发送完SYN包后,它将进入SYN_SENT状态。

2,当B收到该报文后,如果B确认与A建立TCP连接,那么B需要回复A。回复时,SYN=1,ACK=1,ack(确认号)=x+1,seq=y。当B发送完ACK包后,它将进入SYN_RECV状态。

3,当A收到B回复报文后,也会向B回复一个ACK包,此时,SYN=0,ACK=1,seq=x+1,ack=y+1。A发送完之后就进入ESTABLISHED状态,B收到A的ACK包之后也将进入ESTABLISHED状态,到此TCP连接就建立完成。

(3)四次挥手:首先两端开始释放TCP连接之前,都已经处于ESTABLISHED状态,假设现在A端开始请求释放连接。

1,A首先发送一个TCP首部中FIN位置为1的包给B端,假设此时序号是u,即seq=u。发送之后A将从ESTABLISHED状态转为FIN-WAIT-1状态。

2,B收到FIN包后发一个回复给A。回复时,设置ACK=1,ack=u+1,同时设置序号seq=v,发送完之后服务端进入CLOSE-WAIT(半关闭)状态。这个阶段A到B方向的连接已经释放,A不能再发送传输数据给B,但B到A方向的连接还没有关闭,它可以发送数据给A,A也会接收。

3,当A收到B的ACK包之后,它将进入FIN-WAIT-2,等待B发起从B到A方向的连接关闭请求。

4,当B确认已经没有数据发送给A后,B开始主动关闭从B到A方向的TCP连接,这时会发送一个FIN包,同时ACK设置为1,ack保持不变等于u+1,而seq则为已知新值w,因为进入CLOSE-WAIT之后,B可能还发送了一些数据,B发送完这个FIN+ACK包之后,将进入LAST-ACK状态。

5,当A收到B的FIN+ACK包之后,需要对B发送的关闭请求做出回复,回复时,ACK=1,seq=u+1,ack=w+1。当发送完这个ACK包之后,A不会立即关闭,而是进入TIME-WAIT阶段等待一段时间(2倍的MSL时长)

6,当B收到A的回复ACK包之后,意味着B到A方向的连接关闭已经确认;当A等待了2MSL的时长之后,将真正关闭连接。


10. 总结主机到主机的包传递过程。

1,主机A想给主机B发送数据,必须知道主机B的MAC地址;

2,如果主机A的ARP表中没有主机B的MAC地址,那么主机A需要获取默认网关的MAC地址,然后通过路由器来获取主机B的MAC地址;

3,如果主机A的ARP表中没有默认网关的MAC地址,需要通过ARP来获取MAC地址;

4,主机A获取到默认网关的MAC地址之后,将数据封装成帧发送给路由器;

5,如果路由器的ARP表中没有主机B的MAC地址,路由器需要通过ARP来获取主机B的MAC地址;

6,路由器获取到主机B的MAC地址之后,将数据重新封装成帧发送给主机B;

7,主机B发送回复数据给主机A,因为所有MAC地址已知,所以不用采用ARP,而是直接发送



11. 总结IP地址 A, B, C, D 类,并解析IP地址的组成。

A 类地址的网络位占用一个字节,B类占用两个字节,C类占用三个字节。

A类地址  网络部分 主机部分 主机部分 主机部分

B类地址  网络部分  网络部分 主机部分 主机部分

C类地址  网络部分  网络部分 网络部分  主机部分

D类地址  组播地址

A类地址的网络部分最高位是0,所以IP第一部分的格式是0xxx xxxx,

范围是0000 0000=0,0111 1111=127,即A类地址第一部分的十进制范围是0到127,实际上是1-126。

B类地址的网络部分最高位是10,范围是1000 0000=128,1011 1111=191,即B类地址的第一个字节取值位128-191。

C类地址的网络部分最高位是110,范围是1100 0000=192,1101 1111=223,即C类地址的第一个字节取值位192-223。

D类地址的第一个字节范围是224-239,被用于组播地址。

所以 1-126.x.x.x是A类地址,128-191.x.x.x是B类地址,224-239.x.x.x是C类地址,224-239.x.x.x是D类地址。


12. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。

一个网段中最多的主机数量=2^主机ID位-2

主机数=2^(32-18)-2=16382

子网掩码11111111.11111111.11000000.0,11000000=2^7+2^6即192,所以子网掩码为255.255.192.0。


13. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?

A——B

如果A与B通信,先用A的IP地址与自己的子网掩码对位与,即

10.0.1.1

255.255.0.0

00001010.00000000.00000001.00000001

11111111.11111111.00000000.00000000

00001010.00000000.00000000.00000000   即网络ID为10.0.0.0

然后用B的IP地址与A的子网掩码对位与,即

10.0.2.2

255.255.0.0 ,得到10.0.0.0=10.0.0.0

因此如果A和B通信,两者在同一个网段。

B——A

当B与A通信时,先用B的IP地址与自己的子网掩码对位与,即

10.0.2.2

255.255.255.0  得到10.0.2.0

然后用A的IP地址与B的子网掩码对位与,得到10.0.1.0≠10.0.2.0

因此如果B和A通信,两者不在同一网段。


14. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。

划分子网数=2^(网络ID向主机ID借位数)  

所以32=2^5   网络ID需向主机ID借5位

10.0.0.0/8

10.00000.000.0.0    10.0.0.0/13 

10.00001.000.0.0    10.8.0.0/13  

.......

......

10.11111.000.0.0     10.248.0.0/13

子网掩码均为255.248.0.0  每个子网主机数=2^(32-13)-2=524286


15. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。

vim ifcfg-eth0

DEVICE=ens160
NAME=ens160
BOOTPROTO=static
IPADDR=10.0.0.150
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2
DNS2=180.76.76.76
DNS3=119.29.29.29
ONBOOT=yes


16. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。

DEVICE=ens160                      设备名
NAME=ens160                         此配置文件应用到的设备

TYPE=Ethernet                        设定接口类型

HWADDR=                               对应设备的MAC地址

DEFROUTE=yes                      设置为yes时,DHCP将设置默认路由

IPV4_FAILURE_FATAL=yes     指定如果IPV4配置失败,是否将此视为致命错误
BOOTPROTO=static                激活此设备时使用的地址配置协议
IPADDR=10.0.0.150                 指明IP地址
PREFIX=24                               网络ID的位数
GATEWAY=10.0.0.2                 设定默认网关
DNS1=10.0.0.2                         第一个DNS服务器地址
DNS2=180.76.76.76                 第二个DNS服务器地址
DNS3=119.29.29.29                 第三个DNS服务器地址
ONBOOT=yes                          系统启动时是否激活此设备

17. 基于配置文件或命令完成bond0配置。

首先创建master角色

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

DEVICE=bond0

TYPE=bond

NAME=bond0

BOOTPROTO=none

IPADDR=1.1.1.1

PREFIX=24

BONDING_OPTS="mode=1  miimon=100"

配置网卡文件

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

DEVICE=eth1

NAME=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

ONBOOT=yes

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

DEVICE=eth2

NAME=eth2

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

ONBOOT=yes

重启网络服务

nmcli connection reload ; nmcli connection up eth1 ;nmcli connection up eth2


18. 通过ifconfig命令结果找到ip地址.

输入ifconfig,在网卡下的inet后面即是ip地址。


19.  使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。

NET=10.0.0.0

for i in {1..254};do

    { ping -c1 -W1 $NET.$i &> /dev/nul && echo $NET.$i is up;let up++; } || { echo $NET.$i is down;let down++; };l

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值