-
总结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个。 -
完成对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
-
总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? 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缓存并更新仓库:
sudo yum clean all
sudo yum makecache
-
总结系统安装之后的常用初始化步骤。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
-
解读一键安装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