RDID、YUM相关原理

  1. 总结RAID 0, 1, 5, 10, 01的工作原理
    RAID 0
    工作原理:数据条带化(Striping),将数据分块并分布到多个硬盘上。
    利用率:100%(无冗余)。
    冗余性:无冗余,任何一个硬盘故障都会导致数据丢失。
    性能:读写性能高。
    最少硬盘数:2个。
    RAID 1
    工作原理:数据镜像(Mirroring),将数据完全复制到两个或多个硬盘上。
    利用率:50%(一半的存储空间用于冗余)。
    冗余性:高冗余,任何一个硬盘故障不会导致数据丢失。
    性能:读性能高,写性能较低。
    最少硬盘数:2个。
    RAID 5
    工作原理:数据条带化和奇偶校验(Striping with Parity),将数据和奇偶校验信息分布到多个硬盘上。
    利用率:(n-1)/n(n为硬盘数)。
    冗余性:可以容忍一个硬盘故障。
    性能:读性能高,写性能较低(由于奇偶校验计算)。
    最少硬盘数:3个。
    RAID 10(1+0)
    工作原理:先镜像后条带化(Mirroring and Striping),将数据先镜像再条带化。
    利用率:50%(一半的存储空间用于冗余)。
    冗余性:高冗余,可以容忍每个镜像组中的一个硬盘故障。
    性能:读写性能高。
    最少硬盘数:4个。
    RAID 01(0+1)
    工作原理:先条带化后镜像(Striping and Mirroring),将数据先条带化再镜像。
    利用率:50%(一半的存储空间用于冗余)。
    冗余性:较低冗余,任何一个条带组中的一个硬盘故障都会导致数据丢失。
    性能:读写性能高。
    最少硬盘数:4个。

  2. 完成对LVM磁盘扩容及缩容示例
    LVM扩容
    创建物理卷:

    sudo pvcreate /dev/sdb1
    扩展卷组:

    sudo vgextend myvg /dev/sdb1
    扩展逻辑卷:

    sudo lvextend -l +100%FREE /dev/myvg/mylv
    扩展文件系统:

    sudo resize2fs /dev/myvg/mylv
    LVM缩容
    缩小文件系统:

    sudo resize2fs /dev/myvg/mylv 10G
    缩小逻辑卷:

    sudo lvreduce -L 10G /dev/myvg/mylv
    缩小卷组:

    sudo vgreduce myvg /dev/sdb1
    删除物理卷:

    sudo pvremove /dev/sdb1

  3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
    常见程序包管理器
    RPM(Red Hat Package Manager):
    包含:二进制文件、配置文件、依赖信息、脚本等。
    获取文件列表:

    rpm -ql package_name
    YUM(Yellowdog Updater, Modified):
    包含:RPM包及其依赖关系。
    获取文件列表:

    yum list installed package_name
    DNF(Dandified YUM):
    包含:RPM包及其依赖关系。
    获取文件列表:

    dnf list installed package_name
    APT(Advanced Package Tool):
    包含:DEB包及其依赖关系。
    获取文件列表:

    dpkg -L package_name
    程序包获取途径
    YUM/DNF:
    配置文件:/etc/yum.repos.d/
    获取包:

    yum install package_name
    dnf install package_name
    APT:
    配置文件:/etc/apt/sources.list
    获取包:

    apt-get install package_name
    命令选项示例
    RPM:
    安装包:

    rpm -ivh package_name.rpm
    卸载包:

    rpm -e package_name
    查询包:

    rpm -qa | grep package_name
    YUM:
    安装包:

    yum install package_name
    卸载包:

    yum remove package_name
    更新包:

    yum update package_name
    APT:
    安装包:

    apt-get install package_name
    卸载包:

    apt-get remove package_name
    更新包:

    apt-get update

简要总结YUM/DNF工作原理。并搭建私有YUM仓库(base, epel源)给另一个虚拟机使用。
YUM/DNF工作原理
YUM(Yellowdog Updater, Modified)和DNF(Dandified YUM)是基于RPM包管理的工具,用于自动化地安装、更新、删除和管理软件包。它们的工作原理如下:
配置文件:YUM和DNF的配置文件位于 /etc/yum.conf 和 /etc/yum.repos.d/ 目录。
仓库:使用配置文件中定义的仓库来查找和下载软件包。仓库可以是本地目录,也可以是远程服务器。
依赖解析:自动解析软件包的依赖关系,并下载所有必要的依赖包。
缓存:将下载的软件包和元数据缓存到本地,以加快后续的操作。
插件:支持插件,可以扩展其功能。
搭建私有YUM仓库
安装Apache HTTP服务器:
y
sudo yum install httpd -y
启动并启用Apache服务:

sudo systemctl start httpd
sudo systemctl enable httpd
创建YUM仓库目录:

sudo mkdir -p /var/www/html/yum/base
sudo mkdir -p /var/www/html/yum/epel
下载Base源的软件包:

sudo reposync -p /var/www/html/yum/base --repoid=base --download-metadata
下载EPEL源的软件包:

sudo yum install epel-release -y
sudo reposync -p /var/www/html/yum/epel --repoid=epel --download-metadata
创建YUM仓库元数据:

sudo createrepo /var/www/html/yum/base
sudo createrepo /var/www/html/yum/epel
设置Apache目录权限:

sudo chown -R apache:apache /var/www/html/yum
sudo chmod -R 755 /var/www/html/yum
编辑Apache配置文件:

sudo vim /etc/httpd/conf/httpd.conf
添加以下内容:

<Directory "/var/www/html/yum">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

重启Apache服务:

sudo systemctl restart httpd
在客户端虚拟机上创建YUM仓库配置文件:

sudo vim /etc/yum.repos.d/private.repo

添加以下内容:

[base]
name=Base Repository
baseurl=http://<server-ip>/yum/base
enabled=1
gpgcheck=0

[epel]
name=EPEL Repository
baseurl=http://<server-ip>/yum/epel
enabled=1
gpgcheck=0

替换为私有YUM仓库服务器的IP地址。
清理YUM缓存并更新仓库:

sudo yum clean all
sudo yum makecache
  1. 总结系统安装之后的常用初始化步骤。Rocky/Ubuntu
    Rocky Linux
    更新系统:

    sudo yum update -y
    设置主机名:

    sudo hostnamectl set-hostname myhostname
    配置防火墙:

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
    安装常用工具:

    sudo yum install -y vim wget curl git
    创建新用户并设置权限:

    sudo useradd myuser
    sudo passwd myuser
    sudo usermod -aG wheel myuser
    配置SSH:

    sudo nano /etc/ssh/sshd_config
    禁用root登录:PermitRootLogin no
    重启SSH服务:

    sudo systemctl restart sshd
    Ubuntu
    更新系统:

    sudo apt update
    sudo apt upgrade -y
    设置主机名:

    sudo hostnamectl set-hostname myhostname
    配置防火墙:

    sudo ufw enable
    sudo ufw allow http
    sudo ufw allow ssh
    安装常用工具:

    sudo apt install -y vim wget curl git
    创建新用户并设置权限:

    sudo adduser myuser
    sudo usermod -aG sudo myuser
    配置SSH:

    sudo nano /etc/ssh/sshd_config
    禁用root登录:PermitRootLogin no
    重启SSH服务:

    sudo systemctl restart ssh

  2. 解读一键安装httpd脚本,并自行实现一个一键安装脚本
    解读一键安装httpd脚本
    假设有一个简单的一键安装httpd的脚本:

!/bin/bash

安装httpd

sudo yum install -y httpd

启动httpd服务

sudo systemctl start httpd
sudo systemctl enable httpd

输出安装完成信息

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

!/bin/bash

检查是否以root用户运行

if [ "$EUID" -ne 0 ]; then
echo "请以root用户运行此脚本。"
exit 1
fi

检查是否传递了版本号

if [ -z "$1" ]; then
echo "请传递版本号作为参数。"
exit 1
fi

VERSION=$1

初始化步骤

initialize() {
echo "初始化步骤..."
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum groupinstall -y "Development Tools"
}

下载包并解压

download_and_extract() {
echo "下载并解压包..."
wget https://archive.apache.org/dist/httpd/httpd-$VERSION.tar.gz
tar -xzf httpd-$VERSION.tar.gz
}

编译并安装包

compile_and_install() {
echo "编译并安装包..."
cd httpd-$VERSION
./configure --prefix=/usr/local/apache2
make
sudo make install
}

完成链接包

link_package() {
echo "完成链接包..."
sudo ln -s /usr/local/apache2/bin/apachectl /usr/bin/apachectl
}

启动服务

start_service() {
echo "启动服务..."
sudo apachectl start
echo "安装httpd服务完成"
}

执行各个步骤

initialize
download_and_extract
compile_and_install
link_package
start_service

posted @ 2024-06-24 12:32  自足。  阅读(84)  评论(0)    收藏  举报