第三周作业

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

raid 0

工作原理:数据被分成块,均匀的存在各个硬盘上,相当于提高了访问速度以及带宽。利用率100%,没有冗余性。性能高,可以从多个硬盘同事读写。至少需要两块硬盘

raid 1

工作原理:数据是被镜像到两个或多个硬盘上,具有冗余性,如果是两块硬盘的话利用率只有只有50%多个是1/N。如果一个一盘失效可以从其他硬盘恢复。读性能良好,写性能略低于raid0。至少需要两块硬盘

raid 5

工作原理:将数据进行奇偶校验,并且将数据以及奇偶校验信息交错存储在多个硬盘上。利用率为(N-1)/N,N为硬盘数量,1为存储奇偶校验信息的硬盘。冗余性中等,可以接受一块硬盘损坏。高读性能,中等写性能。至少需要三块硬盘

raid 10

工作原理:实际上是raid1以及raid0的组合。先将原始数据镜像,然后把每个镜像数据分块。利用率50%。冗余性高,可以接受多块硬盘损坏。读写性能高。至少需要四块硬盘

raid 01

工作原理:实际上是raid0以及raid1的组合。先将原始数据分块,然后把块数据镜像。读写性能高,比raid10略低。至少需要四块硬盘

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

pvcreate /dev/sd{b,c,d} -y # 建立pv

vgcreate -s 16M testvg /dev/sdb /dev/sdc # 建立卷组,默认PE为4M,这里指定为16M

[root@localhost yum.repos.d]# vgs

  VG    #PV #LV #SN Attr  VSize  VFree 

  rl      1  2  0 wz--n- <29.00g      0

  testvg  2  0  0 wz--n- <29.97g <29.97g

lvcreate -L 20G -n testlv testvg

[root@localhost yum.repos.d]# lvs

  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root  rl    -wi-ao---- <26.00g                                                   

  swap  rl    -wi-ao----  3.00g                                                   

  testlv testvg -wi-a-----  20.00g

# 逻辑卷创建完成,把testlv扩容至21G

[root@localhost yum.repos.d]# lvextend -L +1G /dev/testvg/testlv

  Size of logical volume testvg/testlv changed from 20.00 GiB (1280 extents) to 21.00 GiB (1344 extents).

  Logical volume testvg/testlv successfully resized.

# 把testlv减少10G

[root@localhost yum.repos.d]# lvreduce -L -10G /dev/testvg/testlv

  No file system found on /dev/testvg/testlv.

  Size of logical volume testvg/testlv changed from 21.00 GiB (1344 extents) to 11.00 GiB (704 extents).

  Logical volume testvg/testlv successfully resized.

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

redhat:rpm文件,rpm包管理器

debian:deb文件,dpkg包管理器

软件包中包含二进制文件、库文件、配置文件、帮助文件。

包的获取途径:镜像光盘文件、系统官方网站、第三方网站。华为,阿里云,清华源等

rpm -qi package.rpm # 查询包的详细信息

rpm -ql package.rpm # 列出包中的文件

rpm -qd package.rpm # 查看包中的文档

rpm -ivh file.rpm # 安装

rpm provides file # 显示文件哪一个包提供的

yum install -y name # dnf等同于yum,-y=yes,-q=静默

yum remove name # 卸载

yum repolist # 显示仓库列表

yum list # 显示包列表



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

yum/dnf工作原理:yum/dnf是c/s原理,在yum/dnf服务端存放rpm包和相关的元数据库,在yum/dnf客户端访问服务器进行安装查询。yum实现是现在服务器上创建yum的rpm包仓库,以及相关的元数据,放在指定的repodata目录下,当客户端下载时,会先自动下载repodata中的元数据,然后查询元数据是否存在相关的包以及所需依赖,然后自动下载安装


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

1,配置ip,路由

2,配置yum源以及安装必要的包

3,配置firewalld

4,创建必要的用户以及禁止ssh的root登录

5,关闭selinux

6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求

1)基于位置变量传递版本号

2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。

3)基于独立函数进行下载包,解压包。

4)基于独立函数进行编译,安装包。

5)基于独立函数完成链接包。

6)启动服务,并输出自定义的语句,安装xxx服务

#!/bin/bash

# 初始化步骤:禁用防火墙,安装开发依赖包

initialize() {

    systemctl stop firewalld

    systemctl disable firewalld

    yum install -y apr-devel gcc make pcre-devel redhat-rpm-config tar

}

# 下载包,解压包

download_and_extract() {

    wget https://mirrors.aliyun.com/apache/httpd/httpd-"$1".tar.gz

    tar -xvf httpd-"$1".tar.gz

    cd httpd-"$1"

}

# 编译,安装包

compile_and_install() {

    ./configure --prefix=/apps/httpd/

    make -j "$(grep -c processor /proc/cpuinfo)" && make install

}

# 链接包

link_package() {

    ln -s /apps/httpd/bin/apachectl /usr/bin/apachectl

}

# 启动服务

start_service() {

    systemctl start httpd

}

# 主函数

main() {

    version="$1"

    initialize

    download_and_extract "$version"

    compile_and_install

    link_package

    start_service

    echo "Httpd服务安装完成,版本号:$version"

}

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

物理层(Physical Layer):负责传输比特流,即将数据转化为物理信号在网络媒介上传输。包括电气特性、物理特性、传输介质类型和连接器类型等规范。

数据链路层(Data Link Layer):负责将数据组成帧,在物理层提供的连接上传输数据。包括帧的开始和结束标志、差错检测等规范。

网络层(Network Layer):负责对数据进行路由选择,决定数据从源节点传输到目标节点所经过的路线。包括IP协议、ICMP协议等规范。

传输层(Transport Layer):负责数据的可靠传输,包括流控制、差错检测和纠正、传输协议等规范。例如TCP(Transmission Control Protocol)协议、UDP(User Datagram Protocol)协议等。

会话层(Session Layer):负责建立、管理和终止会话(Session),使不同设备之间的应用程序能够进行通信。包括会话协议、数据同步等规范。

表示层(Presentation Layer):负责将数据转换为应用程序能够识别和处理的格式。例如,将Unicode编码的字符转换为ASCII码的字符。

应用层(Application Layer):提供网络服务和应用程序与用户之间的接口,包括电子邮件、文件传输、网页浏览等应用。例如HTTP(HyperText Transfer Protocol)协议、FTP(File Transfer Protocol)协议等。

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

# 修改配置文件

vi /etc/sysctl.conf

net.ipv4.ip_local_port_range = 20000 60000

# 使配置文件生效

sysctl -p

# 查看系统当前配置

cat /proc/sys/net/ipv4/ip_local_port_range

20000 60000

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

# 三次握手

发送方和接收方的信息都要有去有回,也就是说必须有发送和回话

当客户端发送建立连接申请,这是客户端的发送信息

当服务器端回复同意建立连接,这既是客户端的回信,也是服务器端的发送

然后客户端再回复服务器端,这就是服务器端的回信

至此,客户端的信息都是有去有回,服务器端的信息也是有去有回,又因为服务器的发送和客户端的回信是一个信息,所以是三次握手

# 四次挥手

同理,所有的断开连接的信息也必须是有去有回的

客户端发送断开连接信息,这是发送

服务器端首先同意断开,回复客户端;但是注意,服务器的回复同意并不代表服务器开始断开,因为很有可能客户端断开,但服务器端的信息还未处理完,此时,客户端的信息有去有回。

当服务器端处理完信息,发送断开连接信息,这是服务器的发送

客户端之前就已经断开了,此刻自然回复同意断开,这是回复服务器端,此时,服务器的断开信息才有去有回

总共四次挥手完成

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

发送端:

1,应用层将数据按照不同的协议(http,ftp,smtp等)打包发送给传输层,并指定ip和端口

2,传输层将应用层发送的数据按照最大数据段长分段,并为每个数据段加上传输层的数据包头,传输层报头,然后将每段发送给网络层

3,网络接收到传输层的数据段,将每段按照最大数据报长分割开,并加上网络层的报头,发送给链路层

4,链路层将网络层的数据包分割成帧,根据目标mac地址进行转发

中间的路由器:

1,接收到链路层的数据报,根据ip将整个数据报转发到指定的端口,前往下一个节点

接收端:

1,链路层接收到数据包,查看mac地址,是自己的就接收,然后整个成完整的数据报,解下包头,发送给网络层

2,网络层接收到数据报,查看ip地址,是自己的就接收,整合成完整的数据包,解下网络层包头,将数据发送给传输层

3,传输层接收到数据包,解下运输层包头,发送到对应端口

4,应用层应用从对应端口接收到数据,根据协议解读数据,显示给用户

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

IP地址是网络中用于标识设备的一种地址,常用的IP地址有A、B、C、D四类,它们的特点和组成如下:

1. A类地址:

A类地址是最常用的IP地址类型,范围从1.0.0.0到126.0.0.0,其中第一个字节的地址范围是1到126。A类地址中第一个字节用于网络地址,后三个字节用于主机地址。A类地址中的默认子网掩码是255.0.0.0,可以支持大量的主机连接。

2. B类地址:

B类地址的范围从128.0.0.0到191.255.255.255,其中第一个字节的地址范围是128到191。B类地址中前两个字节用于网络地址,后两个字节用于主机地址。B类地址中的默认子网掩码是255.255.0.0,可以支持中等规模的网络连接。

3. C类地址:

C类地址的范围从192.0.0.0到223.255.255.255,其中第一个字节的地址范围是192到223。C类地址中前三个字节用于网络地址,后一个字节用于主机地址。C类地址中的默认子网掩码是255.255.255.0,可以支持小规模的网络连接。

4. D类地址:

D类地址是用于多播的地址,范围从224.0.0.0到239.255.255.255,其中第一个字节的地址范围是224到239。D类地址中前四个字节用于标识多播组地址,不用于标识特定的网络或主机。

IP地址一般由四个字节组成,每个字节表示为一个十进制数,在IPv4中每个字节的取值范围是0到255。四个字节之间用“.”分隔。例如,IP地址192.168.0.1就是一个C类地址,其中前三个字节表示网络地址,最后一个字节表示主机地址。IP地址的组成和分类有助于进行网络规划和管理,同时也为不同规模的网络提供了不同的地址空间。

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

子网掩码是18,表示前18位是网络字段

201.222.200.111转为二进制数为:

11001001.11011110.11001000.01101111

网络段是前18位,客户端范围即:

11001001 11011110 11 => 201.222.11000000 000000-201.222.11111111.11111111

网络段是:

201.222.192.0/18

子网范围是:

201.222.192.1/18-201.222.255.254/18

主机数是后14位:

16383-2=16381个主机数

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

10.0.1.1的二进制是:00001010.00000000.00000001.00000001

网段是:10.0.0.0/16

10.0.2.2的二进制是:00001010.00000000.00000010.00000010

网段是:10.0.2.0/24

当A给B发送消息时:

A用自己的子网掩码去对B的IP求网段,得到:10.0.0.0/16;在同一个网段,可以通信

当B给A发送消息时:

B用自己的掩码去对A的ip求网段,得到  :10.0.1.0/24;不在一个网段,不能通信

所以A给B发信息,B可以收到

但是B给A发信息,A收不到

14. 如何将10.0.0.0/8划分32个子网?

求每个子网的掩码,主机数。

10.0.0.0转为二进制是:

00001010.00000000.00000000.00000000

子网掩码是8,表示前8位是网络位,后面24位是主机位,由于要划分位32个子网,需要从主机位借5位,网络位达到13位,主机位是19位

所以子网范围:

(00001010.00000)(000.00000000) -> (00001010.11111)(000.00000000)

10.0.0.0/13 -> 10.248.0.0/13

掩码是:255.248.0.0

各个子网的主机数是:

每个子网的主机位都是19位:

0000000000000000000-1111111111111111111

0-524287

除去不可用的2个主机,一共524285个主机数

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


ifconfig eth0 up  启用网卡

IP地址修改(centos) 先进入cd /etc/sysconfig/network-scripts/目录下创建配置文件

DEVICE=eth0

NAME=eth0

BOOTPROTO=dhcp

保存后nmcli connection reload 加载配置文件

在执行nmcli connection up eth0 (此方法为自动获取地址)

以下配置为自动获取地址

DEVICE=eth0

NAME=eth0

#BOOTPROTO=dhcp

BOOTPROTO=static

IPADDR=10.0.0.151

PREFIX=24

GATEWAY=10.0.0.1

DNS1=180.76.76.76



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

TYPE=Ethernet                    # 类型,以太网

NAME=eth0                          # connection名称

DEVICE=eth0                        # 网卡名称

BOOTPROTO=static/dhcp              # IP获取方式,设置为静态或DHCP

IPADDR=10.0.0.150             # IP地址

NETMASK=255.255.255.0              # 子网掩码

GATEWAY=192.168.1.1                # 网关地址

DNS1=8.8.8.8                        # DNS服务器1

DNS2=8.8.4.4                        # DNS服务器2

ONBOOT=yes                        # 开机自启动

USERCTL=yes                        # 用户控制

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

# 创建bond0配置文件

[root@localhost ~]# nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.75.200/24 ipv4.gateway 192.168.75.2 ipv4.dns 8.8.4.4

# 将两个网卡接入bond0

[root@localhost ~]# nmcli connection add type bond-slave ifname ens160 master bond0

[root@localhost ~]# nmcli connection add type bond-slave ifname ens224 master bond0

# 查看配置文件

[root@localhost ~]# nmcli connection show

NAME              UUID                                  TYPE      DEVICE

ens160            f5a25af5-45db-4971-921b-515681adc9e0  ethernet  ens160

ens224-tmp        d6f55800-54c1-4a1f-ba9a-fd47f269c21d  ethernet  ens224

bond0              c6aabf14-62c9-4adb-82e3-32b93f3b4bd1  bond      bond0 

virbr0            137677e9-ec3d-4657-99e8-10fd69f0388b  bridge    virbr0

bond-slave-ens160  3e841ea8-887a-48b5-91b9-ee320d9d859b  ethernet  --   

bond-slave-ens224  51aa2f97-ce2d-4ac0-b173-c2dac52fe390  ethernet  --   

test              b8946c02-09d8-426e-8a2f-ffd9d4be94e4  ethernet  --

# 启动bond0需要先启动slave,再启动bond0配置,注意,此时可能会断网

[root@localhost ~]# nmcli connection up bond-slave-ens224

[root@localhost ~]# nmcli connection up bond-slave-ens160

[root@localhost ~]# nmcli connection up bond0

# 查看bond0是否生效

[root@localhost ~]# ip a

2: ens160: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000

    link/ether 00:0c:29:68:1b:3e brd ff:ff:ff:ff:ff:ff

3: ens224: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000

    link/ether 00:0c:29:68:1b:3e brd ff:ff:ff:ff:ff:ff

5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:0c:29:68:1b:3e brd ff:ff:ff:ff:ff:ff

    inet 192.168.75.200/24 brd 192.168.75.255 scope global noprefixroute bond0

      valid_lft forever preferred_lft forever

    inet6 fe80::1c93:6971:8d2d:3b0c/64 scope link noprefixroute

      valid_lft forever preferred_lft forever

# 查看内核中生效的bond0配置

[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: ens224

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: ens224

MII Status: up

Speed: 10000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:68:1b:3e

Slave queue ID: 0

Slave Interface: ens160

MII Status: up

Speed: 10000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:68:1b:34

Slave queue ID: 0

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

ifconfig | grep 'inet ' | awk '{print $2}'

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

#!/bin/bash

net=10.0.0.

for i in {1..254};do

     {

     ip=$net$i

     ping -c 3 -w 3 $ip &> /dev/null

     if [ $? -eq 0 ];then

         echo $ip is ok

  else

        echo $ip is not ok

  fi

  }&

done

wait

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、自建yum仓库,分别为网络源和本地源 准备工作:挂载本地光盘 查看:df -h,看到sr0,说明就挂载上去了 ...
    断桥烟雨旧人殇_fbc7阅读 191评论 0 0
  • 1. 尝试基于gcc命令说明 c语言编译过程。 c程序代码>预处理>编译>汇编>链接 2. 总结程序包管理器有哪些...
    浑树阅读 150评论 0 0
  • 第三周作业 1, 图文并茂说明 RAID0、RAID1、RAID10、RAID01、RAID5 等原理 1.1 R...
    叁白白白阅读 207评论 0 0
  • 1、redis服务配置文件详解 bind 0.0.0.0 #监听地址,可以用空格隔开后多个监听IP protect...
    安德鲁内曼阅读 93评论 0 0
  • 1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来...
    布格雷斯阅读 447评论 0 0