第三周作业
1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现
RAID 0:
工作原理: 数据被分成块,然后分布到多个硬盘上,以提高读写性能。
利用率: 高,因为数据被分散存储在多个硬盘上。
冗余性: 低,没有冗余,一个硬盘故障会导致所有数据丢失。
性能: 高,由于数据并行读写,提供了较高的吞吐量。
硬盘数量: 至少2个。
RAID 1:
工作原理: 数据被完全复制到多个硬盘上,实现冗余备份。
利用率: 中,由于数据被完全复制,总容量为单个硬盘容量的一半。
冗余性: 高,一个硬盘故障不会导致数据丢失。
性能: 读性能较好,写性能略低。
硬盘数量: 至少2个。
RAID 5:
工作原理: 将数据分块存储在多个硬盘上,同时使用奇偶校验位进行数据冗余。
利用率: 高,总容量为(硬盘数量 - 1)乘以单个硬盘容量。
冗余性: 中,一个硬盘故障不会导致数据丢失。
性能: 读性能良好,写性能较好。
硬盘数量: 至少3个。
RAID 10:
工作原理: 将数据同时使用镜像和分条带的方式存储在多个硬盘上,结合了RAID 1和RAID 0的特点。
利用率: 中,总容量为硬盘数量的一半。
冗余性: 高,可以容忍一个硬盘故障。
性能: 读性能和写性能都较好。
硬盘数量: 至少4个。
RAID 01:
工作原理: 将RAID 0的条带集合镜像,结合了RAID 0和RAID 1的特点。
利用率: 低,总容量为硬盘数量的一半。
冗余性: 低,一个硬盘故障可能导致数据丢失。
性能: 读性能和写性能都较好。
硬盘数量: 至少4个。
2. 完成对LVM磁盘扩容及缩容示例
扩展逻辑卷示例
1.创建逻辑卷lv-gx1,lv-gx2
2.查看逻辑卷
3.扩展逻辑卷lv-gx1为20G
4.使用resize2fs命令对lv-gx1进行文件系统同步
缩容逻辑卷示例
1.取消逻辑卷挂载
2.使用fsck检测逻辑卷文件系统
3.缩减lv-gx1文件系统大小
4.缩减逻辑卷lv-gx1大小
5.重新挂载
3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例
主流的程序包管理器:
redhat : rpm 文件 , rpm 包管理器, rpm : Redhat Package Manager , RPM Package Manager
debian : deb 文件 , dpkg 包管理器
获取程序包途径:
系统发版的光盘或官网:
CentOS 镜像:
https://www.centos.org/download/
http: //mirrors.aliyun.com
https: //mirrors.huaweicloud.com/
https: //mirror.tuna.tsinghua.edu.cn/
http: //mirrors.sohu.com
http: //mirrors.163.com
Ubuntu 镜像:
http://cdimage.ubuntu.com/releases/
http: //releases.ubuntu.com
第三方组织提供
Fedora-EPEL : Extra Packages for Enterprise Linux
https://fedoraproject.org/wiki/EPEL
https: //mirrors.aliyun.com/epel/
https: //mirrors.cloud.tencent.com/epel/
SCL : Software Collections ,提供较高版本的第三方软件包
Community Enterprise Linux Repository : http://www.elrepo.org ,支持最新的内核和硬件相关
包
软件项目官方站点:
http://yum.mariadb.org/10.4/centos8-amd64/rpms/
http: //repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64/
搜索引擎:
http://pkgs.org
http: //rpmfind.net
http: //rpm.pbone.net
https: //sourceforge.net/
apt包管理:
apt 特有的命令
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表
APT包索引配置文件
/etc/apt/sources.list
/etc/apt/sources.list.d
安装包以及删除包:
搜索安装包:
查看仓库中有哪些版本的安装包:
4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用
yum/dnf是基于C/S模式,yum服务器存放rpm包和相关包的元数据库,yum客户端访问yum服务器进行安装或查询等
yum实现过程
先在yum服务器上创建yum仓库,仓库中存储众多rpm包,以及包相关的元数据,当yum客户端使用yum/dnf安装软件包时,会自动下载repodata中元数据,查询元数据对应包的依赖关系,然后下载并安装
搭建私有yum仓库
安装并开启httpd服务
挂载光盘文件
进入/test/BaseOS目录中,复制粘贴文件
修改yum源配置文件
仅下载EPEL源的软件包到指定目录下
yum客户端修改yum源配置文件
5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
1. 更新系统:
确保系统中的所有软件包都是最新的,包括系统内核和其他关键组件。
-
Rocky Linux
sudo dnf update -
Ubuntu
sudo apt update
sudo apt upgrade
2. 设置主机名:
更改主机名以便更好地标识系统。编辑 /etc/hostname 文件并重启系统。
sudo nano /etc/hostname
sudo reboot
3. 配置时区:
设置系统时区,以确保正确的时间戳。
-
Rocky Linux
sudo timedatectl set-timezone Asia/Shanghai -
Ubuntu
sudo dpkg-reconfigure tzdata
4. 配置网络:
检查和配置网络设置,包括静态 IP 地址或 DHCP。
-
Rocky Linux
sudo nano /etc/sysconfig/network-scripts/ifcfg- -
Ubuntu
sudo nano /etc/netplan/01-netcfg.yaml
5. 配置SSH:
如果使用SSH进行远程访问,确保SSH服务器已安装并配置,禁用root登录,使用密钥认证。
-
Rocky Linux
sudo dnf install openssh-server
sudo systemctl enable --now sshd -
Ubuntu
sudo apt install openssh-server
sudo systemctl enable --now ssh
6. 配置防火墙:
配置防火墙规则以保护系统。
-
Rocky Linux
sudo dnf install firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload -
Ubuntu
sudo apt install ufw
sudo ufw allow ssh
sudo ufw enable
6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务
脚本解读
一键安装apache脚本:
7. 总结开放系统互联OSI模型,每层作用及对应的协议
物理层:
作用: 负责传输比特流,主要关注硬件传输介质、电流、电压等物理特性。
协议: IEEE 802.3(Ethernet)、IEEE 802.11(Wi-Fi)、USB、RJ45(Ethernet接口)。
数据链路层:
作用: 提供可靠的点对点通信,通过物理地址(MAC地址)标识网络中的设备。
协议: PPP、HDLC、Ethernet、Wi-Fi。
网络层:
作用: 提供跨网络的数据传输,通过逻辑地址(IP地址)标识网络中的设备。
协议: IP、ICMP、OSPF、BGP。
传输层:
作用: 提供端到端的通信,确保数据的可靠性和完整性。
协议: TCP、UDP、SCTP。
会话层(Session Layer):
作用: 管理用户会话,包括建立、维护和终止会话。
协议: NetBIOS、RPC。
表示层:
作用: 处理数据的格式、编码和加密,确保一个系统的应用层能理解另一个系统发送的信息。
协议: JPEG、ASCII、SSL/TLS。
应用层:
作用: 提供网络服务给用户,是用户与网络通信的接口。
协议: HTTP、FTP、SMTP、DNS(Domain Name System)。
8. 调整动态端口范围为20000-60000
修改/proc/sys/net/ipv4/ip_local_port_range文件的值
9. 总结TCP包头结构,TCP三次握手,4次挥手
至少20字节,最大60字节,源端口和目的端口为16位,范围0-65535
序列号:表示本报文发送数据的第一个字节编号
确认号:表示接收方希望收到发送方下一个报文段的第一个字节编号
数据偏移:表示TCP头部长度,由于TCP头部包含可选部分,所以需要指定TCP报文头部长度
URG:表示TCP报文是否启用紧急指针字段
ACK:表示确认号是否有效
PSH:表示该TCP报文是缓存还是立即提交上层应用
RST:表示连接失败,释放来南京
SYN:表示请求建立连接
FIN:表示通知对端结束连接
窗口:表示允许对方发送的数据量
校验和:提供额外可靠性
紧急指针:标记紧急数据在数据字段中的位置
TCP三次握手
客户端发送SYN置1的TCP连接请求报文,由CLOSED状态变为SYN-SEND状态
服务器收到TCP连接请求报文后,回复SYN和ACK都置1的TCP响应报文,由LISTEN状态变为SYN-RCVD状态
客户端收到TCP响应报文后,发送ACK置1的TCP报文,由SYN-SEND状态变为ESTAB-LISHED状态
服务器收到报文后,由SYN-RCVD状态变为ESTAB-LISHED状态
TCP四次挥手
客户端发送FIN置1的TCP连接断开报文,由ESTAB-LISHED状态变为FIN-WAIT1状态
服务器收到TCP连接断开报文后,发送ACK置1的TCP响应报文,由ESTAB-LISHED状态变为CLOSE-WAIT状态
客户端收到TCP响应报文后,由FIN-WAIT1状态变为FIN-WAIT2状态
服务器向客户端发送完数据后,会发送FIN和ACK置1的TCP连接断开报文,由CLOSE-WAIT状态变为LAST-ACK状态
客户端收到TCP连接断开报文后,回复ACK置1的TCP响应报文,由FIN-WAIT2状态变为TIME-WAIT状态
服务器收到TCP响应报文后,由LAST-ACK状态变为CLOSED状态
服务器等待一定时间,接收到所有数据后,由TIME-WAIT状态变为CLOSED状态
10. 总结主机到主机的包传递过程
1.应用层:源主机上的应用程序产生数据,该数据被传递到应用层。
2.传输层:数据从应用层传递到传输层,其中会根据需要选择使用 TCP 或 UDP 协议。
如果使用 TCP,数据被分割成多个数据段,并在传输层添加序列号和校验和等信息。
如果使用 UDP,数据被封装成数据包,但不进行数据分割和重组。
3.网络层:传输层的数据被传递到网络层,其中会根据目标主机的 IP 地址进行路由。
IP 协议负责将数据包从源主机传递到目标主机,它添加了源和目标 IP 地址,以及 TTL(Time-to-Live)等信息。
4.数据链路层:网络层的数据包被传递到数据链路层,这里会根据目标主机的 MAC 地址进行帧的封装。
数据链路层添加了源和目标 MAC 地址,以及帧检验序列(FCS)等信息。
5.物理层:数据链路层的数据帧被传递到物理层,这里负责实际的物理传输,如电缆、无线信号等。
6.目标主机接收:数据通过物理传输到达目标主机。
物理层接收数据,并将其逐层向上传递至应用层。
源主机和目标主机上的对应层进行相应的解封装、解析和处理。
11. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
A类
范围:0.0.0.0-127.255.255.255
网络位为8位,主机位为24位
掩码:255.0.0.0
私网地址:10.0.0.0-10.255.255.255
B类
范围:128.0.0.0-191.255.255.255
网络位为16位,主机位为16位
掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0
C类
范围:192.0.0.0-223.255.255.255
网络位为24位,主机位为8位
掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0
D类
范围:224.0.0.0-239.255.255.255
IP地址由网络位+主机位组成
12. 201.222.200.111/18计算主机数?子网掩码?说明计算方法
主机数:16382
子网掩码:255.255.192.0
主机数=2^(32-子网掩码)-2
13. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
- A会将自己的IP地址与子网掩码进行与运算,将B的IP地址与自己的子网掩码进行与运算,比较这两个结果是否一致,一致则在同一网段,否则不在同一网段。
- A和B不能通信。
14. 如何将10.0.0.0/8划分32个子网?
划分子网:
网络位向主机位借5位,2^5=32
求每个子网的掩码,主机数:
每个子网的掩码为13(255.248.0.0),主机数为524286
15. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网
修改主机名
hostname(临时修改主机名)
hostnamectl set-hostname(永久修改主机名)
vim /etc/hostname(修改主机名配置文件)
ifconfig
用于查看和配置网卡信息
选项:
-a:查看所有网卡信息
-s:查看网卡摘要信息
ifconfig XX up/down:启用/关闭网卡
示例:查看网卡摘要信息
示例:关闭eth1网卡
route
用于查看,添加,删除路由
route add:添加路由
route del:删除路由
route -n:数字显示
route -v:查看详细信息
示例:添加路由
示例:查看路由
示例:删除路由
ip
ip link set:用于启用/禁用网卡
示例:禁用eth1网卡
ip address:用于查看网卡信息
ip address add:用于新增IP地址
ip address del:用于删除IP地址
ip address flush:用于清空IP地址
ip address change:用于修改IP地址的首选生存时间和失效时间
示例:新增网卡IP地址
示例:删除网卡IP地址
示例:清空网卡IP地址
ip route show:用于查看路由表
ip route add:用于添加路由
ip route del:用于删除路由
ip route flush:用于清空路由
示例:查看路由表
示例:添加路由
示例:删除路由
nmcli
nmcli connection reload:用于重启网络连接
nmcli connection up/down:用于开启/关闭网络连接
nmcli connection show:用于查看网络连接信息
nmcli connection add:用于创建网卡配置文件
nmcli connection del:用于删除网卡配置文件
示例:查看网络连接信息
示例:创建网卡配置文件
示例:删除网卡配置文件
16. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式
DEVICE:设备名
NAME:连接别名
TYPE:接口雷系
BOOTPROTO:获取地址方式,dhcp、static、none
IPADDR:IP地址
PREFIX:网络ID位数
GATEWAY:网关
DNS:域名服务器地址
DOMAIN:主机不完整时,自动搜索的域名后缀
ONBOOT:系统引导时是否激活此设备
17. 基于配置文件或命令完成bond0配置
配置文件
18. 通过ifconfig命令结果找到ip地址
19. 使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线
#!/bin/bash
read -p "主机IP地址:" IP
read -p "子网掩码(1-32):" MASK
N=$[${MASK}%8]
case $N in
1)
M=128
;;
2)
M=192
;;
3)
M=224
;;
4)
M=240
;;
5)
M=248
;;
6)
M=252
;;
7)
M=254
;;
0)
M=255
;;
*)
;;
esac
if [ $MASK -le 8 ];then
A=`echo $IP | awk -F"." '{print $1}'`
elif [ $MASK -le 16 ];then
A=`echo $IP | awk -F"." '{print $2}'`
elif [ $MASK -le 24 ];then
A=`echo $IP | awk -F"." '{print $3}'`
elif [ $MASK -le 32 ];then
A=`echo $IP | awk -F"." '{print $4}'`
fi
let W=A\&M
if [ $MASK -lt 8 ];then
for x in `seq $W $[255-MASK+W]`;do
for y in {0..255};do
for z in {0..255};do
for l in {0..255};do
(ping -c1 -w1 $x.$y.$z.$l &> /dev/null && echo "$x.$y.$z.$l在线" || echo "$x.$y.$z.$l不在线")&
done
done
done
done
elif [ $MASK -eq 8 ];then
for x in {0..255};do
for y in {0..255};do
for z in {0..255};do
pre=`echo $IP | awk -F"." '{print $1}'`
(ping -c1 -w1 $pre.$x.$y.$z &> /dev/null && echo "$x.$y.$z.$l在线" || echo "$x.$y.$z.$l不在线")&
done
done
done
elif [ $MASK -lt 16 ];then
for x in `seq $W $[255-MASK+W]`;do
for y in {0..255};do
for z in {0..255};do
pre=`echo $IP | awk -F"." '{print $1"."$2}'`
(ping -c1 -w1 $pre.$x.$y.$z &> /dev/null && echo "$pre.$x.$y.$z在线" || echo "$pre.$x.$y.$z不在线")&
done
done
done
elif [ $MASK -eq 16 ];then
for x in {0..255};do
for y in {0..255};do
pre=`echo $IP | awk -F"." '{print $1"."$2}'`
(ping -c1 -w1 $pre.$x.$y &> /dev/null && echo "$pre.$x.$y在线" || echo "$pre.$x.$y不在线")&
done
done
elif [ $MASK -lt 24 ];then
for x in `seq $W $[255-MASK+W]`;do
for y in {0..255};do
pre=`echo $IP | awk -F"." '{print $1"."$2}'`
(ping -c1 -w1 $pre.$x.$y &> /dev/null && echo "$pre.$x.$y在线" || echo "$pre.$x.$y不在线")&
done
done
elif [ $MASK -eq 24 ];then
for x in {0..255};do
pre=`echo $IP | awk -F"." '{print $1"."$2"."$3}'`
(ping -c1 -w1 $pre.$x &> /dev/null && echo "$pre.$x在线" || echo "$pre.$x不在线")&
done
elif [ $MASK -lt 32 ];then
for x in `seq $W $[255-MASK+W]`;do
pre=`echo $IP | awk -F"." '{print $1"."$2"."$3}'`
(ping -c1 -w1 $pre.$x &> /dev/null && echo "$pre.$x在线" || echo "$pre.$x不在线")&
done
elif [ $MASK -eq 32 ];then
(ping -c1 -w1 $IP &> /dev/null && echo "$IP在线" || echo "$IP不在线")&
fi