第三周-云计算运维作业

  1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
    raid0
    原理:RAID 0将数据分割成块,并通过条带化(striping)的方式将这些块分散存储在多个磁盘上。
    没有冗余数据,所有数据块都会被平均地分配到各个磁盘中
    利用率:100%
    冗余:无
    性能:提高了读写性能,因为数据可以并行地从多个磁盘中读取或写入
    硬盘:1
    raid1
    原理:RAID 1通过在两个或多个磁盘之间实时复制数据来提供冗余。
    所有写入操作都同时发生在两个或更多的磁盘上,以确保数据的一致性。
    利用率:50%
    冗余:有
    性能:RAID 1对读取操作的性能有提升,因为数据可以从多个磁盘中并行读取。
    硬盘:2
    riad5
    原理:RAID 5将数据分成块,并通过条带化(striping)的方式将这些块分散存储在多个数据磁盘上。
    每个数据块的校验信息也被分布存储在其他磁盘上,而不是像RAID 4那样使用单独的校验磁盘
    利用率:N-1
    冗余:有
    性能:写入性能相对较好,因为校验信息也被分散存储在不同的磁盘上,不会成为写入性能的瓶颈。
    硬盘:1
    raid10
    原理:RAID 10 的原理是将数据同时进行镜像和条带化,即数据被分成多个块并存储在至少两个磁盘上的其中一个,同时每个数据块都有一个镜像块,它们分别存储在不同的磁盘上。
    这样做可以提供高性能和高容错性,因为数据可以并行地从多个磁盘读取或写入,并且即使一块硬盘出现故障,数据仍然可以从镜像中恢复。
    利用率:50%
    冗余:有
    性能:RAID 10 提供了很高的读/写性能,因为数据可以并行地从多个硬盘读取或写入。
    由于数据被条带化,所以 RAID 10 具有比单独的 RAID 1 或 RAID 0 更高的性能。
    硬盘:RAID 10至少需要四个磁盘,因为至少需要两组RAID 1的镜像组。
    raid01
    RAID 0+1将数据分成块并通过条带化的方式存储在多个磁盘上,以提高读写性能。
    每组数据块会被镜像,即同时写入另一组相同的磁盘上,以提供数据冗余备份。
    利用率:50%
    冗余:有
    性能:提供了高性能,因为数据可以并行地从多个磁盘中读取或写入。
    具有数据冗余备份,即使一组磁盘故障,数据仍然可以从另一组镜像中恢复。
    由于数据被条带化,所以 RAID 10 具有比单独的 RAID 1 或 RAID 0 更高的性能。
    硬盘:RAID 0+1至少需要四个磁盘,因为需要至少两组磁盘来实现RAID 0和RAID 1的组合。

  2. 完成对LVM磁盘扩容及缩容示例。
    创建 :
    1.首先需要加入磁盘并分区和下载lvm2
    yum install -y lvm2
    2.创建物理卷
    pvcreate /dev/vdb1 /dev/vdb2 /dev/vdb3
    3.为卷组分配物理卷
    vgcreate -s -p -l vg0 /dev/sdX1
    4.创建逻辑卷
    lvcreate -n mylv -L 500M myvg
    挂载
    monut /dev/myvg /llogs
    删除 :
    1.取消挂载
    umonut /dev/myvg /llogs
    2.删除逻辑卷
    lvremove /dev/myvg/mylv1
    3.删除卷组
    vgremove vg-name
    4.删除物理卷
    pvremove /dev/vdb3

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

例子:
yum isntall nginx-1.18.0-1.el7
dnf install nginx-1.18.0-1.el7
apt install nginx-1.18.0-1.el7

内容:
软件包仓库:
软件包管理工具会连接到一个或多个软件包仓库,这些仓库包含了大量的软件包及其相关信息,如软件名称、版本、依赖关系等。
软件包索引:
软件包管理工具会维护本地的软件包索引,用于快速查找和检索软件包的信息,包括可用的软件包列表、版本信息、依赖关系等。
依赖关系解析器:
软件包管理工具会解析软件包之间的依赖关系,并自动安装所需的依赖软件包。
下载器:
软件包管理工具会从软件包仓库下载所需的软件包及其依赖项,以进行安装。
安装器:
安装器负责将下载的软件包解压并安装到系统中的适当位置。

程序获取
以yum举例
所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张"清单",这张"清单""就是描述每个rpm包的spec文件中信息。
client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件,这些配置文件指定了yum服务器的地址。每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache)

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

我这里以yum仓库举例,我用apecah搭建的yum私人仓库。

image
服务端
yum install httpd
systemctl start httpd
cd /var/www/html
wget https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/centos-logos-httpd-85.8-2.el8.noarch.rpm
createrepo -pdo .

客户端
vim /etc/yum.repo.d/Ttest.repo

[myrepo]
name=myrepo
baseurl= http://192.168.1.130
enable=1
gpgcheck=0

yum clean all && yum makecache

image

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

  2. 最小化安装

  3. 关闭防火墙
    systemctl disable --now firewalld

  4. 关闭SELinux
    nano /etc/selinux/config
    SELINUX=disabled
    reboot

  5. 实现邮件通信
    yum -y install postfix mailx
    systemctl enable --now postfix

  6. yum 源
    CentOS8 : BaseOS , appstream,epel
    CentOS7: BaseOS, epel

  7. 常用软件:
    yum -y install bash-completion psmisc lrzsz tree man-pages redhat-lsb-core zip unzip bzip2 wget tcpdump ftp rsync vim lsof

  8. 网卡NAT
    地址:10.0.0.X/24 GATEWAY:10.0.0.2,dns:10.0.0.2,180.76.76.76
    名称修改:ethX

  9. 时间同步

  10. 自动挂载光盘
    更新系统:
    sudo yum update # 对于Rocky Linux
    sudo apt update # 对于Ubuntu
    配置主机名:
    设置主机名以标识您的系统。编辑/etc/hostname文件并设置一个唯一的主机名。
    配置网络:
    编辑/etc/sysconfig/network-scripts/ifcfg-eth0(对于Rocky Linux)或/etc/netplan/01-netcfg.yaml(对于Ubuntu)文件,配置网络接口。
    设置时区和时间:
    使用timedatectl命令设置时区和时间:
    sudo timedatectl set-timezone Asia/Tokyo # 设置时区
    sudo timedatectl set-ntp true # 启用网络时间同步
    创建用户:
    使用以下命令创建新用户:
    sudo useradd -m -s /bin/bash username # 创建用户
    sudo passwd username # 设置用户密码
    防火墙设置:
    配置防火墙规则,允许必要的端口通过:
    sudo firewall-cmd --add-port=80/tcp --permanent # 允许HTTP流量
    sudo firewall-cmd --reload # 重新加载防火墙规则
    SSH配置:
    如果您需要远程访问系统,编辑/etc/ssh/sshd_config文件,配置SSH选项。

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

     #!/bin/bash
    
     xh(){
      while :;do
       echo -e "\033[1;36m  需要先加入版本变量,按1      \033[0m"
     	echo -e "\033[1;36m  1.下载httpd      \033[0m"
     	echo -e "\033[1;36m  2.安装httpd      \033[0m"
     	echo -e "\033[1;36m  3.关闭防火墙     \033[0m"
     		echo -e "\033[1;36m  4.创建链接           \033[0m"
     		echo -e "\033[1;36m  5.退出           \033[0m"
    
    
     read -p "$(echo -e '\033[1;32m请输入你的选项:\033[0m')" option
       case $option in
     1)
       install_httpd
       xh  
     	;;
     2)
       depend
       mak
       xh
     	;;
     3)
    
       init
       xh  
     	;;
     4)
       link
       xh 
     		;;
     5)
       exit
     		;;   
     esac
     done
     }
    
     install_httpd(){
     DIR='/home/zz/test/'
     pac='https://archive.apache.org/dist/httpd/'
     read -p "$(echo -e '\033[1;32m请输入你要安装的版本:\033[0m')" pack
     #https://archive.apache.org/dist/httpd/httpd-2.4.9.tar.gz
    
     if [ -f "$DIR"httpd-"$pack".tar.gz ];then
        echo "文件已存在"
     else
        echo "源码不存在,开始下载" 
        yum -y install wget make gcc &> /dev/null
        wget -p "$pac"http-$pack.tar.gz
      #  https://archive.apache.org/dist/httpd/httpd-2.4.9.tar.gz
        [[ $? -eq 0 ]]
        echo "下载完成"     
     fi
     tar -zxvf httpd-$pack.tar.gz -C /home/zz/test
     }
    
     mak(){
     cd /home/zz/test/httpd-$pack
     ./configure 
     make  &&  make install
     }
    
     link(){
     ln -s /home/zz/test /usr/local/bin/
    
     }
     depend(){
     	yum install -y httpd httpd-tools httpd-devel httpd-manual &>/dev/null
     	yum install redhat-rpm-config &>/dev/null
     #if [ -f apr-1.7.4.tar.gz ]; then
      #   tar -zxvf apr-1.7.4.tar.gz
       #  mv apr-1.7.4 httpd-$pack/srclib/apr
     #else
      #  wget https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
       # tar -zxvf apr-1.7.4.tar.gz
       # mv apr-1.7.4 httpd-$pack/srclib/apr
     #fi
    
     #if [ -f apr-util-1.6.3.tar.gz ]; then
      #  tar -zxvf apr-util-1.6.3.tar.gz
       # mv apr-util-1.6.3  httpd-$pack/srclib/apr-util  
     #else
      # wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
       #tar -zxvf apr-util-1.6.3.tar.gz
       #mv apr-util-1.6.3  httpd-$pack/srclib/apr-util
     #fi
     }
    
     init(){
     sudo systemctl disable firewalld || sudo chkconfig iptables off
     }
    
     xh
    
  12. 总结开放系统互联OSI模型,每层作用及对应的协议。
    以5层模型为例子
    物理层:
    功能:该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。
    常见协议:Ethernet、Wi-Fi、SONET、RS-232、USB、IEEE 802.3 等。
    数据链路层:
    功能:数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。。
    常见协议:Ethernet(IEEE 802.3)、PPP(Point-to-Point Protocol)、HDLC(High-Level Data Link Control)、ARP(Address Resolution Protocol)、MAC(Media Access Control)等。
    网络层 :
    功能:网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
    常见协议:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)、RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)等。
    传输层 :
    功能:网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。
    常见协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、SCTP(Stream Control Transmission Protocol)等。
    会话层 :
    功能:为操作系统或网络应用程序提供访问网络服务的接口。
    常见协议:RPC(Remote Procedure Call)、NetBIOS(Network Basic Input/Output System)、SSH(Secure Shell)、TLS(Transport Layer Security)等。

  13. 调整动态端口范围为20000-60000
    动态端口确实是在客户端需要与服务器通信时,客户端操作系统自动分配的一个临时端口,用于建立连接和接收响应
    临时调整动态端口范围:
    sudo sysctl -w net.ipv4.ip_local_port_range ="20000 60000"
    永久调整动态端口范围:编辑 /etc/sysctl.conf 文件
    net.ipv4.ip_local_port_range = 20000 60000

  14. 总结TCP包头结构,TCP三次握手,4次挥手。
    三次握手
    1:客户端发起握手,并发送一个带有 SYN 标志位的数据包,表示客户端请求建立连接,并选择一个初始的序列号(seq)。这个序列号是一个随机值,用于标识客户端发送的数据。
    2:服务器收到后发送带有SYN标准位的数据包表示这是第一次与客户端通信,ACK标志位确认服务端确认收到客户端的数据,并选择一个随机初始序列号(seq),接着序号(ack)=X+1,表示准备好接收下一个数据
    3:客户端发送数据包,ACK为1确认已经收到并建立连接,seq序列号+1,服务器需要的序号数据,ack=y+1,表示想要接收的下一个数据
    四次挥手
    1:客户端发送FIN标志位结束数据包,seq序号
    2:服务器确认收到ACK=1,seq序号,ack+1表示想要接收的下一个数据
    3:服务器发送FIN标志位结束数据包,ACK,确认收到,seq和ack与上边含义一致。
    4:客户端发送ACK确认收到,服务器结束连接,客户端等待一段时间,确认没有后续数据后关闭

  15. 总结主机到主机的包传递过程。
    image
    简单的说,假设有一个HTTP数据包,在应用层中大概包含以下信息,比如HTTP协议的版本号、各种字段属性值、最后是包含的要发送的实际数据,接着数据到达传输层,传输层使用UDP和TCP两种协议,而http使用tcp协议,所以传输层会为将HTTP数据包包装上源端口号和目的端口号等信息,传输层包装好信息后,会进入网络层。网络层会为其加入源IP和目标IP等信息接着到数据链路层封装,会带有MAC自己和目标的地址等信息,最后通过物理层传输道目标主机。

  16. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
    A (1.0.0.1-126.255.255.254) 默认子网掩码:255.0.0.0
    B (128.1.0.1-191.254.255.254) 默认子网掩码:255.255.0.0
    C(192.0.1.1-223.255.254.254) 子网掩码:255.255.255
    D 多播地址 (224.0.0.1-239.255.255.254)
    ip地址由 主机位和网络位组成,由子网掩码决定主机位和网络位

  17. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
    主机数:2^(32-18)-2=16382
    子网掩码:255.255.192.0

  18. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
    当A通信B,用自身的掩码去判断对方ip,所以A认为B是同一网段
    当B通信A,同样,所以B任务A不是同一网段
    它们可以通信,当A发送数据到B,因为A判断同一网段,所以可以发送,当B回复时不需要用子网掩码去判断它们,所以B会根据路由表去判断发送

  19. 如何将10.0.0.0/8划分32个子网?
    求每个子网的掩码,主机数。
    10.00000 000.0.0/13 主机数:8388606 子网掩码:255.0.0.0
    ~
    10.11111 000.0.0/13 主机数:8388606 子网掩码:255.248.0.0

  20. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.130
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.2
    DNS1=8.8.8.8
    DNS2=8.8.4.4

  21. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。
    DEVICE:
    指定网络接口的设备名称,例如 eth0。
    BOOTPROTO:
    指定网络接口的启动协议,常见的取值有 none(手动配置)、dhcp(通过 DHCP 自动获取 IP 地址)、static(静态配置)等。
    ONBOOT:
    指定网络接口是否在系统启动时自动启用,常见的取值有 yes 和 no。
    IPADDR:
    指定静态 IP 地址,仅在 BOOTPROTO 设置为 static 时有效。
    NETMASK:
    指定子网掩码,仅在 BOOTPROTO 设置为 static 时有效。
    GATEWAY:
    指定默认网关的 IP 地址,仅在 BOOTPROTO 设置为 static 时有效。
    DNS1、DNS2:
    指定首选和备用 DNS 服务器的 IP 地址,仅在 BOOTPROTO 设置为 static 时有效。

  22. 基于配置文件或命令完成bond0配置
    使用 nmcli 命令配置 bond0:
    nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
    nmcli con mod bond0 ipv4.addresses 192.168.1.130/24 ipv4.gateway 192.168.1.2 ipv4.method manual
    nmcli con up bond0
    使用 ip 命令配置 bond0:
    ip link add bond0 type bond
    ip addr add 192.168.1.130/24 dev bond0
    ip route add default via 192.168.1.2 dev bond0
    ip link set bond0 up

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

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

for i in {1..254}; do

        ping -w1 -c1 192.168.1.$i
        [[ $? -eq 0 ]] && echo “192.168.1.$i is up ” || echo "192.168.1.$i is down"

done
posted @ 2024-04-22 17:29  TestAL4193  阅读(62)  评论(0)    收藏  举报