1263 lines
475 KiB
HTML
1263 lines
475 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html><head><title>3. KVM 管理工具</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="3. KVM 管理工具"/><meta property="og:description" content="介绍了KVM管理工具,包括Libvirt、Virsh、virt-manager、Cockpit和Proxmox VE,探讨了它们的特点、安装配置、使用和管理方法,并讨论了未来发展趋势。."/><meta property="og:image" content="https://wiki.7wate.com/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../../../static/icon.png"/><meta name="description" content="介绍了KVM管理工具,包括Libvirt、Virsh、virt-manager、Cockpit和Proxmox VE,探讨了它们的特点、安装配置、使用和管理方法,并讨论了未来发展趋势。."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><script async src="https://umami.7wate.com/script.js" data-website-id="c061efdc-95dd-4d21-9d04-a1ffda0a85b9"></script><script>
|
|||
|
var _hmt = _hmt || [];
|
|||
|
(function() {
|
|||
|
var hm = document.createElement("script");
|
|||
|
hm.src = "https://hm.baidu.com/hm.js?94d8ccb156eb7c65abf317e6e01cdba9";
|
|||
|
var s = document.getElementsByTagName("script")[0];
|
|||
|
s.parentNode.insertBefore(hm, s);
|
|||
|
})();
|
|||
|
</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-MHMEL0F832"></script><script>
|
|||
|
(function() {
|
|||
|
window.dataLayer = window.dataLayer || [];
|
|||
|
function gtag() {
|
|||
|
window.dataLayer.push(arguments);
|
|||
|
}
|
|||
|
gtag('js', new Date());
|
|||
|
gtag('config', 'G-MHMEL0F832');
|
|||
|
})();
|
|||
|
</script><link href="../../../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="Tech/operating-system/Virtualization/2.KVM虚拟化/3.-KVM-管理工具"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title "><a href="../../../..">📚 X·Eden</a></h1><div class="spacer mobile-only"></div><div class="search "><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode "><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xmlSpace="preserve"><title>Light mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447
|
|||
|
<p>KVM 管理工具是用于管理和控制 KVM(Kernel-based Virtual Machine)虚拟化环境的工具。这些工具提供了创建、配置、监控和维护虚拟机的功能,简化了 KVM 虚拟化环境的管理。KVM 管理工具可以是命令行工具、图形化用户界面(GUI)工具或基于 Web 的管理平台。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/34f962e096fb6.svg" alt="KVM虚拟化架构全景图.svg"/></p>
|
|||
|
<p>KVM 管理工具在虚拟化环境中的作用和重要性主要体现在以下几个方面:</p>
|
|||
|
<ol>
|
|||
|
<li><strong>简化虚拟机管理</strong>:通过图形化界面或命令行工具,管理员可以方便地创建、配置和管理虚拟机,减少了手动配置的复杂性。</li>
|
|||
|
<li><strong>提高效率</strong>:管理工具提供自动化功能,如批量创建虚拟机、自动配置网络和存储,从而提高管理效率。</li>
|
|||
|
<li><strong>增强监控和维护</strong>:通过监控工具,可以实时监控虚拟机的性能和资源使用情况,及时发现和解决问题,确保系统稳定运行。</li>
|
|||
|
<li><strong>安全性和隔离</strong>:管理工具提供访问控制和权限管理功能,确保虚拟机和宿主机之间的安全隔离,保护数据和系统安全。</li>
|
|||
|
<li><strong>灵活性和可扩展性</strong>:支持多种虚拟机配置和管理需求,适应不同规模和复杂度的虚拟化环境。</li>
|
|||
|
</ol>
|
|||
|
<h2 id="libvirt">Libvirt<a aria-hidden="true" tabindex="-1" href="#libvirt" class="internal"> §</a></h2>
|
|||
|
<h3 id="libvirt-概述">Libvirt 概述<a aria-hidden="true" tabindex="-1" href="#libvirt-概述" class="internal"> §</a></h3>
|
|||
|
<p>**Libvirt 是一个开源的 API、守护进程和管理工具集,用于管理平台虚拟化。**其主要功能和特点包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>多种虚拟化后端支持</strong>:Libvirt 支持多种虚拟化技术,如 KVM、QEMU、Xen、VMware ESXi、Microsoft Hyper-V 等。</li>
|
|||
|
<li><strong>抽象化和统一管理接口</strong>:Libvirt 提供统一的 API 和管理工具,简化了不同虚拟化技术的管理。</li>
|
|||
|
<li><strong>丰富的管理功能</strong>:支持虚拟机的生命周期管理、存储管理、网络管理、快照、迁移等。</li>
|
|||
|
<li><strong>广泛的语言绑定</strong>:支持多种编程语言的 API 绑定,如 C、Python、Perl、Java、Go 等,方便开发者集成和扩展。</li>
|
|||
|
</ul>
|
|||
|
<p>**Libvirt 支持多种虚拟化后端,**主要包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>KVM/QEMU</strong>:主流的开源虚拟化解决方案,广泛应用于 Linux 服务器和桌面环境。</li>
|
|||
|
<li><strong>Xen</strong>:高性能的开源虚拟化技术,特别适用于服务器虚拟化和云计算。</li>
|
|||
|
<li><strong>VMware ESXi</strong>:商业虚拟化解决方案,广泛应用于企业数据中心。</li>
|
|||
|
<li><strong>Microsoft Hyper-V</strong>:Windows Server 内置的虚拟化技术,适用于 Windows 环境。</li>
|
|||
|
<li><strong>其他</strong>:还支持 LXC(Linux 容器)、OpenVZ 等轻量级虚拟化技术。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="libvirt-安装与配置">Libvirt 安装与配置<a aria-hidden="true" tabindex="-1" href="#libvirt-安装与配置" class="internal"> §</a></h3>
|
|||
|
<p>在不同的 Linux 发行版上安装 Libvirt,步骤如下:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>在 Ubuntu 上</strong>:</li>
|
|||
|
</ul>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">update</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirt-daemon-system</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirt-clients</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--now</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirtd</span></span></code></pre></div>
|
|||
|
<ul>
|
|||
|
<li><strong>在 CentOS/RHEL 上</strong>:</li>
|
|||
|
</ul>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">update</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirt-python</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--now</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirtd</span></span></code></pre></div>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>配置文件位置</strong>:</p>
|
|||
|
<ul>
|
|||
|
<li>主配置文件:<code>/etc/libvirt/libvirtd.conf</code></li>
|
|||
|
<li>网络配置文件:<code>/etc/libvirt/qemu/networks/</code></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>常用配置项</strong>:</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="ini" data-theme="default"><code data-language="ini" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 启用 TCP 连接 </span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">listen_tls</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">=</span><span style="color:var(--shiki-color-text);"> 0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">listen_tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">=</span><span style="color:var(--shiki-color-text);"> 1</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">auth_tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">=</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string-expression);">"none"</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 设置日志级别</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">log_filters=</span><span style="color:var(--shiki-token-string-expression);">"3:remote 4:event"</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">log_outputs=</span><span style="color:var(--shiki-token-string-expression);">"1:file:/var/log/libvirt/libvirtd.log"</span></span></code></pre></div>
|
|||
|
<ol>
|
|||
|
<li><strong>重启 Libvirt 服务</strong>:</li>
|
|||
|
</ol>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">restart</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirtd</span></span></code></pre></div>
|
|||
|
<h3 id="virsh-管理命令">Virsh 管理命令<a aria-hidden="true" tabindex="-1" href="#virsh-管理命令" class="internal"> §</a></h3>
|
|||
|
<p><a href="https://www.libvirt.org/manpages/virsh.html" class="external">Virsh</a> 是一个强大的命令行工具,用于管理基于 libvirt 的虚拟化环境。其功能和特点包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>管理虚拟机生命周期</strong>:创建、删除、启动、停止、重启虚拟机。</li>
|
|||
|
<li><strong>配置和调整虚拟机资源</strong>:修改虚拟机的 CPU、内存、网络和存储配置。</li>
|
|||
|
<li><strong>快照管理</strong>:创建、恢复和删除虚拟机快照。</li>
|
|||
|
<li><strong>实时迁移</strong>:在主机之间迁移虚拟机。</li>
|
|||
|
<li><strong>网络和存储管理</strong>:创建和管理虚拟网络、存储池和存储卷。</li>
|
|||
|
<li><strong>脚本化和自动化</strong>:支持脚本化操作,方便批量管理和自动化运维。</li>
|
|||
|
</ul>
|
|||
|
<h4 id="virt-install">Virt-install<a aria-hidden="true" tabindex="-1" href="#virt-install" class="internal"> §</a></h4>
|
|||
|
<p><code>virsh-install</code> 命令是用于在 KVM 环境中创建虚拟机的一个非常常用的命令。它提供了一系列选项来配置和启动虚拟机。</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 创建虚拟机</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-install</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--name</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">myvm</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--ram</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">2048</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--disk</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">path=/var/lib/libvirt/images/myvm.qcow2,size=</span><span style="color:var(--shiki-token-constant);">20</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--vcpus</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">2</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--os-type</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">linux</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--os-variant</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ubuntu20.04</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--network</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">bridge=br0</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--graphics</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">vnc</span><span style="color:var(--shiki-color-text);"> \</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--cdrom</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">/path/to/ubuntu-20.04.iso</span></span></code></pre></div>
|
|||
|
<h5 id="常用选项">常用选项<a aria-hidden="true" tabindex="-1" href="#常用选项" class="internal"> §</a></h5>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>选项</th><th>描述</th></tr></thead><tbody><tr><td><code>--name</code></td><td>设置虚拟机的名称</td></tr><tr><td><code>--memory</code></td><td>指定虚拟机的内存大小(MB)</td></tr><tr><td><code>--vcpus</code></td><td>指定虚拟机的 CPU 数量</td></tr><tr><td><code>--disk</code></td><td>指定虚拟机的磁盘配置(如路径、大小、格式等)</td></tr><tr><td><code>--cdrom</code></td><td>指定安装介质(如 ISO 文件路径)</td></tr><tr><td><code>--network</code></td><td>指定虚拟机的网络配置</td></tr><tr><td><code>--os-variant</code></td><td>指定虚拟机操作系统的类型</td></tr><tr><td><code>--graphics</code></td><td>设置图形界面配置(如 VNC、Spice 等)</td></tr><tr><td><code>--extra-args</code></td><td>指定附加的引导参数</td></tr><tr><td><code>--location</code></td><td>指定安装介质的位置(如网络安装源)</td></tr><tr><td><code>--import</code></td><td>导入已有磁盘来创建虚拟机</td></tr><tr><td><code>--boot</code></td><td>指定引导选项(如引导顺序、引导设备等)</td></tr><tr><td><code>--initrd-inject</code></td><td>将文件注入到虚拟机的 initrd</td></tr><tr><td><code>--console</code></td><td>指定控制台配置</td></tr></tbody></table>
|
|||
|
<h4 id="通用">通用<a aria-hidden="true" tabindex="-1" href="#通用" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh help</code></td><td>显示所有可用命令的帮助信息</td></tr><tr><td><code>virsh quit</code> / <code>exit</code></td><td>退出 virsh 交互模式</td></tr><tr><td><code>virsh connect qemu:///system</code></td><td>连接到本地 QEMU/KVM 管理器</td></tr><tr><td><code>virsh uri</code></td><td>显示当前连接的 URI</td></tr><tr><td><code>virsh version</code></td><td>显示 libvirt 版本信息</td></tr><tr><td><code>virsh hostname</code></td><td>显示主机名</td></tr><tr><td><code>virsh sysinfo</code></td><td>显示系统信息</td></tr><tr><td><code>virsh nodeinfo</code></td><td>显示节点硬件信息</td></tr><tr><td><code>virsh list --all</code></td><td>列出所有虚拟机,包括运行中和停止的</td></tr><tr><td><code>virsh start <vm_name></code></td><td>启动指定虚拟机</td></tr><tr><td><code>virsh nodecpustats</code></td><td>显示节点 CPU 统计信息</td></tr><tr><td><code>virsh nodememstats</code></td><td>显示节点内存统计信息</td></tr></tbody></table>
|
|||
|
<h4 id="主机">主机<a aria-hidden="true" tabindex="-1" href="#主机" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh start <vm_name></code></td><td>启动指定虚拟机</td></tr><tr><td><code>virsh shutdown <vm_name></code></td><td>关闭指定虚拟机</td></tr><tr><td><code>virsh reboot <vm_name></code></td><td>重启指定虚拟机</td></tr><tr><td><code>virsh suspend <vm_name></code></td><td>挂起指定虚拟机</td></tr><tr><td><code>virsh resume <vm_name></code></td><td>恢复挂起的虚拟机</td></tr><tr><td><code>virsh destroy <vm_name></code></td><td>强制关闭指定虚拟机</td></tr><tr><td><code>virsh autostart <vm_name></code></td><td>设置指定虚拟机开机自启</td></tr><tr><td><code>virsh undefine <vm_name></code></td><td>取消定义指定虚拟机</td></tr><tr><td><code>virsh dominfo <vm_name></code></td><td>显示虚拟机的基本信息</td></tr><tr><td><code>virsh domstate <vm_name></code></td><td>显示虚拟机的当前状态</td></tr><tr><td><code>virsh domiflist <vm_name></code></td><td>列出虚拟机的网络接口</td></tr><tr><td><code>virsh domblklist <vm_name></code></td><td>列出虚拟机的块设备</td></tr><tr><td><code>virsh domstats <vm_name></code></td><td>显示虚拟机的统计信息</td></tr><tr><td><code>virsh dumpxml <vm_name></code></td><td>显示虚拟机的 XML 配置</td></tr><tr><td><code>virsh edit <vm_name></code></td><td>编辑虚拟机的 XML 配置</td></tr><tr><td><code>virsh console <vm_name></code></td><td>连接到虚拟机的控制台</td></tr><tr><td><code>virsh setmem <vm_name> <size></code></td><td>设置虚拟机的内存大小</td></tr><tr><td><code>virsh setvcpus <vm_name> <count></code></td><td>设置虚拟机的 CPU 数量</td></tr></tbody></table>
|
|||
|
<h4 id="设备">设备<a aria-hidden="true" tabindex="-1" href="#设备" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh attach-device <vm_name> <device.xml></code></td><td>连接设备</td></tr><tr><td><code>virsh detach-device <vm_name> <device.xml></code></td><td>分离设备</td></tr><tr><td><code>virsh attach-disk <vm_name> <source> <target></code></td><td>附加磁盘</td></tr><tr><td><code>virsh detach-disk <vm_name> <target></code></td><td>分离磁盘</td></tr><tr><td><code>virsh attach-interface <vm_name> <type> <source></code></td><td>连接接口</td></tr><tr><td><code>virsh detach-interface <vm_name> <type> <mac></code></td><td>分离接口</td></tr><tr><td><code>virsh update-device <vm_name> <device.xml></code></td><td>更新设备</td></tr><tr><td><code>virsh change-media <vm_name> <path> --eject --insert</code></td><td>改变媒体</td></tr></tbody></table>
|
|||
|
<h4 id="节点">节点<a aria-hidden="true" tabindex="-1" href="#节点" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh nodedev-list</code></td><td>列出所有节点设备</td></tr><tr><td><code>virsh nodedev-info <device></code></td><td>显示节点设备的信息</td></tr><tr><td><code>virsh nodedev-dumpxml <device></code></td><td>显示节点设备的 XML 配置</td></tr><tr><td><code>virsh nodedev-reattach <device></code></td><td>重新附加节点设备</td></tr><tr><td><code>virsh nodedev-detach <device></code></td><td>分离节点设备</td></tr><tr><td><code>virsh nodedev-reset <device></code></td><td>重置节点设备</td></tr><tr><td><code>virsh nodedev-autostart <device></code></td><td>设置节点设备开机自启</td></tr></tbody></table>
|
|||
|
<h4 id="网络">网络<a aria-hidden="true" tabindex="-1" href="#网络" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh net-list --all</code></td><td>列出所有虚拟网络</td></tr><tr><td><code>virsh net-info <network></code></td><td>显示虚拟网络的信息</td></tr><tr><td><code>virsh net-dumpxml <network></code></td><td>显示虚拟网络的 XML 配置</td></tr><tr><td><code>virsh net-create <network.xml></code></td><td>创建虚拟网络</td></tr><tr><td><code>virsh net-destroy <network></code></td><td>销毁虚拟网络</td></tr><tr><td><code>virsh net-start <network></code></td><td>启动虚拟网络</td></tr><tr><td><code>virsh net-autostart <network></code></td><td>设置虚拟网络开机自启</td></tr><tr><td><code>virsh net-undefine <network></code></td><td>取消定义虚拟网络</td></tr><tr><td><code>virsh net-edit <network></code></td><td>编辑虚拟网络的 XML 配置</td></tr><tr><td><code>virsh net-update <network> <command> <section> <xml></code></td><td>更新虚拟网络</td></tr><tr><td><code>virsh net-dhcp-leases <network></code></td><td>列出网络的 DHCP 租约</td></tr></tbody></table>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh net-port-list <network></code></td><td>列出指定虚拟网络的所有端口</td></tr><tr><td><code>virsh net-port-create <port.xml></code></td><td>创建网络端口</td></tr><tr><td><code>virsh net-port-dumpxml <port></code></td><td>显示网络端口的 XML 配置</td></tr><tr><td><code>virsh net-port-delete <port></code></td><td>删除网络端口</td></tr></tbody></table>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh iface-list --all</code></td><td>列出所有网络接口</td></tr><tr><td><code>virsh iface-info <interface></code></td><td>显示网络接口的信息</td></tr><tr><td><code>virsh iface-dumpxml <interface></code></td><td>显示网络接口的 XML 配置</td></tr><tr><td><code>virsh iface-define <interface.xml></code></td><td>定义新网络接口</td></tr><tr><td><code>virsh iface-undefine <interface></code></td><td>取消定义网络接口</td></tr><tr><td><code>virsh iface-start <interface></code></td><td>启动网络接口</td></tr><tr><td><code>virsh iface-destroy <interface></code></td><td>销毁网络接口</td></tr><tr><td><code>virsh iface-edit <interface></code></td><td>编辑网络接口的 XML 配置</td></tr><tr><td><code>virsh iface-bridge <interface> <bridge></code></td><td>将接口桥接到指定桥</td></tr><tr><td><code>virsh iface-unbridge <bridge></code></td><td>取消接口的桥接</td></tr><tr><td><code>virsh iface-commit <interface></code></td><td>提交接口的更改</td></tr><tr><td><code>virsh iface-rollback <interface></code></td><td>回滚接口的更改</td></tr></tbody></table>
|
|||
|
<h4 id="存储">存储<a aria-hidden="true" tabindex="-1" href="#存储" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh pool-list --all</code></td><td>列出所有存储池</td></tr><tr><td><code>virsh pool-info <pool></code></td><td>显示存储池的信息</td></tr><tr><td><code>virsh pool-dumpxml <pool></code></td><td>显示存储池的 XML 配置</td></tr><tr><td><code>virsh pool-create <pool.xml></code></td><td>从 XML 文件创建存储池</td></tr><tr><td><code>virsh pool-create-as <name> <type> <source></code></td><td>创建指定类型的存储池</td></tr><tr><td><code>virsh pool-define <pool.xml></code></td><td>从 XML 文件定义存储池</td></tr><tr><td><code>virsh pool-define-as <name> <type> <source></code></td><td>定义指定类型的存储池</td></tr><tr><td><code>virsh pool-start <pool></code></td><td>启动存储池</td></tr><tr><td><code>virsh pool-build <pool></code></td><td>构建存储池</td></tr><tr><td><code>virsh pool-refresh <pool></code></td><td>刷新存储池</td></tr><tr><td><code>virsh pool-autostart <pool></code></td><td>设置存储池开机自启</td></tr><tr><td><code>virsh pool-destroy <pool></code></td><td>销毁存储池</td></tr><tr><td><code>virsh pool-delete <pool></code></td><td>删除存储池</td></tr><tr><td><code>virsh pool-undefine <pool></code></td><td>取消定义存储池</td></tr><tr><td><code>virsh find-storage-pool-sources --type <type></code></td><td>查找存储池源</td></tr></tbody></table>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh vol-list <pool></code></td><td>列出指定存储池的所有卷</td></tr><tr><td><code>virsh vol-info <volume></code></td><td>显示卷的信息</td></tr><tr><td><code>virsh vol-dumpxml <volume></code></td><td>显示卷的 XML 配置</td></tr><tr><td><code>virsh vol-create <pool> <volume.xml></code></td><td>从 XML 文件创建卷</td></tr><tr><td><code>virsh vol-create-as <pool> <name> <capacity></code></td><td>创建指定大小的卷</td></tr><tr><td><code>virsh vol-create-from <pool> <name> <source-volume></code></td><td>从现有卷创建新卷</td></tr><tr><td><code>virsh vol-clone <source-volume> <new-volume></code></td><td>克隆卷</td></tr><tr><td><code>virsh vol-delete <volume></code></td><td>删除卷</td></tr><tr><td><code>virsh vol-upload <volume> <source></code></td><td>上传数据到卷</td></tr><tr><td><code>virsh vol-download <volume> <dest></code></td><td>从卷下载数据</td></tr><tr><td><code>virsh vol-resize <volume> <capacity></code></td><td>调整卷大小</td></tr><tr><td><code>virsh vol-wipe <volume></code></td><td>擦除卷</td></tr><tr><td><code>virsh vol-path <volume></code></td><td>显示卷的路径</td></tr><tr><td><code>virsh vol-name <volume></code></td><td>显示卷的名称</td></tr><tr><td><code>virsh vol-key <volume></code></td><td>显示卷的唯一标识符</td></tr></tbody></table>
|
|||
|
<h4 id="快照">快照<a aria-hidden="true" tabindex="-1" href="#快照" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh snapshot-list <vm_name></code></td><td>列出指定虚拟机的所有快照</td></tr><tr><td><code>virsh snapshot-info <snapshot></code></td><td>显示快照的信息</td></tr><tr><td><code>virsh snapshot-dumpxml <snapshot></code></td><td>显示快照的 XML 配置</td></tr><tr><td><code>virsh snapshot-create <vm_name></code></td><td>创建快照</td></tr><tr><td><code>virsh snapshot-create-as <vm_name> <snapshot_name></code></td><td>创建命名快照</td></tr><tr><td><code>virsh snapshot-current <vm_name></code></td><td>显示当前快照</td></tr><tr><td><code>virsh snapshot-edit <snapshot></code></td><td>编辑快照的 XML 配置</td></tr><tr><td><code>virsh snapshot-revert <vm_name> <snapshot></code></td><td>恢复到指定快照</td></tr><tr><td><code>virsh snapshot-delete <vm_name> <snapshot></code></td><td>删除指定快照</td></tr><tr><td><code>virsh snapshot-parent <snapshot></code></td><td>显示快照的父级快照</td></tr></tbody></table>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>virsh checkpoint-list <vm_name></code></td><td>列出指定虚拟机的所有检查点</td></tr><tr><td><code>virsh checkpoint-info <checkpoint></code></td><td>显示检查点的信息</td></tr><tr><td><code>virsh checkpoint-dumpxml <checkpoint></code></td><td>显示检查点的 XML 配置</td></tr><tr><td><code>virsh checkpoint-create <vm_name></code></td><td>创建检查点</td></tr><tr><td><code>virsh checkpoint-create-as <vm_name> <checkpoint_name></code></td><td>创建命名检查点</td></tr><tr><td><code>virsh checkpoint-edit <checkpoint></code></td><td>编辑检查点的 XML 配置</td></tr><tr><td><code>virsh checkpoint-delete <vm_name> <checkpoint></code></td><td>删除指定检查点</td></tr><tr><td><code>virsh checkpoint-parent <checkpoint></code></td><td>显示检查点的父级检查点</td></tr></tbody></table>
|
|||
|
<h3 id="libvirt-api-开发">Libvirt API 开发<a aria-hidden="true" tabindex="-1" href="#libvirt-api-开发" class="internal"> §</a></h3>
|
|||
|
<h4 id="使用-libvirt-api">使用 Libvirt API<a aria-hidden="true" tabindex="-1" href="#使用-libvirt-api" class="internal"> §</a></h4>
|
|||
|
<p>Libvirt 提供丰富的 API,用于开发和集成虚拟化管理工具。以下是使用 Python Libvirt API 的示例:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>安装 Python Libvirt 库</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">python3-libvirt</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>Python 示例代码</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="python" data-theme="default"><code data-language="python" data-theme="default"><span data-line><span style="color:var(--shiki-token-keyword);">import</span><span style="color:var(--shiki-color-text);"> libvirt</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">conn </span><span style="color:var(--shiki-token-keyword);">=</span><span style="color:var(--shiki-color-text);"> libvirt</span><span style="color:var(--shiki-token-punctuation);">.</span><span style="color:var(--shiki-token-function);">open</span><span style="color:var(--shiki-token-punctuation);">(</span><span style="color:var(--shiki-token-string-expression);">'qemu:///system'</span><span style="color:var(--shiki-token-punctuation);">)</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-keyword);">if</span><span style="color:var(--shiki-color-text);"> conn </span><span style="color:var(--shiki-token-keyword);">is</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">None</span><span style="color:var(--shiki-token-punctuation);">:</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">print</span><span style="color:var(--shiki-token-punctuation);">(</span><span style="color:var(--shiki-token-string-expression);">'Failed to open connection to qemu:///system'</span><span style="color:var(--shiki-token-punctuation);">)</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">exit</span><span style="color:var(--shiki-token-punctuation);">(</span><span style="color:var(--shiki-token-constant);">1</span><span style="color:var(--shiki-token-punctuation);">)</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">domains </span><span style="color:var(--shiki-token-keyword);">=</span><span style="color:var(--shiki-color-text);"> conn</span><span style="color:var(--shiki-token-punctuation);">.</span><span style="color:var(--shiki-token-function);">listAllDomains</span><span style="color:var(--shiki-token-punctuation);">()</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-keyword);">for</span><span style="color:var(--shiki-color-text);"> domain </span><span style="color:var(--shiki-token-keyword);">in</span><span style="color:var(--shiki-color-text);"> domains</span><span style="color:var(--shiki-token-punctuation);">:</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">print</span><span style="color:var(--shiki-token-punctuation);">(</span><span style="color:var(--shiki-token-string-expression);">'Domain: '</span><span style="color:var(--shiki-token-punctuation);"> </span><span style="color:var(--shiki-token-keyword);">+</span><span style="color:var(--shiki-token-punctuation);"> domain.</span><span style="color:var(--shiki-token-function);">name</span><span style="color:var(--shiki-token-punctuation);">())</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">conn</span><span style="color:var(--shiki-token-punctuation);">.</span><span style="color:var(--shiki-token-function);">close</span><span style="color:var(--shiki-token-punctuation);">()</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="libvirt-与其他工具的集成">Libvirt 与其他工具的集成<a aria-hidden="true" tabindex="-1" href="#libvirt-与其他工具的集成" class="internal"> §</a></h4>
|
|||
|
<p>Libvirt 与许多其他工具集成,提供全面的虚拟化管理功能:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>OpenStack</strong>:作为 IaaS 平台,OpenStack 使用 Libvirt 作为其底层虚拟化管理工具之一。</li>
|
|||
|
<li><strong>oVirt</strong>:基于 Libvirt 的虚拟化管理平台,提供企业级虚拟化解决方案。</li>
|
|||
|
<li><strong>Ansible</strong>:使用 <code>ansible-libvirt</code> 模块,可以通过 Ansible 自动化管理 Libvirt 虚拟机和资源。</li>
|
|||
|
</ul>
|
|||
|
<h2 id="virt-manager">Virt-manager<a aria-hidden="true" tabindex="-1" href="#virt-manager" class="internal"> §</a></h2>
|
|||
|
<h3 id="virt-manager-概述">Virt-manager 概述<a aria-hidden="true" tabindex="-1" href="#virt-manager-概述" class="internal"> §</a></h3>
|
|||
|
<p>Virt-manager 是一个<strong>基于 GUI 的虚拟机管理工具</strong>,用于管理 KVM、QEMU 和其他支持的虚拟化平台。其主要功能和特点包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>虚拟机创建和配置</strong>:通过图形化界面轻松创建和配置虚拟机,包括设置 CPU、内存、存储和网络等资源。</li>
|
|||
|
<li><strong>虚拟机监控</strong>:实时监控虚拟机的性能和资源使用情况,提供详细的统计信息。</li>
|
|||
|
<li><strong>存储和网络管理</strong>:管理虚拟机的存储池、存储卷和网络配置,支持多种存储和网络类型。</li>
|
|||
|
<li><strong>快照和迁移</strong>:支持虚拟机快照创建和恢复,以及实时迁移虚拟机到其他主机。</li>
|
|||
|
<li><strong>易用性</strong>:提供直观的图形化界面,简化了虚拟机管理任务。</li>
|
|||
|
</ul>
|
|||
|
<p>Virt-manager 的图形化界面包括以下主要部分:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>主窗口</strong>:显示所有已定义的虚拟机及其状态,提供虚拟机的基本管理操作。</li>
|
|||
|
<li><strong>详细信息面板</strong>:展示选定虚拟机的详细信息,包括硬件配置、性能监控和控制台访问。</li>
|
|||
|
<li><strong>菜单和工具栏</strong>:提供常用的管理功能和配置选项,如创建新虚拟机、启动/停止虚拟机、查看日志等。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="virt-manager-安装与配置">Virt-manager 安装与配置<a aria-hidden="true" tabindex="-1" href="#virt-manager-安装与配置" class="internal"> §</a></h3>
|
|||
|
<p>在不同的 Linux 发行版上安装 Virt-manager 的步骤如下:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 在 Debian/Ubuntu 上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">update</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-manager</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在 CentOS/RHEL 上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dnf</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-manager</span></span></code></pre></div>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>启动 libvirtd 服务</strong>(如果尚未启动):</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--now</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirtd</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>配置用户权限</strong>: 确保用户属于 <code>libvirt</code> 组,以便能够管理虚拟机:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">usermod</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-aG</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">libvirt</span><span style="color:var(--shiki-color-text);"> $USER</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>重启系统或重新登录</strong>,以应用权限更改。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="使用-virt-manager-管理虚拟机">使用 Virt-manager 管理虚拟机<a aria-hidden="true" tabindex="-1" href="#使用-virt-manager-管理虚拟机" class="internal"> §</a></h3>
|
|||
|
<h4 id="创建和配置虚拟机">创建和配置虚拟机<a aria-hidden="true" tabindex="-1" href="#创建和配置虚拟机" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>启动 Virt-manager</strong>: 打开终端并运行 <code>virt-manager</code> 命令,或通过桌面环境的应用菜单启动 Virt-manager。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/de58312e74458.png" alt="启动 Virt-manager"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>创建新虚拟机</strong>:</p>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p>在 Virt-manager 主界面,点击左上角的创建新虚拟机按钮。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/41b4b10b5942d.png" alt="创建新虚拟机"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>选择安装来源(例如 ISO 映像或网络安装),点击转到下一步。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/d01385316a5e4.png" alt="选择安装来源"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>设置虚拟机名称、内存和 CPU 配置,点击转到下一步。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/86ace29f6f5c4.png" alt="设置虚拟机名称、内存和 CPU 配置"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>配置虚拟机硬盘(例如,创建新磁盘映像或使用现有磁盘),点击转到下一步。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/004d7d2942ea7.png" alt="配置虚拟机硬盘"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>选择网络配置(例如,桥接网络或默认 NAT 网络),点击转到下一步。</p>
|
|||
|
<p><img src="https://static.7wate.com/2024/07/18/ad776ed472584.png" alt="选择网络配置"/></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>检查配置并点击完成以创建虚拟机。</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>配置虚拟机</strong>:</p>
|
|||
|
<ul>
|
|||
|
<li>右键点击已创建的虚拟机,选择打开以启动虚拟机。</li>
|
|||
|
<li>在虚拟机启动后,可以通过 VNC 或 SPICE 连接访问虚拟机的图形界面。</li>
|
|||
|
<li>在虚拟机设置中,可以调整虚拟机的硬件配置,如增加内存、添加硬盘或修改网络设置。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="监控和管理虚拟机">监控和管理虚拟机<a aria-hidden="true" tabindex="-1" href="#监控和管理虚拟机" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>监控虚拟机性能</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Virt-manager 主界面,双击虚拟机名称进入详细信息面板。</li>
|
|||
|
<li>查看 CPU、内存、网络和存储的实时使用情况。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>管理虚拟机状态</strong>:
|
|||
|
<ul>
|
|||
|
<li>在主界面中,右键点击虚拟机名称,可以选择启动、暂停、恢复、关闭等操作。</li>
|
|||
|
<li>查看和管理虚拟机的快照,执行备份和恢复操作。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="使用-virt-manager-进行快照和迁移">使用 Virt-manager 进行快照和迁移<a aria-hidden="true" tabindex="-1" href="#使用-virt-manager-进行快照和迁移" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>创建快照</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Virt-manager 中,选择虚拟机,右键点击并选择快照。</li>
|
|||
|
<li>点击创建快照按钮,输入快照名称和描述,然后点击创建。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>恢复快照</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Virt-manager 中,选择虚拟机,右键点击并选择快照。</li>
|
|||
|
<li>选择要恢复的快照,点击恢复按钮。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>实时迁移虚拟机</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Virt-manager 中,选择要迁移的虚拟机,右键点击并选择迁移。</li>
|
|||
|
<li>输入目标主机的连接信息,选择迁移选项(如实时迁移),然后点击开始迁移。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<p>通过上述方法,用户可以使用 Virt-manager 轻松创建、配置和管理 KVM 虚拟机,同时进行性能监控、快照管理和虚拟机迁移等操作。Virt-manager 的图形化界面使得虚拟机管理任务更加直观和便捷。</p>
|
|||
|
<h2 id="cockpit">Cockpit<a aria-hidden="true" tabindex="-1" href="#cockpit" class="internal"> §</a></h2>
|
|||
|
<h3 id="cockpit-概述">Cockpit 概述<a aria-hidden="true" tabindex="-1" href="#cockpit-概述" class="internal"> §</a></h3>
|
|||
|
<p>Cockpit 是一个开源的服务器管理工具,提供了一个基于 Web 的图形用户界面,用于管理 Linux 服务器。其主要功能和特点包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>实时监控和管理</strong>:提供实时系统性能监控、日志查看、服务管理等功能。</li>
|
|||
|
<li><strong>用户友好</strong>:简单直观的 Web 界面,易于使用和配置。</li>
|
|||
|
<li><strong>扩展性</strong>:通过插件机制扩展功能,可以管理存储、虚拟化、网络等。</li>
|
|||
|
<li><strong>多服务器管理</strong>:可以集中管理多个服务器,支持跨主机操作。</li>
|
|||
|
<li><strong>集成虚拟化管理</strong>:内置对 KVM 虚拟机的支持,可以创建和管理虚拟机。</li>
|
|||
|
</ul>
|
|||
|
<p>Cockpit 的架构包括以下主要组件:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Web 前端</strong>:基于 HTML5 和 JavaScript 构建的用户界面,通过 Web 浏览器访问。</li>
|
|||
|
<li><strong>Cockpit 服务</strong>:运行在服务器上的后台服务,处理用户请求并与系统进行交互。</li>
|
|||
|
<li><strong>系统接口</strong>:Cockpit 使用 D-Bus 与 Linux 系统和服务进行通信,执行管理任务。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="cockpit-安装与配置">Cockpit 安装与配置<a aria-hidden="true" tabindex="-1" href="#cockpit-安装与配置" class="internal"> §</a></h3>
|
|||
|
<p>Cockpit 可以在多种 Linux 发行版上安装。以下是一些常见的安装步骤:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 在 Ubuntu 上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">update</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--now</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit.socket</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 打开防火墙端口</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">allow</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">9090</span><span style="color:var(--shiki-token-string);">/tcp</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在 CentOS/RHEL 上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--now</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit.socket</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 打开防火墙端口</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-port=9090/tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--reload</span></span></code></pre></div>
|
|||
|
<p>在浏览器中访问 <code>https://<server-ip>:9090</code>,使用服务器上的用户凭证登录。</p>
|
|||
|
<h3 id="使用-cockpit-管理虚拟机">使用 Cockpit 管理虚拟机<a aria-hidden="true" tabindex="-1" href="#使用-cockpit-管理虚拟机" class="internal"> §</a></h3>
|
|||
|
<h4 id="创建和管理虚拟机">创建和管理虚拟机<a aria-hidden="true" tabindex="-1" href="#创建和管理虚拟机" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>启用虚拟化插件</strong>:</p>
|
|||
|
<p>安装 Cockpit 的虚拟化插件(如果尚未安装)。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 在 Ubuntu 上:</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit-machines</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在 CentOS/RHEL 上:</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">cockpit-machines</span></span></code></pre></div>
|
|||
|
<ol>
|
|||
|
<li><strong>创建虚拟机</strong>:</li>
|
|||
|
</ol>
|
|||
|
<ul>
|
|||
|
<li>在 Cockpit Web 界面中,导航到虚拟机页面。</li>
|
|||
|
<li>点击创建新虚拟机按钮,按照向导输入虚拟机名称、操作系统类型、内存、CPU 和磁盘配置。</li>
|
|||
|
<li>选择安装来源(ISO 镜像或网络安装),点击创建完成虚拟机的创建。</li>
|
|||
|
</ul>
|
|||
|
<ol>
|
|||
|
<li><strong>管理虚拟机</strong>:</li>
|
|||
|
</ol>
|
|||
|
<ul>
|
|||
|
<li>在虚拟机页面,查看已创建的虚拟机列表。</li>
|
|||
|
<li>选择虚拟机,可以执行启动、停止、重启、暂停等操作。</li>
|
|||
|
<li>点击虚拟机名称,可以查看详细信息并修改配置。</li>
|
|||
|
</ul>
|
|||
|
<h4 id="配置网络和存储">配置网络和存储<a aria-hidden="true" tabindex="-1" href="#配置网络和存储" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>配置网络</strong>:
|
|||
|
<ul>
|
|||
|
<li>在虚拟机页面,选择虚拟机并进入详细信息页面。</li>
|
|||
|
<li>在网络选项卡中,添加或修改网络接口,选择桥接或 NAT 网络类型。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>配置存储</strong>:
|
|||
|
<ul>
|
|||
|
<li>在虚拟机页面,选择虚拟机并进入详细信息页面。</li>
|
|||
|
<li>在存储选项卡中,添加或修改存储设备,选择磁盘镜像文件或 LVM 卷。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="使用-cockpit-进行监控和管理">使用 Cockpit 进行监控和管理<a aria-hidden="true" tabindex="-1" href="#使用-cockpit-进行监控和管理" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>监控系统性能</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Cockpit 主界面中,查看系统概览,包括 CPU、内存、磁盘和网络使用情况。</li>
|
|||
|
<li>导航到日志页面,查看系统日志和服务日志,帮助诊断问题。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>管理服务</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Cockpit 主界面中,导航到服务页面,查看和管理系统服务。</li>
|
|||
|
<li>可以启动、停止、重启服务,并查看服务状态和日志。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>多服务器管理</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Cockpit 主界面中,导航到仪表板页面,添加其他服务器进行集中管理。</li>
|
|||
|
<li>输入其他服务器的 IP 地址和凭证,添加成功后,可以跨主机进行操作和监控。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<p>通过以上步骤,用户可以使用 Cockpit 创建和管理虚拟机,配置网络和存储,并进行系统监控和管理。Cockpit 提供了一个直观且功能强大的 Web 界面,使得 Linux 服务器管理变得更加简便和高效。</p>
|
|||
|
<h2 id="proxmox-ve">Proxmox VE<a aria-hidden="true" tabindex="-1" href="#proxmox-ve" class="internal"> §</a></h2>
|
|||
|
<h3 id="proxmox-ve-概述">Proxmox VE 概述<a aria-hidden="true" tabindex="-1" href="#proxmox-ve-概述" class="internal"> §</a></h3>
|
|||
|
<p>Proxmox Virtual Environment (Proxmox VE) 是一个开源的服务器虚拟化管理平台,集成了 KVM 和 LXC(Linux 容器),提供企业级的虚拟化解决方案。其主要功能和特点包括:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>虚拟化集成</strong>:支持 KVM 虚拟机和 LXC 容器,提供灵活的虚拟化选择。</li>
|
|||
|
<li><strong>集中管理</strong>:通过基于 Web 的用户界面,集中管理所有虚拟机和容器。</li>
|
|||
|
<li><strong>高可用性</strong>:内置高可用性(HA)集群管理,确保服务持续运行。</li>
|
|||
|
<li><strong>存储支持</strong>:支持多种存储类型,包括本地存储、NFS、iSCSI 和 Ceph 分布式存储。</li>
|
|||
|
<li><strong>备份和恢复</strong>:提供全面的备份和恢复功能,确保数据安全。</li>
|
|||
|
<li><strong>集成防火墙</strong>:内置防火墙功能,提高虚拟机和容器的安全性。</li>
|
|||
|
<li><strong>集成 Web 界面</strong>:易于使用的 Web 界面,简化管理任务。</li>
|
|||
|
</ul>
|
|||
|
<p>Proxmox VE 的架构主要包括以下组件:</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Proxmox VE 主机</strong>:运行 KVM 和 LXC 的物理服务器,托管虚拟机和容器。</li>
|
|||
|
<li><strong>Proxmox VE 集群</strong>:多个 Proxmox VE 主机组成的集群,提供高可用性和负载均衡。</li>
|
|||
|
<li><strong>Proxmox VE Web 界面</strong>:基于 Web 的管理界面,用于管理集群、虚拟机和容器。</li>
|
|||
|
<li><strong>Proxmox VE API</strong>:提供 RESTful API,用于集成和自动化管理任务。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="proxmox-ve-安装与配置">Proxmox VE 安装与配置<a aria-hidden="true" tabindex="-1" href="#proxmox-ve-安装与配置" class="internal"> §</a></h3>
|
|||
|
<ol>
|
|||
|
<li><strong>下载 Proxmox VE 安装 ISO</strong>:
|
|||
|
<ul>
|
|||
|
<li>访问 Proxmox VE 官网 下载最新的安装 ISO。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>创建安装介质</strong>:
|
|||
|
<ul>
|
|||
|
<li>使用 Rufus、Etcher 等工具,将 ISO 写入 U 盘或刻录到光盘。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>启动安装</strong>:
|
|||
|
<ul>
|
|||
|
<li>将安装介质插入服务器,重启并从安装介质启动。</li>
|
|||
|
<li>按照安装向导完成安装,包括选择目标磁盘、配置网络和设置管理账户。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>完成安装后,访问 Web 界面</strong>:
|
|||
|
<ul>
|
|||
|
<li>在浏览器中访问 <code>https://<server-ip>:8006</code>,使用安装时设置的管理账户登录。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="使用-proxmox-ve-管理虚拟机">使用 Proxmox VE 管理虚拟机<a aria-hidden="true" tabindex="-1" href="#使用-proxmox-ve-管理虚拟机" class="internal"> §</a></h3>
|
|||
|
<h4 id="创建和管理虚拟机-1">创建和管理虚拟机<a aria-hidden="true" tabindex="-1" href="#创建和管理虚拟机-1" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>创建虚拟机</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 Web 界面中,导航到节点 ->虚拟机。</li>
|
|||
|
<li>点击创建虚拟机,按照向导输入虚拟机名称、操作系统类型、硬盘大小和网络配置。</li>
|
|||
|
<li>点击完成创建虚拟机。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>管理虚拟机</strong>:
|
|||
|
<ul>
|
|||
|
<li>在虚拟机列表中,选择虚拟机,使用启动、停止、重启等操作管理虚拟机。</li>
|
|||
|
<li>编辑虚拟机配置,调整 CPU、内存、存储和网络设置。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="配置网络和存储-1">配置网络和存储<a aria-hidden="true" tabindex="-1" href="#配置网络和存储-1" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>配置虚拟网络</strong>:
|
|||
|
<ul>
|
|||
|
<li>在节点 ->网络中,添加或编辑桥接网络、VLAN 和绑定接口。</li>
|
|||
|
<li>在虚拟机网络设置中,选择相应的网络接口。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>配置存储卷</strong>:
|
|||
|
<ul>
|
|||
|
<li>在数据中心 ->存储中,添加或管理存储池。</li>
|
|||
|
<li>为虚拟机分配存储卷,调整存储大小和类型。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="高可用性和备份">高可用性和备份<a aria-hidden="true" tabindex="-1" href="#高可用性和备份" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>配置高可用性</strong>:
|
|||
|
<ul>
|
|||
|
<li>在数据中心 ->高可用性中,添加虚拟机到高可用性组。</li>
|
|||
|
<li>配置高可用性参数,确保虚拟机在节点故障时自动迁移。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>配置备份</strong>:
|
|||
|
<ul>
|
|||
|
<li>在数据中心 ->备份中,创建备份计划,选择备份存储、频率和保留策略。</li>
|
|||
|
<li>配置备份任务,确保定期备份虚拟机数据。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h2 id="kvm-管理工具的选择">KVM 管理工具的选择<a aria-hidden="true" tabindex="-1" href="#kvm-管理工具的选择" class="internal"> §</a></h2>
|
|||
|
<h3 id="根据需求选择合适的工具">根据需求选择合适的工具<a aria-hidden="true" tabindex="-1" href="#根据需求选择合适的工具" class="internal"> §</a></h3>
|
|||
|
<p>选择合适的 KVM 管理工具应根据具体需求进行考虑,例如企业环境的高可用性、桌面环境的简单虚拟机管理等。</p>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p>**libvirt:**libvirt 是一个开源 API、守护进程和管理工具,用于管理平台虚拟化技术,包括 KVM、QEMU、Xen、VMware ESXi 等。</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>**virt-manager:**virt-manager 是一个基于桌面的图形化工具,用于管理 KVM 虚拟机,主要依赖于 libvirt。</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>**Cockpit:**Cockpit 是一个轻量级的 web 界面,支持系统管理和 KVM 虚拟机管理,通过插件扩展功能。</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>**Proxmox VE:**Proxmox VE 是一个开源的企业级虚拟化管理平台,支持 KVM 和 LXC 容器,提供高可用性、备份和集群管理功能。</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<h3 id="各工具的优缺点比较">各工具的优缺点比较<a aria-hidden="true" tabindex="-1" href="#各工具的优缺点比较" class="internal"> §</a></h3>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>工具</th><th>优点</th><th>缺点</th><th>适用场景</th><th>易用性</th><th>扩展性</th><th>性能优化</th><th>高可用性</th><th>支持平台</th><th>界面</th></tr></thead><tbody><tr><td>libvirt</td><td>灵活、支持多种虚拟化平台、API 支持广泛、命令行工具强大</td><td>初学者学习曲线较陡,需要较多配置和命令行操作</td><td>高度定制化需求</td><td>一般</td><td>高</td><td>高</td><td>无</td><td>KVM, QEMU, Xen, VMware ESXi</td><td>CLI</td></tr><tr><td>virt-manager</td><td>图形化界面简单易用、适合桌面环境、依赖 libvirt</td><td>功能相对较少,不支持高级特性如高可用性和集群管理</td><td>小规模桌面环境</td><td>高</td><td>一般</td><td>一般</td><td>无</td><td>KVM</td><td>GUI</td></tr><tr><td>Cockpit</td><td>轻量级、扩展性强、支持插件、直观的 web 界面</td><td>虚拟机管理功能有限,需要额外配置</td><td>中小型服务器管理</td><td>高</td><td>高</td><td>一般</td><td>无</td><td>KVM</td><td>Web</td></tr><tr><td>Proxmox VE</td><td>集成度高、支持高可用性和备份、图形化界面友好、支持集群管理和 LXC 容器</td><td>初始配置复杂、对硬件要求较高</td><td>企业级虚拟化和容器管理</td><td>一般</td><td>高</td><td>高</td><td>高</td><td>KVM, LXC</td><td>Web</td></tr></tbody></table>
|
|||
|
<h2 id="未来发展趋势">未来发展趋势<a aria-hidden="true" tabindex="-1" href="#未来发展趋势" class="internal"> §</a></h2>
|
|||
|
<h3 id="kvm-管理工具的发展方向">KVM 管理工具的发展方向<a aria-hidden="true" tabindex="-1" href="#kvm-管理工具的发展方向" class="internal"> §</a></h3>
|
|||
|
<ul>
|
|||
|
<li><strong>自动化和编排</strong>:随着虚拟化和云计算的发展,自动化和编排工具将变得更加重要。</li>
|
|||
|
<li><strong>容器集成</strong>:越来越多的 KVM 管理工具开始支持容器,提供虚拟机和容器的混合管理。</li>
|
|||
|
<li><strong>增强安全性</strong>:安全性将继续成为虚拟化管理的重要考虑因素,更多的安全功能和机制将被集成。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="新兴技术和工具">新兴技术和工具<a aria-hidden="true" tabindex="-1" href="#新兴技术和工具" class="internal"> §</a></h3>
|
|||
|
<ul>
|
|||
|
<li><strong>云原生技术</strong>:Kubernetes 和 OpenShift 等云原生平台正在集成虚拟化功能,提供统一的容器和虚拟机管理。</li>
|
|||
|
<li><strong>边缘计算</strong>:随着边缘计算的兴起,新的虚拟化管理工具将出现,支持分布式和低延迟环境。</li>
|
|||
|
<li><strong>人工智能和机器学习</strong>:AI 和 ML 技术将被用于优化虚拟化管理,提供智能调度和预测性维护。</li>
|
|||
|
</ul></article></div><div class="right sidebar"><div class="graph "><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
|
|||
|
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
|
|||
|
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
|
|||
|
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
|
|||
|
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
|
|||
|
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
|
|||
|
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
|
|||
|
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
|
|||
|
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
|
|||
|
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
|
|||
|
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div></div></div><div class="toc desktop-only"><button type="button" id="toc" class><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#kvm-管理工具" data-for="kvm-管理工具">KVM 管理工具</a></li><li class="depth-0"><a href="#libvirt" data-for="libvirt">Libvirt</a></li><li class="depth-1"><a href="#libvirt-概述" data-for="libvirt-概述">Libvirt 概述</a></li><li class="depth-1"><a href="#libvirt-安装与配置" data-for="libvirt-安装与配置">Libvirt 安装与配置</a></li><li class="depth-1"><a href="#virsh-管理命令" data-for="virsh-管理命令">Virsh 管理命令</a></li><li class="depth-1"><a href="#libvirt-api-开发" data-for="libvirt-api-开发">Libvirt API 开发</a></li><li class="depth-0"><a href="#virt-manager" data-for="virt-manager">Virt-manager</a></li><li class="depth-1"><a href="#virt-manager-概述" data-for="virt-manager-概述">Virt-manager 概述</a></li><li class="depth-1"><a href="#virt-manager-安装与配置" data-for="virt-manager-安装与配置">Virt-manager 安装与配置</a></li><li class="depth-1"><a href="#使用-virt-manager-管理虚拟机" data-for="使用-virt-manager-管理虚拟机">使用 Virt-manager 管理虚拟机</a></li><li class="depth-0"><a href="#cockpit" data-for="cockpit">Cockpit</a></li><li class="depth-1"><a href="#cockpit-概述" data-for="cockpit-概述">Cockpit 概述</a></li><li class="depth-1"><a href="#cockpit-安装与配置" data-for="cockpit-安装与配置">Cockpit 安装与配置</a></li><li class="depth-1"><a href="#使用-cockpit-管理虚拟机" data-for="使用-cockpit-管理虚拟机">使用 Cockpit 管理虚拟机</a></li><li class="depth-0"><a href="#proxmox-ve" data-for="proxmox-ve">Proxmox VE</a></li><li class="depth-1"><a href="#proxmox-ve-概述" data-for="proxmox-ve-概述">Proxmox VE 概述</a></li><li class="depth-1"><a href="#proxmox-ve-安装与配置" data-for="proxmox-ve-安装与配置">Proxmox VE 安装与配置</a></li><li class="depth-1"><a href="#使用-proxmox-ve-管理虚拟机" data-for="使用-proxmox-ve-管理虚拟机">使用 Proxmox VE 管理虚拟机</a></li><li class="depth-0"><a href="#kvm-管理工具的选择" data-for="kvm-管理工具的选择">KVM 管理工具的选择</a></li><li class="depth-1"><a href="#根据需求选择合适的工具" data-for="根据需求选择合适的工具">根据需求选择合适的工具</a></li><li class="depth-1"><a href="#各工具的优缺点比较" data-for="各工具的优缺点比较">各工具的优缺点比较</a></li><li class="depth-0"><a href="#未来发展趋势" data-for="未来发展趋势">未来发展趋势</a></li><li class="depth-1"><a href="#kvm-管理工具的发展方向" data-for="kvm-管理工具的发展方向">KVM 管理工具的发展方向</a></li><li class="depth-1"><a href="#新兴技术和工具" data-for="新兴技术和工具">新兴技术和工具</a></li></ul></div></div><div class="backlinks "><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div><div class="explorer mobile-only"><button type="button" id="explorer" data-behavior="collapse" data-collapsed="collapsed" data-savestate="true" data-tree="[{"path":"Basics","collapsed":true},{"path":"Basics/english","collapsed":true},{"
|
|||
|
function toggleCallout() {
|
|||
|
const outerBlock = this.parentElement;
|
|||
|
outerBlock.classList.toggle(`is-collapsed`);
|
|||
|
const collapsed = outerBlock.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
|
|||
|
outerBlock.style.maxHeight = height + `px`;
|
|||
|
let current = outerBlock;
|
|||
|
let parent = outerBlock.parentElement;
|
|||
|
while (parent) {
|
|||
|
if (!parent.classList.contains(`callout`)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
const collapsed2 = parent.classList.contains(`is-collapsed`);
|
|||
|
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
|
|||
|
parent.style.maxHeight = height2 + `px`;
|
|||
|
current = parent;
|
|||
|
parent = parent.parentElement;
|
|||
|
}
|
|||
|
}
|
|||
|
function setupCallout() {
|
|||
|
const collapsible = document.getElementsByClassName(
|
|||
|
`callout is-collapsible`
|
|||
|
);
|
|||
|
for (const div of collapsible) {
|
|||
|
const title = div.firstElementChild;
|
|||
|
if (title) {
|
|||
|
title.removeEventListener(`click`, toggleCallout);
|
|||
|
title.addEventListener(`click`, toggleCallout);
|
|||
|
const collapsed = div.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? title.scrollHeight : div.scrollHeight;
|
|||
|
div.style.maxHeight = height + `px`;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
document.addEventListener(`nav`, setupCallout);
|
|||
|
window.addEventListener(`resize`, setupCallout);
|
|||
|
</script><script type="module">
|
|||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
|||
|
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
|||
|
mermaid.initialize({
|
|||
|
startOnLoad: false,
|
|||
|
securityLevel: 'loose',
|
|||
|
theme: darkMode ? 'dark' : 'default'
|
|||
|
});
|
|||
|
document.addEventListener('nav', async () => {
|
|||
|
await mermaid.run({
|
|||
|
querySelector: '.mermaid'
|
|||
|
})
|
|||
|
});
|
|||
|
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../../../postscript.js" type="module"></script></html>
|