虚拟化技术 存储池命令总结

存储池管理命令 定义存储池 virsh pool-define <XML文件> 从指定的XML文件定义一个存储池,但不启动它。 以具体参数定义存储池 virsh pool-define-as --name <名称> --type <类型> [--source-host <源主机>] [--source-path <源路径>] [--target <目标路径>] 直接在命令行中定义一个存储池,不使用XML文件。例如: virsh pool-define-as --name mypool --type dir --target /var/lib/libvirt/images 启动存储池 virsh pool-start <存储池名称> 启动一个已经定义的存储池。 停止存储池 virsh pool-destroy <存储池名称> 停止一个已经启动的存储池,但不删除它的定义。 自动启动存储池 virsh pool-autostart <存储池名称> 设置存储池为自动启动,在系统引导时启动。 取消自动启动 virsh pool-autostart --disable <存储池名称> 禁止存储池自动启动。 删除存储池 virsh pool-undefine <存储池名称> 删除存储池的定义,但不影响存储池中的数据。 删除并清空存储池 virsh pool-delete <存储池名称> 删除存储池及其所有数据。 列出存储池 virsh pool-list [--all] 列出所有存储池。默认只列出活动的存储池,加上**-all**参数可以列出所有存储池,包括未启动的。 查看存储池信息 virsh pool-info <存储池名称> 显示指定存储池的详细信息。 查看存储池XML配置...

August 23, 2024 · 1 min · Gweek

虚拟化技术 镜像与快照管理

一、增量镜像 在KVM虚拟化环境中,增量镜像是一种非常有用的技术,它允许你在一个基础镜像的基础上创建多个子镜像,每个子镜像都只记录自己的修改,从而节省磁盘空间并快速复制虚拟机。 导入cirros的相关镜像(cirros-0.5.1-x86_64-disk.img)创建一个名称为vm1的虚拟机。 实验环境:上传镜像文件cirros-0.5.1-x86_64-disk.img至/vm目录下 cd /vm 进入/vm目录下 ls 查看/vm目录下的文件 mv cirros-0.5.1-x86_64-disk.img cirros.qcow2 将镜像文件改名为cirros.qcow2 qemu-img info cirros.qcow2 查看镜像文件信息 由于实验要求在虚拟机中创建一个200M的文件,所以在本实验中要对镜像文件进行扩容 qemu-img resize cirros.qcow2 +900M qemu-img info cirros.qcow2 再次查看镜像文件信息,看是否扩容成功 virt-install --name cirros --vcpu=1 --ram=128 --import --disk path=cirros.qcow2 --network network=default --os-type=linux 利用导入现有镜像文件创建一个名为cirros的虚拟机 qemu-img create -b cirros.qcow2 -f qcow2 cirros1.qcow2 创建cirros1.qcow2增量镜像文件 qemu-img info cirros1.qcow2 查看增量镜像文件信息 cp /etc/libvirt/qemu/cirros.xml /etc/libvirt/qemu/cirros1.xml 复制一份cirros的配置文件并命名为cirros1.xml vi /etc/libvirt/qemu/cirros1.xml 修改cirros1的配置文件 修改参数 name:cirros1 / uuid / source file / mac地址 virsh define /etc/libvirt/qemu/cirros1.xml 利用virsh define注册虚拟机...

August 12, 2024 · 1 min · Gweek

虚拟化技术 虚拟机的创建

一、利用图形化界面安装 1、打开图形化界面 利用命令virt-manager 或者点击Applications——SystemTools——Virtual Machine Manager 2、开始安装 二、利用命令安装虚拟机 1、利用qemu-img创建虚拟机的虚拟磁盘 qemu-img create -f qcow2 /var/lib/libvirt/images/vm2.qcow2 1G 2、查看所创建的虚拟磁盘的信息 qemu-img info /var/lib/libvirt/images/vm2.qcow2 3、利用virt-install命令创建虚拟机 virt-install --name=vm2 --disk path=/var/lib/libvirt/images/vm2.qcow2 --vcpus=1 --ram=512 --cdrom=/vm/iso/Core-11.1.iso --network network=default --os-type=linux 4、利用virsh命令查看虚拟机 virsh list —all 5、virt-install参数说明 virt-install 是一个用于创建新虚拟机的命令行工具,它有许多参数可以配置虚拟机的各种设置。以下是一些常用的 virt-install 命令参数及其详细说明: n 或 -name: 指定虚拟机的名称。 r 或 -ram: 以 MB 为单位指定虚拟机的内存大小。 -vcpus: 配置虚拟 CPU 的数量,可以指定最大 vCPU 数量、套接字数、核心数和线程数。 -disk: 指定存储选项,如磁盘路径、大小(GB)、格式等。 -network: 配置网络接口,可以指定桥接或网络名称、模型、MAC 地址等。 -graphics: 配置图形显示,如 VNC 或 Spice,以及相关的端口、密码等。 -os-type: 指定操作系统类型,如 linux、unix 或 windows。...

August 10, 2024 · 1 min · Gweek

虚拟化技术 管理虚拟磁盘

一、稀疏文件与非稀疏文件 稀疏文件(sparse file)和非稀疏文件(non-sparse file)是指在存储介质上分配空间的方式不同的两种文件类型。 稀疏文件: 稀疏文件是一种文件,其中包含许多连续的空字节块,这些空字节块在存储介质上并没有实际分配存储空间。换句话说,文件系统会记录这些空洞的位置和大小,但不会在磁盘上实际写入这些空洞的内容。这样的文件通常具有很大的尺寸,但实际上占用的磁盘空间可能远小于其所指示的大小。 非稀疏文件: 非稀疏文件是指在存储介质上分配了实际存储空间的文件。换句话说,文件系统在磁盘上分配了和文件大小相匹配的存储空间,并将文件的内容写入到这些分配的空间中。因此,非稀疏文件的存储大小与其所指示的大小相匹配。 稀疏文件通常用于存储包含大量连续空白数据的文件,例如虚拟机磁盘镜像文件或者日志文件。这样做可以节省磁盘空间,因为文件系统不需要为这些连续的空白数据分配实际的存储空间。 二、命令 dd 是一个常用的命令行工具,在 UNIX 和类 UNIX 系统上用于复制和转换文件。它的使用方式相对灵活,但也因此有些复杂。下面是 dd 命令的各参数详解: if=:指定输入文件(input file),即源文件的路径。如果不指定该参数,默认从标准输入中读取数据。 of=:指定输出文件(output file),即目标文件的路径。如果不指定该参数,默认将数据写入标准输出。 bs=:指定块大小(block size),即每次读取和写入的数据块大小。块大小可以使用字节、千字节、兆字节等单位表示,例如 bs=4k 表示每次读取和写入 4KB 的数据块。默认的块大小通常为 512 字节。 count=:指定要复制的块数,即读取和写入数据的次数。如果不指定该参数,dd 会尽可能读取输入文件的全部内容。 skip=:指定跳过的块数,即在复制数据之前跳过的输入块数。通常与 count= 参数一起使用,用于在输入文件中定位复制的起始位置。 seek=:指定跳过的块数,即在输出文件中定位写入数据的起始位置。通常与 count= 参数一起使用,用于在输出文件中定位写入数据的位置。 status=:指定 dd 命令在执行过程中输出的信息级别。常用的值包括 none(无输出)、noxfer(输出摘要信息)、progress(输出进度信息)等。 conv=:指定转换参数,用于对输入或输出数据进行转换。常用的转换参数包括: ​ ascii:将 EBCDIC 字符转换为 ASCII 字符。 ​ ebcdic:将 ASCII 字符转换为 EBCDIC 字符。 ​ block:对数据进行块大小调整,确保每个块的大小为 bs= 参数指定的大小。 ​ unblock:取消块大小调整,将数据重新转换为未调整的形式。 ​ lcase:将大写字母转换为小写字母。 ​ ucase:将小写字母转换为大写字母。 ​ sparse:对输出文件进行稀疏处理,即尽可能使用稀疏文件特性来节省磁盘空间。 ​ sync:在每个块的末尾添加填充字节,以使输出块的大小与 bs= 参数指定的大小相匹配。...

July 29, 2024 · 2 min · Gweek

虚拟化技术 存储池命令总结

存储池管理命令 定义存储池 virsh pool-define <XML文件> 从指定的XML文件定义一个存储池,但不启动它。 以具体参数定义存储池 virsh pool-define-as --name <名称> --type <类型> [--source-host <源主机>] [--source-path <源路径>] [--target <目标路径>] 直接在命令行中定义一个存储池,不使用XML文件。例如: virsh pool-define-as --name mypool --type dir --target /var/lib/libvirt/images 启动存储池 virsh pool-start <存储池名称> 启动一个已经定义的存储池。 停止存储池 virsh pool-destroy <存储池名称> 停止一个已经启动的存储池,但不删除它的定义。 自动启动存储池 virsh pool-autostart <存储池名称> 设置存储池为自动启动,在系统引导时启动。 取消自动启动 virsh pool-autostart --disable <存储池名称> 禁止存储池自动启动。 删除存储池 virsh pool-undefine <存储池名称> 删除存储池的定义,但不影响存储池中的数据。 删除并清空存储池 virsh pool-delete <存储池名称> 删除存储池及其所有数据。 列出存储池 virsh pool-list [--all] 列出所有存储池。默认只列出活动的存储池,加上**-all**参数可以列出所有存储池,包括未启动的。 查看存储池信息 virsh pool-info <存储池名称> 显示指定存储池的详细信息。 查看存储池XML配置...

July 28, 2024 · 1 min · Gweek

虚拟化技术 基础知识

一、什么是虚拟化? 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。 二、Hypervisor是什么? Hypervisor一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。 Hypervisor是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。 三、虚拟化有哪些分类? 1. 完全虚拟化 完全虚拟化方法,使用Hypervisor这种中间层软件,在虚拟服务器和底层硬件之间建立一个抽象层。 Hypervisor可以捕获CPU指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是,性能方面不如裸机,因为Hypervisor需要占用一些资源,给处理器带来开销。 在完全虚拟化的环境下,Hypervisor运行在裸硬件上,充当主机操作系统,而由Hypervisor管理的虚拟服务器运行客户端操作系统(Guest OS)。 2. 准虚拟化 完全虚拟化是处理器密集型技术,因为它要求Hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户操作系统,让它以为自己运行在虚拟环境下,能够与Hypervisor协同工作,这种方法就叫准虚拟化。 准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与Hypervisor协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。它的客户操作系统(Guest OS)集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。 3. 操作系统层虚拟化 实现虚拟化还有一个方法,那就是在操作系统层面增添虚拟服务器功能。就操作系统层的虚拟化而言,没有独立的Hypervisor层。相反主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统。 虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。 4. 桌面虚拟 服务器虚拟化主要针对服务器而言,而虚拟化最接近用户的还是要算的上桌面虚拟化了,桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新。终端数据可以集中存储在中心机房里,安全性相对传统桌面应用要高很多。桌面虚拟化可以使得一个人拥有多个桌面环境,也可以把一个桌面环境供多人使用,节省了license。另外,桌面虚拟化依托于服务器虚拟化。没有服务器虚拟化,这个桌面虚拟化的优势将完全没有了。不仅如此,还浪费了许多管理资本。 5. 硬件虚拟化 英特尔虚拟化技术(IVT,Intel Virtualization Technology)是由英特尔开发的一种虚拟化技术,利用IVT可以对在系统上的客操作系统,通过虚拟机查看器(VMM,Virtual Machine Monitor)来虚拟一套硬件设备,以供客操作系统使用。这些技术以往在VMware与Virtual PC上都通过软件实现,而通过IVT的硬件支持可以加速此类软件的进行。 AMD虚拟化(AMD Virtualization),缩写为“AMD-V”,是AMD为64位的x86架构提供的虚拟化扩展的名称,但有时仍然会用“Pacifica”(AMD开发这项扩展时的内部项目代码)来指代它。 四、有哪些虚拟化技术? 虚拟化技术指的是软件层面的实现虚拟化的技术,整体上分为开源虚拟化和商业虚拟化两大阵营。典型的代表有:Xen,KVM,WMware,Hyper-V、Docker容器等。 Xen和KVM,是开源免费的虚拟化软件;WMware是付费的虚拟化软件;Hyper-V微软的收费虚拟化技术;Docker是一种容器技术,属于一种轻量级虚拟化技术。 虚拟化软件产品有很多,无论是开源还是商业的,上面只是列举了很少的几款,每款软件产品有其优缺点以及应用场景,需要根据业务场景选择,下面简单介绍一下KVM和Xen。 1. KVM(Kernel-based Virtual Machine)基于内核的虚拟 KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。 2. Xen Xen是***类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和准虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供在所有Linux版本上的免费产品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。 Xen最重要的优势在于准虚拟化,此外未经修改的操作系统也可以直接在Xen上运行(如Windows),能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到Hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。 五、还是不明白吗? 讲了那么多,你可能有点晕,因为概念比较接近,容易混淆。下面重点解释一下几个关键概念。 1. 虚拟化类型 虚拟化类型,比如完全虚拟化、准虚拟化等指的是设计层面的实现虚拟化的方案和思想,而不涉及具体的虚拟化技术。 2. 虚拟化技术 虚拟化技术指的是软件层面的实现虚拟化的技术,整体上分为开源虚拟化和商业虚拟化两大阵营。部分商业虚拟化的技术也是在开源技术的基础之上发展而来的。 3. 虚拟机软件 基于虚拟化技术的单机版虚拟机管理软件,如:...

July 27, 2024 · 1 min · Gweek

虚拟化技术 向KVM虚拟机添加卷

1. 创建新的存储卷 首先,需要创建一个新的存储卷。可以使用 qemu-img 工具来创建一个新的虚拟磁盘文件。例如,创建一个大小为10GB的QCOW2格式的磁盘文件: qemu-img create -f qcow2 /var/lib/libvirt/images/new_volume.qcow2 10G 2. 编辑虚拟机配置 接下来,需要编辑虚拟机的XML配置文件,以添加新的存储卷。可以使用 virsh edit 命令来编辑虚拟机的配置。例如,如果虚拟机名为 myvm,可以使用以下命令: virsh edit myvm 在编辑器中打开的XML文件中,找到 <devices> 部分,然后添加一个新的 <disk> 条目: <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/new_volume.qcow2'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> 注意: <source file='/var/lib/libvirt/images/new_volume.qcow2'/>:指定新创建的卷的路径。 <target dev='vdb' bus='virtio'/>:dev 表示设备名称,应该是一个未使用的设备名称(例如,vdb、**vdc**等)。 <address> 部分可能需要根据虚拟机的配置进行调整。 保存并关闭编辑器。 3. 重新启动虚拟机 编辑完成后,重新启动虚拟机以应用更改: virsh shutdown myvm virsh start myvm 4. 在虚拟机中配置新卷(进入虚拟机) 登录到虚拟机,使用 lsblk 或 fdisk -l 命令检查新磁盘是否已被识别。例如:...

July 26, 2024 · 1 min · Gweek

虚拟化技术 qemu-img命令

1、qemu-img 是一种命令行工具,用于管理 QEMU 虚拟机镜像文件。它提供了多种功能,包括创建、转换、检查、调整大小和查看镜像文件的信息。QEMU 虚拟机将硬盘和光驱等物理设备模拟为镜像文件,因此 qemu-img 是 QEMU 虚拟机管理的重要工具。 2、语法 qemu-img <command> [options] filename [size] 3、命令 qemu-img 支持以下命令: create: 创建镜像文件 info: 查看镜像文件信息 convert: 转换镜像格式 check: 检查镜像完整性 resize: 调整镜像大小 snapshot: 管理镜像快照 map: 将镜像文件映射到内存 rebase: 更改镜像文件的后端镜像文件 commit: 提交镜像文件的更改 4、选项 每个命令都支持各种选项,用于控制命令的行为。有关每个命令的可用选项的详细信息,请参阅 qemu-img 官方文档。 5、示例 以下是一些 qemu-img 命令的示例: 创建一个 10GB 的名为 my-image.qcow2 的 qcow2 镜像文件: qemu-img create -f qcow2 my-image.qcow2 10G 查看 my-image.qcow2 镜像文件的信息: qemu-img info my-image.qcow2 将 my-image.qcow2 镜像文件转换为 raw 格式: qemu-img convert -f qcow2 -O raw my-image....

July 25, 2024 · 1 min · Gweek

虚拟化技术 KVM的安装

kvm相关安装包及其作用: qemu-kvm 主要的KVM程序包 python-virtinst 创建虚拟机所需要的命令行工具和程序库 virt-manager GUI虚拟机管理工具 virt-top 虚拟机统计命令 virt-viewer GUI连接程序,连接到已配置好的虚拟机 libvirt C语言工具包,提供libvirt服务 libvirt-client 为虚拟客户机提供的C语言工具包 virt-install 基于libvirt服务的虚拟机创建命令 bridge-utils 创建和管理桥接设备的工具 KVM软件安装(方法一) 1、 环境准备 关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled vi /etc/sysconfig/selinux 查看CPU是否⽀持VT技术 cat /proc/cpuinfo | grep -E 'vmx|svm' 如果输出结果包含 svm 或 vmx 字样,则表示 CPU 支持虚拟化技术。 2、清理环境:卸载KVM (可选) yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y rm -rf /var/lib/libvirt /etc/libvirt/ 3、更改yum源 更换完yum源后,输入 yum makecache 4、安装软件 yum install qemu-kvm libvirt virt-manager libguestfs-tools virt-install.noarch -y 验证 KVM 模块...

July 23, 2024 · 2 min · Gweek

虚拟化技术 KVM基于磁盘的存储池

一、存储池 在KVM(Kernel-based Virtual Machine)中,存储池(Storage Pool)是一个用来组织和管理虚拟机磁盘存储的概念。存储池就像一个仓库,专门用来放置虚拟机的“硬盘”文件(这些文件通常是虚拟机的磁盘映像)。所谓的存储池也可以理解为本地目录,可以是远端磁盘阵列(ISCSI,NFS)分配过来的磁盘或目录,当然也可以是各类分布式文件系统。 存储池是放置虚拟机存储的位置,可以是本地,也可以是网络存储,具体的虚拟机实例放置在卷上,创建的存储池可以理解为一种映射关系,即将某一块挂载至宿主机器上的存储空间形成可被KVM使用的逻辑存储池,以方便虚拟主机的管理。 二、基于磁盘的存储池 基于磁盘的存储池(disk-based storage pool)是指将物理磁盘创建一个单一的、逻辑上的存储资源池。 三、利用virt-manager图形化界面添加及删除 卷及存储池的删除 对sdc磁盘的分区表进行破坏 dd if=/dev/zero of=/dev/sdc bs=1M count=2 至此,存储池删除完毕。 四、利用命令创建删除存储池 创建存储池 定义一个存储池 virsh pool-define-as disk_pool --type disk --source-dev "/dev/sdc" --target "/mnt" 查看存储池 virsh pool-list --all 构建存储池 virsh pool-build disk_pool 启用存储池并开启自动启动 virsh pool-start disk_pool virsh pool-autostart disk_pool 再次查看存储池 virsh pool-list --all 删除存储池 virsh pool-destroy disk_pool #停止存储池 virsh pool-undefine disk_pool #取消定义存储池 virsh pool-list --all #查看存储池

July 22, 2024 · 1 min · Gweek