虚拟化技术调研

2023-11-08

虚拟化技术调研

容器/虚拟化技术

容器是一种轻量级虚拟化技术,它可以在一台宿主机上共享内核,并且在运行应用程序时具有独立的文件系统空间、网络空间、进程空间和用户空间。常见的容器技术有Docker和LXC。

KVM虚拟化技术

KVM是一种全虚拟化技术,它允许在虚拟机上运行不同的操作系统,同时为每个虚拟机提供独立的硬件资源。KVM使用硬件虚拟化技术,使虚拟机能够直接运行在物理硬件上,而不需要修改虚拟机的操作系统。

XEN虚拟化技术

XEN也是一种全虚拟化技术,它提供了一个虚拟化的层来运行多个虚拟机。XEN可以在X86体系结构上运行,它使用PV和HVM来支持虚拟化。PV(Para-Virtualization)是一种半虚拟化技术,它允许虚拟机操作系统和宿主机之间进行通信,并共享底层硬件资源。而HVM(Hardware Virtual Machine)是一种硬件虚拟化技术,它让虚拟机可以在KVM上运行,可以直接使用CPU虚拟化技术。

嵌入式linux的虚拟化

由于项目中需要用到虚拟化技术来隔离部分代码,防止进程间的干扰和冲突,所以我们选用了容器来分离代码,LXC比较不错。

LXC介绍

LXC(Linux Containers)是一种轻量级虚拟化技术,它能够在单个Linux主机上运行多个操作系统实例,每个实例都能够独立地运行应用程序。另外,LXC只需要一个宿主机系统内核,能够在不需要硬件虚拟化的情况下实现虚拟化。

在嵌入式Linux的虚拟化中,LXC可以用来为每个应用程序提供隔离的环境,以避免应用程序之间相互干扰。比如,当在同一嵌入式设备上运行多个应用程序时,LXC可以将每个应用程序打包成一个容器(container),从而实现多个应用程序之间的隔离,确保它们的运行和数据安全。

因此,LXC可以用于嵌入式Linux的虚拟化,为嵌入式设备中多个应用程序提供隔离的虚拟化环境。

LXC下载

你可以在LXC官方网站上下载相应版本的LXC:https://linuxcontainers.org/lxc/downloads/在这个页面上你可以看到列有多个LXC版本,包括最新版本和旧版本。

git clone https://github.com/lxc/lxc.git
meson setup -Dprefix=/usr build
meson compile -C build

在第二步,编译的时候报错:

meson.build:280:4: ERROR: Dependency "dbus-1" not found, tried pkgconfig and cmake

原因为dbus没安装,安装dbus

sudo apt-get install libdbus-1-dev

安装后依然报错

meson.build:329:8: ERROR: Problem encountered: missing required docbook2x or docbook-utils dependency

安装docbook2

sudo apt-get install docbook2x

继续编译,成功
执行安装

meson compile -C build
meson install -C build

LXC的使用

在编译完成 LXC 后,你可以使用 make install 命令将编译好的文件安装到系统中。安装完成后,你就可以开始使用 LXC 实现容器化了。

LXC 的使用方式有多种,以下是 LXC 的基本使用:

创建容器
创建一个名为 my-container 的容器:

lxc-create -n my-container -t download

这将下载并创建一个 Ubuntu 容器。

启动容器

lxc-start -n my-container

进入容器

lxc-attach -n my-container

在容器中可以执行任意命令,类似与在一个独立的操作系统中运行。

停止容器

lxc-stop -n my-container

其他高级功能,如在容器中执行应用程序,访问容器的网络等功能也可以使用 LXC 来实现。

非嵌入式 安装lxc

sudo apt-get install lxc
sudo apt install lxc-utils

遇到问题:

sudo apt update
sudo apt install lxc-utils

LXC应用

lxc-create -n my-container -t download
lxc-create: my-container: ../src/lxc/parse.c: lxc_file_for_each_line_mmap: 78 No such file or directory - Failed to open file "/home/test/.config/lxc/default.conf"
lxc-create: my-container: ../src/lxc/utils.c: get_template_path: 900 No such file or directory - bad template: download
lxc-create: my-container: ../src/lxc/lxccontainer.c: __lxcapi_create: 1799 Template "download" not found
lxc-create: my-container: tools/lxc_create.c: main: 317 Failed to create container my-container

需要安装的程序

[root@SYL4 ~]# yum -y install epel-release
[root@SYL4 ~]# yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt
lxc           #主程序包
lxc-templates #lxc的配置模板
bridge-utils  #网桥管理工具
lxc-libs      #lxc所需的库文件
libcgroup     #cgroup是为Linux内核提供任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
libvirt       #管理Linux的虚拟化功能所需的服务器端守护程序。 需要针对特定驱动程序的管理程序。
sudo snap install lxd

命令列表

# ubuntu版本
sudo lsb_release -a
# 初始化配置 Initial configuration
sudo lxd init
# container 创建ubuntu容器样例
lxc launch ubuntu:16.04 first
# 显示可用镜像
lxc image list images: | less
lxc image list images: ‘centos’
# LXD/LXC 2.0使用清华镜像加速的方法:
创建一个remote链接,指向镜像站即可,或替换掉默认的images链接。
lxc remote add tuna-images  https://mirrors.tuna.tsinghua.edu.cn/lxc-images/ --protocol=simplestreams --public
# 显示可用清华镜像
lxc image list tuna-images:
# 显示当前远程可用
lxc remote list
# 显示容器网络
lxc network show lxdbr0
# 显示容器
lxc list
# 运行容器bash
lxc exec first – /bin/bash
# 直接运行容器命令
lxc exec first – apt-get update
# 文件传输下载
lxc file pull first/etc/hosts .
# 文件传输上传
lxc file push hosts first/tmp/
# 停止容器
lxc stop first
# 删除容器
lxc delete first
# 显示容器信息
lxc info first
# 本地配置
lxc config edit <container>
# 显示容器详细信息
lxc config show first
lxc config show <container>
# 内存查看 free -m
lxc exec first – free -m
# 设置内存最大值
lxc config set first limits.memory 2048MB
# 执行升级
lxc exec first – apt-get update
lxc exec first – apt-get dist-upgrade -y
lxc exec first – apt-get autoremove --purge -y
# 暂停
lxc pause <container>
# 快照 Snapshots -stateful选项包含所有状态
lxc snapshot first clean
# 列出所有的快照
lxc info <container>
lxc snapshot <container> <snapshot name>
# 快照恢复
lxc restore first clean
# 从快照生成容器镜像
lxc publish first/clean --alias clean-ubuntu
# 启动快照容器镜像
lxc launch clean-ubuntu second
# 删除容器镜像方式一
lxc delete --force second
# 删除容器镜像方式二
lxc delete -f second
# 删除一个快照
lxc delete <container>/<snapshot name>
# 从快照中创建一个新的容器
lxc copy <source container>/<snapshot name> <destination container>
# 给快照重命名
lxc move <container>/<snapshot name> <container>/<new snapshot name>
# lxc运行docker
lxc config set first security.nesting true
lxc restart first
**# 本地镜像导出
lxc publish ${HOST}/auto-backup --alias ${BACKUP_NAME}
lxc image list
lxc image export ${BACKUP_NAME} BACKUPDIR/{BACKUP_NAME}
**# 本地镜像删除
lxc image delete <container>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟化技术调研 的相关文章

随机推荐

  • 由对称性知定点一定在x轴上_圆锥曲线解答题的经典答案:由椭圆的对称性知,定点在x轴上?...

    有很多圆锥曲线综合题要研究定点问题 答案里往往有这样一句话 由椭圆的对称性知 定点必在x轴上 或者说一句 显然定点在y轴上 看得童鞋们丈二和尚摸不着头脑 1 读者提问 一位来自广东 昵称为 h 的高三学生这样提问 左老师好 请教一个定点问题
  • 什么是AppImage

    A 什么是AppImage 在linux系统中使用AppImage 多年以来 我们一直使用 DEB packages 来管理 Debian Ubuntu的软件包 使用 RPM 管理 Fedora SUSE 的软件包 用户使用这些包管理工具可
  • 华为数字化转型之道认知篇第一章数字化转型,华为的战略选择

    第一章 数字化转型 华为的战略选择 农业经济以土地为生产资料 工业经济以石油和各类矿产为生产资料 数字经济则以数据为生产资料 数字化转型以ICT平台为生产工具 以数据为生产资料 以服务为产品 不仅能为企业的传统业务赋予新动能 也能为企业带来
  • jq匹配偶数行_jQuery中两种奇偶选择器的区别

    原标题 jQuery中两种奇偶选择器的区别 jQuery中的选择器在选择元素的时候经常用到 今天主要介绍jQuery中的奇偶选择器 jquery中的奇偶选择器要用到CSS3伪类选择器 nth child nth child 的用法 直接匹配
  • 为云服务器添加python web环境

    为云服务器添加python web环境 自用不喜勿喷 当前配置 阿里云win10云服务器 anaconda配置的python环境 操作步骤 1 参照教程配置python及Django 2 pyCharm如何运行Django https ww
  • vue标签属性及其用法

    一 Vue的特点 1 采用组件化模式 提高代码的复用率 且让代码更好维护 2 声明编码 让编码人员无需直接操作DOM 提高开发效率 3 使用学你DOM 优秀的Diff算法 尽量服用DOM节点 二 Vue模板语法有两大类 1 插值语法 功能
  • Springboot修改内置Tomcat版本

    背景 Tomcat的安全漏洞需要升级版本进行解决 如 9 0 63 gt 9 0 75 1 Pom文件Springboot的依赖配置项 2 Ctrl 右键点击红色框选 3 全局搜索 修改 修改数值 启动测试
  • C++实现——string的所有操作

    C 中string的操作 Constructors 构造函数 用于字符串初始化 Operators 操作符 用于字符串比较和赋值 append 在字符串的末尾添加文本 assign 为字符串赋新值 at 按给定索引值返回字符 begin 返
  • 基于python实现的CS通信和P2P通信

    实验要求 C S通信实现要求 两台计算机分别模拟服务器 客户端 通过编程实现服务器端 客户端程序Socket Client 服务器端程序监听客户端向服务器端发出的请求 并返回数据给客户端 不采用方式 自定义通信协议 传输文件要足够大 例如
  • Python GUI: PyCahrm结合Pyqt5开发图形化界面 详细步骤 踩坑!

    1 下载安装pythonPython官网下载地址 注意 1 1 Python版本选择并不是越新越好 后面会提到 我安装的版本是 V3 5 4 64位 1 2 安装的时候一定要勾选pip和add python to path 自动添加到环境变
  • 清华大佬耗时36个小时,终于整理出来了一份Python自学计划,学不会退出IT界

    在人工智能的风口 Python这门胶水语言越来越火 很多小伙伴也开始学习Python 但是没有一份合适的学习规划怎么能行 今天特意为大家整理了一份Python自学计划 希望可以帮助到处在迷茫期的你们 文末获取o 这份自学计划是我精心整理的
  • React+AntDesign开发完整的考勤系统前端页面(一)

    一 项目准备工作 1 开发环境准备 准备好Visual Studio Code前端开发工具 下载并安装Node js 2 项目准备 本次项目使用umi脚手架的方式创建 1 打开开发工具打开项目文件夹并新建终端在终端里面输入命令 npm i
  • 【概率论与数理统计】猴博士 笔记 p17-20 一、二维连续型:已知F,求f;已知f,求f

    一维连续型已知F 求f 题型 步骤 f是F的导数 对F求导即可得到f 例1 解 例2 解 一维连续型已知f 求f 题型 已知f x 求f y 步骤 注意 要满足要求 Y g X 满足单增或单减才能用公式法 看起来有点抽象 我们看一道例题 此
  • GAMES101 作业3(附三角形重心坐标,Blinn-Phong光照模型及法线贴图推导)

    目录 写在前面 第一题 三角形重心坐标 第二题 Blinn Phong光照模型 第三题 纹理贴图 第四题 凹凸贴图实现及法线贴图推导 第五题 位移贴图 写在前面 main 函数中 std function
  • FedDG: Federated Domain Generalization on Medical Image Segmentation via Episodic Learning

    FedDG Federated Domain Generalization on Medical Image Segmentation via Episodic Learning in Continuous Frequency Space
  • 数据库锁表的查询和处理

    如果遇到数据库锁表 通常需要用如下方法处理 查看表的partnum情况 oncheck pt shjz mzb baf01 grep i partnum 这个里面包含了多个分区的partnum 也包含了索引的partnum Partitio
  • Windows安装和配置VCenter

    Vcenter的环境搭建和配置 Vcenter简介 Vcenter一般指 VMware vCenter Server VMware vCenterServer 提供了一个可伸缩 可扩展的平台 为 虚拟化管理奠定了基础 VMware vCen
  • 射线与AABB型包围盒相交算法

    基础知识 AABB包围盒 也叫轴对称包围盒 意思就是它的六个面总是分别平行XYZ三个轴的 相交计算原理 计算射线与包围盒每个面的平面的交点 计算这个点是否在包围盒面的范围 在就是相交 不在就是没有相交 图解 用个2D图形简单讲解一下 首先从
  • C++ 一些学习笔记(十一)类和对象-继承

    C 一些学习笔记 十一 类和对象 继承 主要是针对之前学习C的时候一些知识点的遗漏的补充 还有一些我自己觉得比较重要的地方 本文章的主要内容是关于继承 1 继承的基本语法 2 继承方式 3 继承中的对象模型 4 继承中的构造和析构顺序 5
  • 虚拟化技术调研

    虚拟化技术调研 容器 虚拟化技术 容器是一种轻量级虚拟化技术 它可以在一台宿主机上共享内核 并且在运行应用程序时具有独立的文件系统空间 网络空间 进程空间和用户空间 常见的容器技术有Docker和LXC KVM虚拟化技术 KVM是一种全虚拟