检查当前机器是不是虚拟机并确认底层虚拟化技术

要确定当前运行的系统是否在虚拟机(VM)中,并了解底层虚拟化技术,可以使用一些命令和工具进行检查。以下是几种方法: 使用 dmidecode 命令: dmidecode 是一个用于获取 BIOS、系统、主板和处理器信息的工具。要使用 dmidecode,请确保您已安装它。然后,可以运行以下命令: ...

April 30, 2023 | 2 分钟 | 533 字 | Tianlun Song

QEMU 编译报错 undefined reference to g_app_info_launch_default_for_uri_finish 解决过程

编译 QEMU 时报如下错误: /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_app_info_launch_default_for_uri_finish' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_type_check_instance_is_fundamentally_a' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_app_info_launch_default_for_uri_async' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_strv_contains' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_type' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_drive_is_removable' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_application_get_resource_base_path' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_log_structured_standard' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_type_get_instance_count' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_n_items' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_file_enumerator_iterate' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_param_spec_get_name_quark' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_item' collect2: error: ld returned 1 exit status make[1]: *** [qemu-system-x86_64] Error 1 make: *** [subdir-x86_64-softmmu] Error 2 先看一下报错的动态链接库依赖了哪些库: ...

August 20, 2021 | 2 分钟 | 827 字 | Tianlun Song

virt-manager 启动提示 virt qemu-sock no such file or directory

检查后应该是 virtqemud 服务没起来导致的,编译安装默认生成的服务路径在 /usr/local/* 下,而我们指定了安装在默认位置 /usr ,参考 systemd 无法启动的解决方法即可解决该问题。 首先看一下 /usr/sbin/virtqemud 这个文件是存在的,下面继续操作,首先使能该服务。 ...

July 9, 2021 | 1 分钟 | 257 字 | Tianlun Song

Linux虚拟化入门(五)KVM 管理命令指南

qemu-img是QEMU的磁盘管理工具 格式: qemu-img command [command options] command: check 对磁盘镜像文件进行一致性检查,查找镜像文件中的错误 create 创建一个可以指定格式、大小、名称的镜像文件 convert 镜像文件格式转换 info 展示镜像文件的信息 virsh kvm虚拟机管理工具 [root@node1 ~]# virsh help command: Domain Management (help keyword 'domain'): attach-device 从一个XML文件附加装置 attach-disk 附加磁盘设备 attach-interface 获得网络界面 autostart 自动开始一个域 blkdeviotune 设定或者查询块设备 I/O 调节参数。 blkiotune 获取或者数值 blkio 参数 blockcommit 启动块提交操作。 blockcopy 启动块复制操作。 blockjob 管理活跃块操作 blockpull 使用其后端映像填充磁盘。 blockresize 创新定义域块设备大小 change-media 更改 CD 介质或者软盘驱动器 console 连接到客户会话 cpu-stats 显示域 cpu 统计数据 create 从一个 XML 文件创建一个域 define 从一个 XML 文件定义(但不开始)一个域 desc 显示或者设定域描述或者标题 destroy 销毁(停止)域 detach-device 从一个 XML 文件分离设备 detach-device-alias detach device from an alias detach-disk 分离磁盘设备 detach-interface 分离网络界面 domdisplay 域显示连接 URI domfsfreeze Freeze domain's mounted filesystems. domfsthaw Thaw domain's mounted filesystems. domfsinfo Get information of domain's mounted filesystems. domfstrim 在域挂载的文件系统中调用 fstrim。 domhostname 输出域主机名 domid 把一个域名或 UUID 转换为域 id domif-setlink 设定虚拟接口的链接状态 domiftune 获取/设定虚拟接口参数 domjobabort 忽略活跃域任务 domjobinfo 域任务信息 domname 将域 id 或 UUID 转换为域名 domrename rename a domain dompmsuspend 使用电源管理功能挂起域 dompmwakeup 从 pmsuspended 状态唤醒域 domuuid 把一个域名或 id 转换为域 UUID domxml-from-native 将原始配置转换为域 XML domxml-to-native 将域 XML 转换为原始配置 dump 把一个域的内核 dump 到一个文件中以方便分析 dumpxml XML 中的域信息 edit 编辑某个域的 XML 配置 event Domain Events inject-nmi 在虚拟机中输入 NMI iothreadinfo view domain IOThreads iothreadpin control domain IOThread affinity iothreadadd add an IOThread to the guest domain iothreaddel delete an IOThread from the guest domain send-key 向虚拟机发送序列号 send-process-signal 向进程发送信号 lxc-enter-namespace LXC 虚拟机进入名称空间 managedsave 管理域状态的保存 managedsave-remove 删除域的管理保存 managedsave-edit edit XML for a domain's managed save state file managedsave-dumpxml Domain information of managed save state file in XML managedsave-define redefine the XML for a domain's managed save state file memtune 获取或者数值内存参数 perf Get or set perf event metadata show or set domain's custom XML metadata migrate 将域迁移到另一个主机中 migrate-setmaxdowntime 设定最大可耐受故障时间 migrate-getmaxdowntime get maximum tolerable downtime migrate-compcache 获取/设定压缩缓存大小 migrate-setspeed 设定迁移带宽的最大值 migrate-getspeed 获取最长迁移带宽 migrate-postcopy Switch running migration from pre-copy to post-copy numatune 获取或者数值 numa 参数 qemu-attach QEMU 附加 qemu-monitor-command QEMU 监控程序命令 qemu-monitor-event QEMU Monitor Events qemu-agent-command QEMU 虚拟机代理命令 reboot 重新启动一个域 reset 重新设定域 restore 从一个存在一个文件中的状态恢复一个域 resume 重新恢复一个域 save 把一个域的状态保存到一个文件 save-image-define 为域的保存状态文件重新定义 XML save-image-dumpxml 在 XML 中保存状态域信息 save-image-edit 为域保存状态文件编辑 XML schedinfo 显示/设置日程安排变量 screenshot 提取当前域控制台快照并保存到文件中 set-lifecycle-action change lifecycle actions set-user-password set the user password inside the domain setmaxmem 改变最大内存限制值 setmem 改变内存的分配 setvcpus 改变虚拟 CPU 的号 shutdown 关闭一个域 start 开始一个(以前定义的)非活跃的域 suspend 挂起一个域 ttyconsole tty 控制台 undefine 取消定义一个域 update-device 从 XML 文件中关系设备 vcpucount 域 vcpu 计数 vcpuinfo 详细的域 vcpu 信息 vcpupin 控制或者查询域 vcpu 亲和性 emulatorpin 控制火车查询域模拟器亲和性 vncdisplay vnc 显示 guestvcpus query or modify state of vcpu in the guest (via agent) setvcpu attach/detach vcpu or groups of threads domblkthreshold set the threshold for block-threshold event for a given block device or it's backing chain element Domain Monitoring (help keyword 'monitor'): domblkerror 在块设备中显示错误 domblkinfo 域块设备大小信息 domblklist 列出所有域块 domblkstat 获得域设备块状态 domcontrol 域控制接口状态 domif-getlink 获取虚拟接口链接状态 domifaddr Get network interfaces' addresses for a running domain domiflist 列出所有域虚拟接口 domifstat 获得域网络接口状态 dominfo 域信息 dommemstat 获取域的内存统计 domstate 域状态 domstats get statistics about one or multiple domains domtime domain time list 列出域 Host and Hypervisor (help keyword 'host'): allocpages Manipulate pages pool size capabilities 性能 cpu-baseline 计算基线 CPU cpu-compare 使用 XML 文件中描述的 CPU 与主机 CPU 进行对比 cpu-models CPU models domcapabilities domain capabilities freecell NUMA可用内存 freepages NUMA free pages hostname 打印管理程序主机名 hypervisor-cpu-baseline compute baseline CPU usable by a specific hypervisor hypervisor-cpu-compare compare a CPU with the CPU created by a hypervisor on the host maxvcpus 连接 vcpu 最大值 node-memory-tune 获取或者设定节点内存参数 nodecpumap 节点 cpu 映射 nodecpustats 输出节点的 cpu 状统计数据。 nodeinfo 节点信息 nodememstats 输出节点的内存状统计数据。 nodesuspend 在给定时间段挂起主机节点 sysinfo 输出 hypervisor sysinfo uri 打印管理程序典型的URI version 显示版本 Interface (help keyword 'interface'): iface-begin 生成当前接口设置快照,可在今后用于提交 (iface-commit) 或者恢复 (iface-rollback) iface-bridge 生成桥接设备并为其附加一个现有网络设备 iface-commit 提交 iface-begin 后的更改并释放恢复点 iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file iface-destroy 删除物理主机接口(启用它请执行 "if-down") iface-dumpxml XML 中的接口信息 iface-edit 为物理主机界面编辑 XML 配置 iface-list 物理主机接口列表 iface-mac 将接口名称转换为接口 MAC 地址 iface-name 将接口 MAC 地址转换为接口名称 iface-rollback 恢复到之前保存的使用 iface-begin 生成的更改 iface-start 启动物理主机接口(启用它请执行 "if-up") iface-unbridge 分离其辅助设备后取消定义桥接设备 iface-undefine 取消定义物理主机接口(从配置中删除) Network Filter (help keyword 'filter'): nwfilter-define 使用 XML 文件定义或者更新网络过滤器 nwfilter-dumpxml XML 中的网络过滤器信息 nwfilter-edit 为网络过滤器编辑 XML 配置 nwfilter-list 列出网络过滤器 nwfilter-undefine 取消定义网络过滤器 nwfilter-binding-create create a network filter binding from an XML file nwfilter-binding-delete delete a network filter binding nwfilter-binding-dumpxml XML 中的网络过滤器信息 nwfilter-binding-list list network filter bindings Networking (help keyword 'network'): net-autostart 自动开始网络 net-create 从一个 XML 文件创建一个网络 net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file net-destroy 销毁(停止)网络 net-dhcp-leases print lease info for a given network net-dumpxml XML 中的网络信息 net-edit 为网络编辑 XML 配置 net-event Network Events net-info 网络信息 net-list 列出网络 net-name 把一个网络UUID 转换为网络名 net-start 开始一个(以前定义的)不活跃的网络 net-undefine undefine a persistent network net-update 更新现有网络配置的部分 net-uuid 把一个网络名转换为网络UUID Node Device (help keyword 'nodedev'): nodedev-create 根据节点中的 XML 文件定义生成设备 nodedev-destroy 销毁(停止)节点中的设备 nodedev-detach 将节点设备与其设备驱动程序分离 nodedev-dumpxml XML 中的节点设备详情 nodedev-list 这台主机中中的枚举设备 nodedev-reattach 重新将节点设备附加到他的设备驱动程序中 nodedev-reset 重置节点设备 nodedev-event Node Device Events Secret (help keyword 'secret'): secret-define 定义或者修改 XML 中的 secret secret-dumpxml XML 中的 secret 属性 secret-event Secret Events secret-get-value secret 值输出 secret-list 列出 secret secret-set-value 设定 secret 值 secret-undefine 取消定义 secret Snapshot (help keyword 'snapshot'): snapshot-create 使用 XML 生成快照 snapshot-create-as 使用一组参数生成快照 snapshot-current 获取或者设定当前快照 snapshot-delete 删除域快照 snapshot-dumpxml 为域快照转储 XML snapshot-edit 编辑快照 XML snapshot-info 快照信息 snapshot-list 为域列出快照 snapshot-parent 获取快照的上级快照名称 snapshot-revert 将域转换为快照 Storage Pool (help keyword 'pool'): find-storage-pool-sources-as 找到潜在存储池源 find-storage-pool-sources 发现潜在存储池源 pool-autostart 自动启动某个池 pool-build 建立池 pool-create-as 从一组变量中创建一个池 pool-create 从一个 XML 文件中创建一个池 pool-define-as 在一组变量中定义池 pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file pool-delete 删除池 pool-destroy 销毁(删除)池 pool-dumpxml XML 中的池信息 pool-edit 为存储池编辑 XML 配置 pool-info 存储池信息 pool-list 列出池 pool-name 将池 UUID 转换为池名称 pool-refresh 刷新池 pool-start 启动一个(以前定义的)非活跃的池 pool-undefine 取消定义一个不活跃的池 pool-uuid 把一个池名称转换为池 UUID pool-event Storage Pool Events Storage Volume (help keyword 'volume'): vol-clone 克隆卷。 vol-create-as 从一组变量中创建卷 vol-create 从一个 XML 文件创建一个卷 vol-create-from 生成卷,使用另一个卷作为输入。 vol-delete 删除卷 vol-download 将卷内容下载到文件中 vol-dumpxml XML 中的卷信息 vol-info 存储卷信息 vol-key 为给定密钥或者路径返回卷密钥 vol-list 列出卷 vol-name 为给定密钥或者路径返回卷名 vol-path 为给定密钥或者路径返回卷路径 vol-pool 为给定密钥或者路径返回存储池 vol-resize 创新定义卷大小 vol-upload 将文件内容上传到卷中 vol-wipe 擦除卷 Virsh itself (help keyword 'virsh'): cd 更改当前目录 echo echo 参数 exit 退出这个非交互式终端 help 打印帮助 pwd 输出当前目录 quit 退出这个非交互式终端 connect 连接(重新连接)到 hypervisor 参考文献 KVM-virsh学习(虚拟机磁盘管理) 虚拟化技术之kvm管理工具virsh常用基础命令(一)

July 5, 2021 | 6 分钟 | 2607 字 | Tianlun Song

Linux虚拟化入门(四)KVM 创建一个 Centos 实例

前提条件 完整 KVM 环境 Centos 镜像 步骤 第一步、创建磁盘 qemu-img create -f qcow2 centos_kvm1.qcow2 16G 第二步、安装虚拟机 virt-install \ --virt-type=kvm \ --name=centos-kvm \ --hvm \ --vcpus=1 \ --memory=1024 \ --cdrom=/srv/kvm/CentOS-7-x86_64-Minimal-1810.iso \ --disk path=/srv/kvm/centos_kvm1.qcow2,size=16,format=qcow2 \ --graphics vnc,password=kvm,listen=::,port=5911 \ --network bridge=virbr0 \ --autostart \ --force 安装成功后使用任意一个可以访问KVM宿主机的带有桌面的设备上的 VNC viewer 进入 YourIp:5911 输入密码 kvm 就可以进入虚拟机,然后继续安装了。 ...

July 5, 2021 | 3 分钟 | 1105 字 | Tianlun Song

Linux虚拟化入门(三)Fedora 安装 KVM 管理环境

部署步骤 第一步、检查环境要求 使用如下命令检查您的 CPU 是否支持虚拟化: $ egrep '^flags.*(vmx|svm)' /proc/cpuinfo 如果没有任何输出,则说明您的系统不支持相关扩展功能。您仍然可以使用 QEMU/KVM ,但是虚拟将只能使用软件虚拟化(想当慢)。 ...

July 5, 2021 | 2 分钟 | 705 字 | Tianlun Song

Linux虚拟化入门(二)Hyper-V 开启 KVM 嵌套虚拟化

日常办公使用 Windows 平台,需要研究 KVM 的使用,此时就需要在 Windows 提供的 Hyper-V 工具运行 Linux 虚拟机来测试 KVM 相关的使用,但是在 Hyper-V 虚拟机中再次运行 KVM 虚拟化属于嵌套虚拟化,需要开启相关功能。 ...

July 5, 2021 | 2 分钟 | 635 字 | Tianlun Song

Linux虚拟化入门(一)Qemu,KVM,Virsh 概念指南

当你安装了一台Linux,想启动一个KVM虚拟机的时候,你会发现需要安装不同的软件,启动虚拟机的时候,有多种方法: virsh start kvm命令 qemu命令 qemu-kvm命令 qemu-system-x86_64命令 QEMU 首先看qemu,其中关键字emu,全称emulator,模拟器,所以单纯使用qemu是采用的完全虚拟化的模式。 ...

July 5, 2021 | 3 分钟 | 1185 字 | Tianlun Song

Kvm 虚拟机安装 OnlyOffice

OnlyOffice OnlyOffice 是一个开源的办公套件,由 Ascensio System SIA 公司开发,提供了在线文档编辑、文档管理、文档协作、邮件和项目管理等功能。(WikiPedia) 打开官网可以看到 OnlyOffice 提供企业版、高校版等多个收费版本,在这里我们安装开源免费的 社区版。社区版提供多种安装方式,在这里我们选择使用官方ONLYOFFICE Docker容器安装ONLYOFFICE社区版及其正常运行所需的全部依赖项。旨在最大程度的重现官方建议的环境节约时间。请注意,官方建议安装环境为 2C/6G/40GB 。 ...

December 1, 2019 | 2 分钟 | 595 字 | Tianlun Song

KVM虚拟机安装 GitLab EE

GitLab 是一个基于网页的软件开发生命周期管理工具,提供了 git 代码仓库、知识库、问题追踪、CI/CD 流水线功能,使用开源许可证,由 GitLab 公司开发(来自 WikiPedia)。 ...

November 28, 2019 | 3 分钟 | 1095 字 | Tianlun Song