61、Linux 虚拟化与备份全解析

Linux 虚拟化与备份全解析

1. 虚拟化技术概述

虚拟化技术在当今的云计算环境中扮演着至关重要的角色,它能够将物理资源抽象为多个虚拟资源,提高资源利用率和灵活性。常见的虚拟化技术包括 KVM 和容器技术,下面将详细介绍它们的使用方法和特点。

1.1 KVM 虚拟化管理

KVM(Kernel-based Virtual Machine)是一种基于 Linux 内核的虚拟化技术,支持多种操作系统的虚拟化。以下是对 KVM 虚拟机的基本管理操作:
- 查看虚拟机详细信息 :使用 virsh dominfo 命令查看 fedora-demo-VM 虚拟机的详细信息。

virsh # dominfo fedora-demo-VM
Id:             -
Name:           fedora-demo-VM
UUID:           dbbdcf36-6a9f-4f0e-b7a4-562b793c2097
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     2048000 KiB
Used memory:    2048000 KiB
Persistent:     yes
Autostart:      disable
  • 启动虚拟机 :使用 virsh start 命令启动 fedora-demo-VM 虚拟机。
virsh # start fedora-demo-VM
  • 关闭虚拟机 :使用 virsh shutdown 命令优雅地关闭 fedora-demo-VM 虚拟机。
virsh # shutdown fedora-demo-VM
  • 强制关闭虚拟机 :使用 virsh destroy 命令强制关闭 fedora-demo-VM 虚拟机。
virsh # destroy fedora-demo-VM
  • 删除虚拟机配置 :使用 virsh undefine 命令从管理程序中删除 fedora-demo-VM 虚拟机的配置。
virsh # undefine fedora-demo-VM

1.2 在 Ubuntu/Debian 中设置 KVM

在 Ubuntu 或 Debian 系统中设置 KVM 虚拟化的步骤如下:
1. 安装 KVM 和 QEMU 包

master@ubuntu-server:~$ sudo apt-get -y install qemu-kvm
  1. 手动加载 kvm-intel 模块
master@ubuntu-server:~$ sudo modprobe kvm-intel

注意:在 AMD 系统中,需要加载的模块是 kvm-amd
3. 将用户添加到 kvm 系统组

master@ubuntu-server:~$ sudo adduser yyang kvm
  1. 注销并重新登录系统 :以使用户的新组权限生效。
  2. 创建虚拟机存储目录
yyang@ubuntu-server:~$ mkdir  -p /home/yyang/vms/
yyang@ubuntu-server:~$ cd /home/yyang/vms/
  1. 创建虚拟磁盘映像 :使用 qemu-img 工具创建一个 10GB 的 qcow2 格式磁盘映像。
yyang@ubuntu-server:~/vms$ qemu-img create disk.img -f qcow2 10G

qcow2 格式的优点是可以节省空间,它不会预先分配全部磁盘空间,而是随着数据写入逐渐增长。
7. 启动虚拟机安装程序 :使用 kvm 命令启动虚拟机安装程序。

yyang@ubuntu-server:~/vms$ kvm -m 1024  \
-cdrom  ubuntu-16.04-desktop-amd64.iso \
-boot d  disk.img

参数说明:
- -m :指定虚拟机的内存大小,这里是 1024MB(1GB)。
- -cdrom :指定虚拟 CD-ROM 设备,指向之前下载的 ISO 镜像。
- -boot d :指定启动设备为 CD-ROM。
- disk.img :指定虚拟硬盘映像。

1.3 容器技术简介

容器是一种轻量级的虚拟化技术,它使用各种机制为应用程序提供隔离的运行时环境。与传统的虚拟机相比,容器不需要包含整个操作系统,因此具有更小的资源占用和更快的启动速度。常见的容器实现包括 chroot LXE libvirt LXC systemd-nspawn Solaris Zones FreeBSD Jails Docker 等。其中, Docker 是目前最受欢迎的容器实现之一。

1.4 容器与虚拟机的比较

特性 虚拟机(VMs) 容器(Containers)
操作系统 包含整个操作系统 无需包含整个操作系统
主机独立性 主机操作系统可以与客户操作系统完全不同 主机操作系统和应用程序容器需要运行相似的操作系统
资源占用 较大的系统资源占用和需求 最小的系统资源占用和需求
安全性 开箱即用的安全性较高 由于第三方镜像的易获取性,开箱即用的安全性可能较低
内核需求 每个虚拟机通常需要自己的内核 依赖主机系统的内核
虚拟化依赖 需要 hypervisor 不需要 hypervisor
创建和启动时间 较慢 较快

1.5 Docker 容器技术

1.5.1 Docker 基本概念
  • 镜像(Images) :Docker 镜像是容器的基础,它是一个只读的模板,包含了运行应用程序所需的所有文件和配置。
  • 容器(Containers) :容器是从镜像创建的运行实例,它可以独立运行应用程序。
  • 注册表(Registry) :注册表是存储 Docker 镜像的地方,官方的公共注册表是 Docker Hub。
  • Docker 主机(Docker Host) :安装了 Docker 应用程序的主机系统。
  • Docker 守护进程(Docker daemon) :负责管理 Docker 主机上的容器,接收 Docker 客户端的命令。
  • Docker 客户端(Docker client) :用于向 Docker 守护进程发送命令的工具。
  • Dockerfile :用于描述如何构建 Docker 镜像的配置文件。
1.5.2 Docker 安装与启动

在 Fedora 服务器上安装和启动 Docker 的步骤如下:
1. 安装 Docker

[root@fedora-server ~]# dnf -y install docker
  1. 检查 Docker 服务状态
[root@fedora-server ~]# systemctl is-enabled docker
  1. 启用 Docker 服务自动启动 :如果服务未启用自动启动,可以使用以下命令启用。
[root@fedora-server ~]# systemctl enable docker
  1. 启动 Docker 守护进程
[root@fedora-server ~]# systemctl start docker

如果在 Red Hat 类发行版上,使用 Btrfs 文件系统并启用 SELinux 强制模式时,Docker 守护进程无法启动,可以尝试从 /etc/sysconfig/docker 文件的 OPTIONS 行中删除 --selinux-enabled ,保存更改后再次尝试启动。

1.5.3 使用 Docker 镜像

以下是使用 Docker 镜像创建容器的步骤:
1. 查询本地 Docker 主机上的现有镜像

[root@fedora-server ~]# docker images
  1. 在公共 Docker 注册表中搜索包含 httpd 关键字的镜像
[root@fedora-server ~]# docker search httpd
  1. 拉取官方 httpd 镜像
[root@fedora-server ~]# docker pull httpd
  1. 查询本地镜像仓库中的可用镜像
[root@fedora-server ~]# docker images
REPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZE
docker.io/httpd  latest   de979434      weeks ago    161.8 MB
1.5.4 使用 Docker 容器
  1. 启动 httpd 容器
[root@fedora-server ~]# docker run   \
 --net=host  \
 --name  my-1st-container  \
 -p  80:80\
 -d    docker.io/httpd

参数说明:
- --net :指定容器使用的网络类型,这里使用主机网络。
- --name :为容器实例指定一个描述性名称。
- -p :将容器的端口映射到主机的端口,这里将容器的 80 端口映射到主机的 80 端口。
- -d :在后台运行容器。
2. 查询运行中的容器

[root@fedora-server ~]# docker ps
  1. 访问容器中的 Web 服务器 :使用 curl 命令访问容器中的 Apache HTTP 服务器。
[root@fedora-server ~]# curl  http://192.168.1.100

注意:需要确保主机的防火墙允许访问映射的端口。在 Fedora、CentOS 或 RHEL 系统中,可以使用以下命令开放端口:

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
  1. 重启容器
[root@fedora-server ~]#  docker restart  my-1st-container
  1. 停止容器
[root@fedora-server ~]#  docker stop my-1st-container
  1. 删除容器
[root@fedora-server ~]# docker rm my-1st-container

1.6 虚拟化技术总结

虚拟化技术在云计算和数据中心领域具有重要的应用价值,它可以提高资源利用率、降低成本、增强灵活性和可管理性。KVM 虚拟化技术提供了完整的硬件和操作系统虚拟化解决方案,适用于需要运行多个不同操作系统的场景。而 Docker 容器技术则以其轻量级、快速部署和易于管理的特点,成为现代应用开发和部署的首选方案。在实际应用中,可以根据具体需求选择合适的虚拟化技术。

2. 服务器备份策略

2.1 备份的重要性

服务器备份是服务器维护的重要组成部分,它可以保护数据免受意外丢失、硬件故障、软件错误等因素的影响。一个没有备份的生产服务器就像一颗定时炸弹,随时可能导致数据丢失和业务中断。因此,系统管理员需要制定合理的备份策略,并定期测试备份的可用性和可恢复性。

2.2 评估备份需求

制定备份解决方案需要考虑多个因素,包括数据量、备份硬件和介质、网络吞吐量、数据恢复速度、数据去重和磁带管理等。

2.2.1 数据量

确定需要备份的数据量是评估备份需求的重要步骤。在估算数据量时,需要考虑数据的预期增长和变化频率。对于经常变化的数据,如数据库,需要更频繁地进行备份;而对于很少变化的数据,如 /etc 目录下的文件,则不需要频繁备份。此外,还需要考虑可压缩数据和不可压缩数据的比例,以及个人数据对备份容量的影响。

2.2.2 备份硬件和备份介质

备份硬件和介质的选择应根据数据量、备份频率和是否需要异地存储等因素来决定。常见的备份选项包括磁带、磁盘、可刻录 CD 和 DVD、USB 驱动器、基于云的解决方案、存储区域网络(SAN)、网络附加存储(NAS)和其他网络存储阵列。
- 磁带 :磁带是一种传统的备份介质,具有大容量、低成本和长寿命的优点。但磁带的读写速度较慢,且需要专门的磁带驱动器。
- 磁盘 :磁盘备份具有快速读写和易于管理的优点,适用于需要快速恢复数据的场景。但磁盘的成本较高,且需要考虑数据的安全性和可靠性。
- 可刻录 CD 和 DVD :可刻录 CD 和 DVD 是一种低成本的备份介质,适用于备份少量数据。但它们的容量较小,且寿命有限。
- USB 驱动器 :USB 驱动器具有便携性和易用性的优点,适用于临时备份和移动存储。但它们的容量相对较小,且容易丢失或损坏。
- 云存储 :云存储是一种基于互联网的备份解决方案,具有高可用性、可扩展性和数据安全性的优点。但云存储的成本较高,且需要考虑网络带宽和数据隐私问题。
- 存储区域网络(SAN)和网络附加存储(NAS) :SAN 和 NAS 是一种集中式的存储解决方案,适用于大型企业和数据中心。它们具有高容量、高性能和可扩展性的优点,但成本较高,且需要专业的管理和维护。

2.2.3 网络吞吐量

在规划备份操作时,网络吞吐量是一个容易被忽视的因素。如果网络带宽不足,即使备份服务器和存储子系统的性能很高,备份速度也会受到影响。因此,需要评估网络基础设施的带宽,并根据需要进行升级或优化。可以使用 SNMP 工具,如 MRTG,来收集网络设备的统计信息,以便更好地了解网络状况。

2.2.4 数据恢复速度

数据恢复速度是选择备份解决方案时需要考虑的重要因素之一。不同的备份介质和工具在数据恢复速度上存在差异。例如,磁盘备份的恢复速度最快,而磁带备份的恢复速度最慢。因此,需要根据用户对数据恢复时间的要求,选择合适的备份解决方案。

2.2.5 数据去重

数据去重是一种减少存储系统中不必要冗余数据的技术。在当今数字化时代,组织和个人处理的数据量越来越大,很容易出现数据重复的情况。数据去重可以通过识别和删除重复的数据,减少备份所需的存储空间和时间。例如,在一个组织中,多个用户可能会下载相同的文件,数据去重系统可以只备份一份文件,并使用指针或标记来引用其他相同的文件。

2.2.6 磁带管理

随着备份数据量的增加,磁带管理变得越来越重要。商业工具通常提供索引和磁带管理功能,以帮助用户快速找到所需的数据。在选择磁带备份解决方案时,需要考虑磁带的容量、密度、成本和性能等因素,并确保磁带驱动器的性能和可靠性。

2.3 磁带备份的考虑因素

2.3.1 磁带性能考虑

在进行磁带备份时,需要考虑磁带驱动器的位置和连接方式,以及数据传输的总线争用问题。例如,如果将磁带驱动器连接到一个繁忙的服务器上,可能会影响备份性能。此外,还需要确保能够快速地向磁带驱动器提供数据,以保证磁带驱动器能够连续写入数据。如果磁带驱动器不能连续写入数据,会导致备份时间延长。

2.3.2 磁带设备管理

磁带设备在 Linux 系统中被视为文件,可以通过文件名来访问。SCSI 磁带驱动器的文件名通常以 /dev/stX /dev/nstX 开头,其中 X 表示磁带驱动器的编号。 /dev/stX 表示自动倒带的磁带设备,而 /dev/nstX 表示非自动倒带的磁带设备。可以使用 mknod 命令创建磁带设备文件,也可以使用 scsidev 程序创建设备条目。

2.3.3 操作磁带设备

mt 程序是一个用于操作磁带驱动器的工具,它可以提供简单的控制功能,如倒带、弹出磁带或查找特定文件。在 RPM 基于的发行版中,可以使用以下命令安装 mt-st 软件包:

[root@fedora-server ~]# dnf -y install mt-st

mt 命令的参数可以在命令行中指定,具体参数可以参考相关文档。

2.4 备份策略总结

制定合理的备份策略需要综合考虑多个因素,包括数据量、备份频率、备份硬件和介质、网络吞吐量、数据恢复速度、数据去重和磁带管理等。在选择备份解决方案时,需要根据实际需求和预算来进行权衡。同时,还需要定期测试备份的可用性和可恢复性,以确保在需要时能够快速恢复数据。

综上所述,虚拟化技术和服务器备份是现代 IT 基础设施中不可或缺的两个方面。通过合理运用虚拟化技术,可以提高资源利用率和灵活性;而通过制定有效的备份策略,可以保护数据的安全性和可用性。在实际应用中,需要根据具体需求和场景,选择合适的技术和方法,以确保系统的稳定运行和数据的安全存储。

3. 备份流程示例

为了更好地理解如何制定和执行备份策略,下面给出一个简单的备份流程示例,以磁盘备份为例,使用 rsync 工具进行文件同步备份。

3.1 准备工作

  • 确保备份目标磁盘已正确挂载到系统中,例如挂载到 /backup 目录。
  • 安装 rsync 工具,如果系统中未安装,可以使用以下命令进行安装:
# 在 Debian/Ubuntu 系统中
sudo apt-get install rsync
# 在 Fedora/CentOS/RHEL 系统中
sudo dnf install rsync

3.2 制定备份脚本

创建一个备份脚本,例如 backup.sh ,内容如下:

#!/bin/bash
# 源目录,即需要备份的目录
SOURCE_DIR="/data"
# 目标目录,即备份存储的目录
TARGET_DIR="/backup"
# 执行 rsync 命令进行备份
rsync -avz --delete $SOURCE_DIR/ $TARGET_DIR/
# 输出备份完成信息
echo "Backup completed at $(date)"

脚本说明:
- -a :以归档模式进行备份,保留文件的权限、时间戳等信息。
- -v :显示详细的备份过程信息。
- -z :对传输的数据进行压缩,减少网络带宽的使用。
- --delete :删除目标目录中不存在于源目录的文件,保证目标目录与源目录的一致性。

3.3 设置脚本权限

为备份脚本添加执行权限:

chmod +x backup.sh

3.4 定时执行备份

使用 cron 工具定时执行备份脚本。编辑 cron 表:

crontab -e

在打开的文件中添加以下内容,例如每天凌晨 2 点执行备份:

0 2 * * * /path/to/backup.sh

保存并退出 cron 表编辑。

3.5 备份流程总结

以下是这个备份流程的 mermaid 流程图:

graph LR
    A[准备工作] --> B[制定备份脚本]
    B --> C[设置脚本权限]
    C --> D[定时执行备份]
    D --> E[备份完成]

这个备份流程简单易操作,适用于对数据变化频率不高的目录进行备份。对于更复杂的备份需求,可以根据实际情况进行调整和扩展。

4. 虚拟化与备份的结合应用

在实际的 IT 环境中,虚拟化和备份往往需要结合使用,以确保系统的高可用性和数据的安全性。以下是一些常见的结合应用场景和方法。

4.1 虚拟化环境中的备份策略

  • 虚拟机全量备份 :定期对整个虚拟机进行全量备份,包括虚拟机的磁盘镜像、配置文件等。可以使用虚拟化管理工具提供的备份功能,或者使用第三方备份软件。
  • 增量备份 :在全量备份的基础上,只备份自上次备份以来发生变化的数据。增量备份可以减少备份时间和存储空间的占用。
  • 应用程序级备份 :对于一些关键的应用程序,如数据库、邮件服务器等,需要进行应用程序级的备份,以确保数据的一致性和完整性。

4.2 利用容器进行备份

  • 容器化备份工具 :将备份工具打包成容器,在不同的环境中进行部署和使用。这样可以提高备份工具的可移植性和灵活性。
  • 容器数据备份 :对容器中的数据进行备份,可以使用容器编排工具提供的备份功能,或者使用外部的备份工具。

4.3 结合示例

以下是一个简单的结合示例,使用 Docker 容器运行 rsync 进行虚拟机数据备份:

4.3.1 创建 Docker 镜像

首先,创建一个包含 rsync 工具的 Docker 镜像,创建一个 Dockerfile 文件,内容如下:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y rsync

然后构建 Docker 镜像:

docker build -t rsync-backup .
4.3.2 运行备份容器

使用创建的 Docker 镜像运行备份容器,将虚拟机的数据备份到宿主机的指定目录:

docker run -v /path/to/vm/data:/source -v /path/to/backup:/target rsync-backup rsync -avz /source/ /target/

参数说明:
- -v :将宿主机的目录挂载到容器中, /path/to/vm/data 是虚拟机数据所在的目录, /path/to/backup 是备份存储的目录。
- rsync -avz /source/ /target/ :在容器中执行 rsync 命令进行备份。

4.4 结合应用总结

通过将虚拟化和备份技术结合使用,可以提高系统的可靠性和数据的安全性。在实际应用中,需要根据具体的需求和场景,选择合适的备份策略和工具,以确保系统在面对各种故障和灾难时能够快速恢复。

4. 总结与展望

4.1 技术总结

本文详细介绍了 Linux 系统中的虚拟化技术和服务器备份策略。虚拟化技术包括 KVM 虚拟化和 Docker 容器技术,它们分别适用于不同的应用场景。KVM 提供了完整的硬件和操作系统虚拟化解决方案,适用于需要运行多个不同操作系统的场景;而 Docker 容器技术则以其轻量级、快速部署和易于管理的特点,成为现代应用开发和部署的首选方案。

在服务器备份方面,我们讨论了评估备份需求的多个因素,包括数据量、备份硬件和介质、网络吞吐量、数据恢复速度、数据去重和磁带管理等。并介绍了不同备份介质的优缺点和适用场景,以及如何制定和执行备份策略。

4.2 未来展望

随着信息技术的不断发展,虚拟化和备份技术也将不断演进。未来,我们可以期待以下几个方面的发展:
- 更高效的虚拟化技术 :随着硬件技术的进步,虚拟化技术将更加高效,能够提供更高的资源利用率和性能。
- 智能化的备份解决方案 :备份工具将更加智能化,能够自动识别数据的变化和重要性,优化备份策略,提高备份效率。
- 融合的云原生技术 :虚拟化和备份技术将与云原生技术更加紧密地融合,提供更加灵活和可扩展的解决方案。

总之,虚拟化技术和服务器备份是现代 IT 基础设施中不可或缺的两个方面。通过不断学习和掌握这些技术,我们可以更好地管理和保护我们的系统和数据。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值