第三周作业

第三周

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

  • RAID 0:条带化(数据分块)但没有冗余,提供较高的读写性能。利用率高 冗余性:低没有冗余 性能高 至少2个硬盘
  • RAID 1:镜像,数据完全复制到另一个驱动器,提供容错能力。利用率中,单个硬盘容量的一半 冗余性:高 性能:较好 至少2个硬盘
  • RAID 5:条带化加分布式奇偶校验,提供数据冗余和读取性能。利用率中,(硬盘数量 - 1)乘以单个硬盘容量 性能:较好 冗余性:中,至少3个硬盘
  • RAID 1+0,将RAID 1镜像组合成RAID 0条带化,提供较高的容错能力和读写性能。利用率中 性能:较好 至少4个硬盘
  • RAID 0+1,将RAID 0条带化组合成RAID 1镜像。 利用率低 性能:较好 至少4个硬盘

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

扩容:

root@cen:~# lvs 							--查看逻辑卷
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv-gx1    testvg    -wi-a-----   2.00g
  mysql_lv  testvg    -wi-ao----   8.00g
  ubuntu-lv ubuntu-vg -wi-ao---- <99.00g

root@cen:~# lvextend -L 5G /dev/testvg/lv-gx1		--扩展逻辑卷
  Size of logical volume testvg/lv-gx1 changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume testvg/lv-gx1 successfully resized.
root@cen:~# resize2fs /dev/testvg/lv-gx1		----刷新

缩容:

root@cen:~# e2fsck -f /dev/testvg/mysql_lv
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/testvg/mysql_lv: 12/524288 files (0.0% non-contiguous), 318352/2097152 blocks
root@cen:~# resize2fs /dev/testvg/mysql_lv 5G
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/testvg/mysql_lv to 1310720 (4k) blocks.
The filesystem on /dev/testvg/mysql_lv is now 1310720 (4k) blocks long.

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

ubuntu: apt \ dpkg

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

    列出可更新的软件包及版本信息:apt list --upgradeable

    升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  • 安装指定的软件命令:sudo apt install <package_name>

    安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

  • 更新指定的软件命令:sudo apt update <package_name>

  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

  • 删除软件包命令:sudo apt remove <package_name>

  • 清理不再使用的依赖和库文件: sudo apt autoremove

  • 移除软件包及配置文件: sudo apt purge <package_name>

  • 查找软件包命令: sudo apt search

  • 列出所有已安装的包:apt list --installed

  • 列出所有已安装的包的版本信息:apt list --all-versions


  • dpkg -i 全称的安装命令,必须全称

  • dpkg -L 列出安装的路径,可以查看怎么使用, package只需要前边的名字就可以

  • dpkg -r 卸载, package只需要前边的名字就可以

  • dpkg -P 卸载软件及配置文件

  • dpkg -s 显示软件安装的状态,看是不是安装了

rocky: yum

  • 列出所有可更新的软件清单命令:yum check-update

  • 更新所有软件命令:yum update

  • 仅安装指定的软件命令:yum install <package_name>

  • \仅更新指定的软件命令:yum update <package_name>

  • 列出所有可安裝的软件清单命令:yum list

  • 删除软件包命令:yum remove <package_name>

  • 查找软件包命令:yum search

  • 清除缓存命令:

    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
  • yum/dnf/apt总结程序包获取途径:光盘、镜像仓库

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

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

[root@localhost ~]# mkdir /testG
[root@localhost ~]# mount /dev/sr0 /testG/
mount: /testG: WARNING: source write-protected, mounted read-only.
[root@localhost ~]# cd /testG/
[root@localhost testG]# ls
BaseOS  EFI  images  isolinux  LICENSE  media.repo  minimal
[root@localhost testG]# cd /var/www/html
[root@localhost html]# mkdir -p CentOS8/BaseOS
[root@localhost html]# ls
CentOS8
[root@localhost html]# cd CentOS8/BaseOS/
[root@localhost BaseOS]# cp -r /testG/BaseOS/ BaseOs
[root@localhost BaseOS]# ls
BaseOs

[root@hb-cz-node1-0-1 ~]# vim /etc/yum.repos.d/bash.repo 
#修改客户机配置
[BaseOS]
name=baseos
baseurl=http://10.0.0.10/Cent0S8/Base0S
gpgcheck=0
enable=1

[root@hb-cz-node1-0-1 network-scripts]# yum update
nginx stable repo                                             1.4 kB/s | 2.9 kB     00:02
baseos                                                         15 kB/s | 257  B     00:00
Dependencies resolved.
==============================================================================================
 Package                    Arch        Version                          Repository      Size
==============================================================================================

yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具。下面分别介绍两部分工作原理。

  • yum服务器

    所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张"清单",这张"清单""就是描述每个rpm包的spec文件中信息。

  • yum client端

    client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件(即yum源),这些配置文件指定了yum服务器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache)

etc/yum.repos.d下面所有以.repo结尾的配置文件为yum源,yum源相当与一个指向软件仓库的连接,通过yum安装软件,实际上是通过链接进入软件仓库获取到相应软件包再安装的。

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

  1. 更新软件包

  2. 设置主机名

  3. 配置网络

  4. 配置ssh服务

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

#!/bin/bash
#
#********************************************************************
#Author:            wangxiaochun
#QQ:                29308620
#Date:              2022-04-08
#FileName:          install_nginx.sh
#URL:               http://www.wangxiaochun.com
#Description:       The test script
#Copyright (C):     2022 All rights reserved
#********************************************************************
NGINX_VERSION=1.20.2  
INSTALL_DIR=/apps/nginx		
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz || { echo "下载失败!";exit 20;  }  
#下载指定版本的压缩包
tar xf nginx-${NGINX_VERSION}.tar.gz -C /usr/local/src
# 解压到/usr/local/src
yum -y install gcc openssl-devel pcre-devel
#安装依赖软件
cd /usr/local/src/nginx-${NGINX_VERSION}
./configure --prefix=${INSTALL_DIR} --with-http_ssl_module
#用configure配置编译项目
make -j `grep -c processor /proc/cpuinfo`&& make install
#编译
if [ $? -ne 0 ];then
#看编译是否成功
    echo Install nginx is failed!
    exit 10 
else
    echo "Install nginx is finished!" 
fi
/apps/nginx/sbin/nginx
#启动
echo "<h1>welcome to M49 nginx website </h1>" > ${INSTALL_DIR}/html/index.html

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

物理层:
解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
数据链路层:
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。
网络层:
计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。
该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。
传输层:
当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。简单来说,传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。
会话层:
虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。
表示层:
表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。

应用层:
应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。

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

[root@localhost ~]# echo 20000 60000 > /proc/sys/net/ipv4/ip_local_port_range
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
20000   60000

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

TCP三次握手:客户端发送syn=1的请求,服务器将syn=1和ack=1报文发送给客户,客户收到后发送ack=1给服务器,服务器收到后开始传输数据。

4次挥手:

  1. 客户端发送关闭连接的报文段,FIN 标志位1,请求关闭连接,并停止发送数据。序号字段 seq = x (等于之前发送的所有数据的最后一个字节的序号加一),然后客户端会进入 FIN-WAIT-1 状态,等待来自服务器的确认报文。
  2. 服务器收到 FIN 报文后,发回确认报文,ACK = 1, ack = x + 1,并带上自己的序号 seq = y,然后服务器就进入 CLOSE-WAIT 状态。服务器还会通知上层的应用程序对方已经释放连接,此时 TCP 处于半关闭状态,也就是说客户端已经没有数据要发送了,但是服务器还可以发送数据,客户端也还能够接收。
  3. 客户端收到服务器的 ACK 报文段后随即进入 FIN-WAIT-2 状态,此时还能收到来自服务器的数据,直到收到 FIN 报文段。
  4. 服务器发送完所有数据后,会向客户端发送 FIN 报文段,各字段值如图所示,随后服务器进入 LAST-ACK 状态,等待来自客户端的确认报文段。
  5. 客户端收到来自服务器的 FIN 报文段后,向服务器发送 ACK 报文,随后进入 TIME-WAIT 状态,等待 2MSL(2 * Maximum Segment Lifetime,两倍的报文段最大存活时间) ,这是任何报文段在被丢弃前能在网络中存在的最长时间,常用值有30秒、1分钟和2分钟。如无特殊情况,客户端会进入 CLOSED 状态。
  6. 服务器在接收到客户端的 ACK 报文后会随即进入 CLOSED 状态,由于没有等待时间,一般而言,服务器比客户端更早进入 CLOSED 状态。

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

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

A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。

B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。

C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。

D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户[1] 。

ip地址同网络地址:主机地址两部分组成

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

主机数:2^14-2

子网掩码:255.255.192.0

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

1010 0000 0001 0001 1010 0000 0010 0010

1111 1111 0000 0000 1111 1111 0000 0000

1010 0000 0000 0000 1010 0000 0000 0000

网络地址相同所以A向B发数据在同一网段


1010 0000 0001 0001 1010 0000 0010 0010

1111 1111 1111 0000 1111 1111 1111 0000

1010 0000 0001 0000 1010 0000 0010 0000

网络地址相同所以B向A发数据不是同一网段

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

划分子网:网络位向主机位借5位,2^5=32

求每个子网的掩码,主机数:每个子网的掩码为13,主机数为2^19-2

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

[root@hb-cz-node1-0-1 network-scripts]# hostname --显示主机名
hb-cz-node1-0-1.jiaotong.cn

[root@localhost CentOS8]# hostnamectl set-hostname hb-cj-rocky --设置主机名
[root@localhost CentOS8]# hostname
hb-cj-rocky

ip a -查看网络信息

#添加ip
[root@hb-cz-node1-0-1 network-scripts]# ip addr add 10.0.0.11/24 dev ens160
[root@hb-cz-node1-0-1 network-scripts]# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:89:4d:44 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 10.0.0.128/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1145sec preferred_lft 1145sec
    inet 10.0.0.11/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe89:4d44/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
#删除ip
[root@hb-cz-node1-0-1 network-scripts]# ip addr del 10.0.0.11/24 dev ens160
[root@hb-cz-node1-0-1 network-scripts]# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:89:4d:44 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 10.0.0.128/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1061sec preferred_lft 1061sec
    inet6 fe80::20c:29ff:fe89:4d44/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@hb-cz-node1-0-1 network-scripts]# ifconfig --查看网卡信息
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.128  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:fe89:4d44  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:89:4d:44  txqueuelen 1000  (Ethernet)
        RX packets 250746  bytes 327890033 (312.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 142359  bytes 10895996 (10.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 24  bytes 2574 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 2574 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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

[root@localhost CentOS8]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
DEVICE=ens160
#设备名
NAME=ens160-con
#网卡名字
IPADDR=10.0.0.10
#ip地址
PREFIX=24
#子网掩码
GATEWAY=10.0.0.2
#网关
DNS1=10.0.0.2
#dns1 地址解析
DNS2=8.8.8.8  
#dns2 地址解析

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

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

[root@localhost CentOS8]# ifconfig | sed -n -r "s/inet ([0-9.]+).*/\1/p"
        10.0.0.10
        127.0.0.1

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

[root@localhost yuwanhai]# vim /home/yuwanhai/IpScan

#!/bin/bash
#author zsk_john
>online_ip.txt
for i in {1..255}
do
{
        ip=10.0.0.$i
        ping -c1 -W1 $ip &>/dev/null
        if [ $? -eq 0 ];then
        echo "$ip " >> online_ip.txt
        fi

}&
done
wait
echo "success"
[root@localhost yuwanhai]# chmod +x /home/yuwanhai/IpScan
[root@localhost yuwanhai]# ls
IpScan  nginx-1.24.0  nginx-1.24.0.tar.gz  online_ip.txt  openwrt  openwrt-main.zip
[root@localhost yuwanhai]# cat online_ip.txt
10.0.0.10
10.0.0.2
10.0.0.130
10.0.0.128
[root@localhost yuwanhai]#

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值