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