磁盘,软件管理以及网络
yum/dnf服务端存储rpm软件包的元数据yum客户端查询yum服务器进行安装/bin/bash#1.决定使用http让远程客户端连接本机,一共有三种方式,http,https,ftp#2.misc光盘本身带有AppStream和BaseOS,所以可以直接使用#想配extras,server先配,然后再制作extras源[BaseOS]gpgcheck=0gpgcheck=0[extras]gp
1.总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
主流的包管理器为rpm(for red hat),dpkg(debian)
以及对rpm进行管理的包管理工具yum,负责解决rpm包管理器无法解决的包依赖问题
dnf:同为rpm包管理工具,用来替代yum
apt:deb包管理工具
1.1包文件组成
包内的文件
元数据:包的名称,版本,依赖
安装卸载脚本
1.2包文件的获取途径
系统发行光盘
第三方组织提供的:EPEL源
包官方网站,下载到本地解压编译
1.3rpm,yum,apt命令选项
rpm选项搭配:
-ivh #一般不会使用rpm包进行直接安装,一般会使用rpm命令进行包查询
-qa #查询系统中已安装的包
-qi #查询指定软件包的详细信息
-ql #列出指定软件包的所有文件和目录
-qf #显示指定文件属于哪个软件包
-qc #列出指定软件包的配置文件
yum选项搭配:
install #下载指定软件包及其依赖项
update #升级系统中可升级的软件包
remove #卸载软件包,及其不再被其他包依赖的依赖包
search #搜索关键字软件包
list #列出可下载的软件包
info #查看指定软件包的信息
clean #清除缓存
-y #同意下载
apt选项搭配
update #更新软件源列表中的软件包最新的元数据
remove #卸载软件包
purge #连软件包及其配置文件一起删除
list #作用同yum
search #作用同yum
install #作用同yum
2.简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
yum/dnf服务端存储rpm软件包的元数据
yum客户端查询yum服务器进行安装
#!/bin/bash
#1.决定使用http让远程客户端连接本机,一共有三种方式,http,https,ftp
yum -y install httpd && systemctl enable --now httpd
#2.misc光盘本身带有AppStream和BaseOS,所以可以直接使用
yum -y install autofs && systemctl enable --now autofs
ls /misc/cd
mkdir -p /var/www/html/rockylinux/8/{BaseOS,extras,AppStream}
cp -r /misc/cd/BaseOS/ /var/www/html/rockylinux/8/
cp -r /misc/cd/AppStream/ /var/www/html/rockylinux/8/
#想配extras,server先配,然后再制作extras源
cat > /etc/yum.repos.d/server.repo << EOF
[BaseOS]
name=BaseOS-server-config
baseurl=file:///var/www/html/rockylinux/8/
gpgcheck=0
[AppStream]
name=AppStream-server-config
baseurl=file:///var/www/html/rockylinux/8/AppStream
gpgcheck=0
[extras]
name=extras-server-config
baseurl=https://mirrors.aliyun.com/rockylinux/8/extras/x86_64/os/
gpgcheck=0
[epel]
name=EPEL-server-config
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/
gpgcheck=0
EOF
#拉取extras,epel的元数据
dnf reposync --repoid=extras --download-metadata -p /var/www/html/rockylinux/8/
dnf reposync --repoid=epel --download-metadata -p /var/www/html/rockylinux/8/
客户端配置
[BaseOS]
name=baseos
baseurl=http://10.0.0.8/rockylinux/8/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=http://10.0.0.8/rockylinux/8/AppStream
gpgcheck=0
[extras]
name=extras
baseurl=http://10.0.0.8/rockylinux/8/extras
gpgcheck=0
测试
yum repolist查看仓库
3.简要总结apt工作原理
在服务器上复制所有的deb包,然后使用apt分析工具genbasedir对每个deb的包头信息进行分析,并将分析结果存储在deb索引清单文件中,一旦apt服务器中的deb有变动,使用genbasedir更新索引清单
客户端安装或升级时,询问服务器的索引清单文件,从而得到所有有依赖的软件包,并一同下载。当用户使用apt update时,客户端的deb文件就会和服务器端的deb文件进行比对,从而知道哪些包没有安装,哪些已安装或是可以升级的。
4.编译安装nginx的步骤总结
#!/bin/bash
1.更新deb库,下载nginx依赖项
apt update;apt -y install wget make gcc libpcre3-dev openssl libssl-dev zlib1g-dev
2.创建一个不可登录的系统用户由nginx管理
useradd -r -s /usr/sbin/nologin nginx
3.下载软件包
wget https://nginx.org/download/nginx-1.22.1.tar.gz
#wget https://nginx.org/download/nginx-1.24.0.tar.gz
#wget https://nginx.org/download/nginx-1.26.3.tar.gz
4.创建存放目录
mkdir -p /apps/nginx
5.解压
tar xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
6.配置必须要的模块,并且指定安装路径,用户和组
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
7.编译安装
make && make install
8.更改所属用户所属组
chown -R nginx.nginx /apps/nginx
9.创建软链接,原目录名字太长
ln -sv /apps/nginx/sbin/nginx /usr/sbin/nginx
10.创建服务启动脚本,由systemctl管理
mkdir -pv /apps/nginx/run
11.将运行目录的所属主组更改为nginx本身
chown -R nginx.nginx /apps/nginx/run
12.加入服务启动脚本
cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
EOF
13.指定线程存放路径
sed -i 's/^#pid.*/pid \/apps\/nginx\/run\/nginx\.pid;/' /apps/nginx/conf/nginx.conf
14.重新加载systemd
systemctl daemon-reload
systemctl status nginx
5.磁盘存储术语总结: head, track, sector, cylinder.
head | 磁头 | 用于读写数据 |
track | 磁道 | 数据存储在磁道 |
sector | 扇区 | 每个磁道按照512bytes进行划分,就是扇区 |
cylinder | 柱面 | 磁头移动的时候,是一起移动的,如果是6个盘面,则6个磁头对应的磁道是一 致的,这就是柱面 |
6.总结MBR,GPT结构。
分区方式:MBR,GPT
MBR分区:
共有512个字节可供分配,其中
- 0-446bytes:为bootloader系统启动相关
- 64bytes:分区表,每16个字节为一个分区
- 最后两位:标识位
单分区不能超过2T,一个分区最多有16个字节,其中记录开始位置的空间占4个字节,结束位置的空间占四个字节
一个字节8位,4个字节32位,所以最大为2^32个扇区,一个扇区512字节,则最大空间为2^32*512=2T
GPT:
GUID patition table 支持128个分区,使用64位
使用UUID表示磁盘和分区,GPT分区表自动备份在头尾两处,并且有CRC校验位
使用UEFI引导启动操作系统
GPT结构:GPT头,分区表,GPT分区,备份区域
7.总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释),示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
7.1文件系统
负责管理和存储文件信息的软件结构,负责为用户建立文件,存入、读出、修改、转储文件,控制文件的 存取,安全控制,日志,压缩,加密等。
常用文件系统:ext4,xfs,swap
7.11 ext4
ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
理论上支持无限数量的子目录
ext4文件系统使用64位空间记录块数量和 inode数量
ext4的多块分配器支持一次调用分配多个数据块
修复速度更快
7.12 xfs
根据所记录的日志在很短的时间内迅速恢复磁盘文件内容 用优化算法,日志记录对整体文件操作影响非常小 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB 能以接近裸设备I/O的性能存储数据
7.2 mkfs
文件系统管理:
-t #指定文件系统类型
-b #指定block大小
-L #设置卷标
-V #显示创建过程
-m #为超级用户设置的保留磁盘空间百分比
7.3 tune2fs
-l #查看指定文件系统的信息
-L #修改卷标
-m #预留超级用户空间
-U #修改UUID
7.4 xfs_info
显示已挂载的 xfs 文件系统信息
xfs_info mountpoint|devname
7.5 fsck
文件系统修复
在执行修复前,取消文件挂载
-a #自动修复
-r #交互式修改错误
7.6 mount umount
mount /dev/sda1 /sda1 #将名为sda1的目录挂载到sda1的磁盘上去
mount --source /dev/sda2 -o ro /sda2 #只读挂载
umuont /dev/sda1 #取消挂载设备
umuont /sda1 #挂载点取消挂载
lsblk /dev/sda -f #查看
7.7 parted
-l #显示所有硬盘分区信息
parted /dev/sda print #显示指定磁盘的分区信息
parted /dev/sda mklabel gpt #创建gpt分区
parted /dev/sda mkpart primary 1 100 #创建主分区,针对MBR
7.8 fdisk
-l #显示所有设备
子命令:
p #输出分区列表
t #更改分区类型
n #创建新分区
d #删除分区
w #保存并退出
fdisk /dev/sda #为指定的磁盘进行分区管理的操作
7.9 partprobe
用于同步分区表
7.10 swapon,swapoff
-a #激活所有fstab中的交换空间
-s #查看swap空间的使用情况
swapon /swapfile #使用指定文件作为交换空间,还要为该文件创建文件系统
swapoff #关闭交换空间
8.总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
8.1 raid 0
使用一个以上的硬盘,并行写入数据,速度非常快,但是有单点失败的问题,一旦一块硬盘发生故障,则数据丢失
利用率为:100%
8.2 raid 1
镜像写入文件,至少需要两块以上的硬盘,一起写入一样的数据,当一块硬盘损坏,另外一块硬盘可以作为备份,读写速度略微降低
利用率为50%
8.3 raid 5
最少需要3块以上的硬盘,在磁盘中加入校验位,如果一个磁盘损坏,可以根据未损坏磁盘数据和校验位一起计算出损坏的磁盘数据,允许最多一块硬盘损坏
利用率:(磁盘数量-1)/磁盘数量
8.4 raid 1+0
由至少四块硬盘组成,四块硬盘先两两组成raid1,随后组成的raid1再组合成为raid0,允许每组raid1最多损坏一块
利用率=50%
8.5 raid 0+1
多块磁盘先实现RAID0,再组合成RAID1,至少需要4块硬盘。假设使用四块硬盘组成raid01,那么允许损坏的磁盘必须是来自同一raid阵列才能保证数据不丢失。
利用率=50%
9. 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容
LVM允许对卷进行方便操作的抽象层,重新设定文件系统的大小,允许在多个设备间重新组织文件系统
可以弹性的修改LVM容量
基本原理:指定一个设备为物理卷,用一个或多个物理卷组成一个卷组,物理卷是用固定大小的物理区域来定义的。在物理卷之上的逻辑卷是由pe物理区域组成。可以在逻辑卷上创建文件系统并挂载。
1.安装工具
apt -y install lvm2
2.pv管理工具
pvs #显示pv简要信息
pvdisplay #显示详细信息
3.创建pv
pvcreate /dev/device
#pvremove /dev/device #删除
4.添加一块硬盘
5.创建物理卷
pvcreate /dev/sdb
pvs
6.卷组管理工具
vgs
vgdisplay
7.添加卷组
vgcreate -s 16M vgname /dev/sdb /dev/sdc
8.往卷组添加更多容量
vgextend testvg /dev/sdb2
9.创建逻辑卷
lvcreate -l 100 -n lvname vgname (100为PE大小,可以在vgdisplay里面查看有多少)
lvs
lvdisplay
10.扩容逻辑卷
lvextend -L +5G /dev/vgname/lvname
11.文件系统扩容
resize2fs /dev/VG_NAME/LV_NAME
10.总结开放系统互联OSI模型,每层作用及对应的协议。
应用层:提供为应用软件而设的接口,实现通信,如http,https等(http)
表示层:把数据转换成双方通信能兼容能正常显示,并适合传输的格式(ssl/tls)
会话层:负责维护数据传输中的网络连接
传输层:把传输表头加至数据以形成数据包,传输表头包含了所使用的协议(tcp,udp)
网络层:决定了数据的路径选择,将网络表头加至数据包,以形成报文。网络表头包含了网络的数据(icmp)
数据链路层:负责网络寻址,网络层把数据包交给链路层后,数据链路层会给这个数据包加上数据链路表头表尾,就变成了信息框dataframe。数据链路表头,包含了物理地址(mac),确定数据收发设备。表尾,数据包末端标识符(ARP)
物理层:在局部局域网上传输dataframe,负责各个设备之间的互通连接。(Ethernet)
11.调整动态端口范围为20000-60000
echo 20000 62000 > /proc/sys/net/ipv4/ip_local_port_range
cat /proc/sys/net/ipv4/ip_local_port_range
12.总结TCP包头结构,TCP三次握手,4次挥手。
源端口,目标端口:通过指定计算机的目标端口和源端口,就能知道是哪两个进程需要通信,源端口目标端口为16位,端口的个数2^16=65536
序列号:本报文传输的第一个字节的编号
确认号:表示接收方期望收到发送方下一个报文段的第一个字节编号
数据偏移:确定数据从哪个位置开始
URG:紧急指针有效标志,显示该报文是否包含紧急数据
ACK:表示前面的确认号是否有效
PSH:推送标志,请求立即将数据传送给应用程序
RST:复位标志,用于异常情况下重置连接
SYN:同步标志,用于建立连接时同步序列号
FIN:结束标志,用于释放连接,表示发送方已经没有数据要发送了
窗口大小:表示发送方或接收方的接收窗口大小,即接收方当前允许接收的数据字节数
校验和:对 TCP 包头和数据部分进行校验,用于检测数据在传输过程中是否发生错误
紧急指针:指出紧急数据的末尾在报文段中的位置
12.1TCP三次握手
第一次握手:客户端向服务端发送SYN包,表示请求连接,此时客户端进入syn_sent状态
第二次握手:服务端收到SYN包后,为该连接分配资源,选择自己的序列号,服务端向客户端发送SYN+ACK包,syn和ack都设为1,syn为表示同意链接,ack表示确认确认客户的syn包,服务端将确认号设置为序列号+1,服务器将syn,sck,自身序列号,确认号一起发给客户端,此时服务端进入syn_rcvd状态
第三次握手:客户端收到syn+ack包后,将包头中的ack设为1,确认号设置为服务器初始序列号加1,表示确认收到syn包。客户端将包含ack和确认号包发给服务端,连接成功
12.2四次挥手
第一次挥手:客户端主动请求关闭连接,向服务端发送FIN号和序列号,此时客户端进入FIN-WAIT1状态
第二次挥手:服务器收到数据包后,将确认号设置为客户端序列号+1,同时将ACK标志位设为1,将自身序列号,ACK和确认号封装进数据包中发给客户端,同时将自己这边还未传输完的数据传输给客户端,此时服务器进入closewait状态,客户端进入FIN-WAIT2状态
第三次挥手:当服务器完成发送数据后,服务器会将FIN标志位设为1,同时将此时此刻的序列号封装进数据包中,包中含有四项信息,FIN,ACK,序列号,确认号,其中ACK和确认号没有发生变化。此时服务器进入LASTACK状态
第四次挥手:客户端收到FIN号后,将ACK设为1,确认号设为服务器序列号加1,同时将此时的序列号设为上次确认号。服务器收到ACK包后进入close状态,而客户端进入time-wait状态,客户端超时后也进入cloasewait状态
13.总结主机到主机的包传递过程。
源192.168.3.1 目标192.168.3.2
先建立连接,应用层要求网络层为自己和远程主机设置可靠连接,传输层则会使用TCP,而TCP则通过IP将SYN包送到远程主机,IP通过数据链路层准备将数据包发送到远程主机上。数据链路层则是通过ARP确定是否有到远程主机的路由记录,如果没有则进行ARP广播,同时将准备发送的数据放入parking lot,询问对方是否有目标的MAC地址。找到后,将数据包传输到远程主机上。
远程主机接收到数据包后,识别到ARP mac地址,将该数据包传到数据链路层,并通过ARP解析该MAC地址,得到该数据包来自192.168.3.1,同时将该条路由记录添加到ARP table中。有了目标mac地址和目标ip后,远程主机将该数据包传回192.168.3.1
数据包回到本机后,将该条路由记录添加到ARP tables中。同时将之前放入parking lot的数据包传输到远程主机。
远程主机收到数据包后,需要对192.168.3.1进行回应,将数据包中的SYN和ACK设为1,同时将确认号一起打包
本机收到ACK后,将ACK设为1,确认号为服务器初始序列号+1。将数据包发送给远程主机表示连接成功
本机将需要发送的应用层数据发送给远程主机,远程主机收到后,发送ACK标志位表示确认
14.总结IP地址 A, B, C, D 类,并解析IP地址的组成
A分类地址,前8位为网络ID,且第一位固定为0,最小为0(10000000),最大为127(011111111),0-127
B地址,前十六位为网络ID,且前两位为10,最小为128,最大为191
C地址,前二十四位为网络ID,且前三位为110,192-223
D地址,多拨地址,前四位固定为1110,224-239
IP地址组成:
- 网络ID,标识网络,每个网段分配一个网络ID
- 主机ID,标识单个主机,由组织分配给单个设备
15. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
最多主机数=2^主机ID位数 -2
总共由32位,主机ID则有32-18=14位
2^14 -2 =16382
子网掩码:前18位为网络位:
1111 1111,1111 1111,1100 0000,0000 0000
将二进制转为十进制:
255.255.192.0
16.当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
计算两者的网络地址:
A:前十六位为网络ID,则10.0.0.0为其网络地址
B:根据子网掩码计算网络地址:10.0.2.0
比较得知两者网络地址不一样,判断不在同一网段,需要通信的话则需要借助路由器。
17.如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。"
32=2^5说明需要划分5次才能覆盖到32个子网
所以需要向主机位借5位给网络位
子网掩码变为/13
则每个子网的掩码为:255.11111 000.0.0=255.248.0.0
主机数则为:2^(32-13)-2=524286
所以可得每个子网的掩码为255.248.0.0,每个子网大约有524286台主机

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)