使用 NAT 时,如何将运行 libvirt/KVM 的服务器上的端口转发到 VM 上的指定端口?
例如,主机的公共 IP 为 1.2.3.4。我想将端口 80 转发到 10.0.0.1,将端口 22 转发到 10.0.0.2。
我假设我需要添加 iptables 规则,但我不确定在哪里合适以及应该指定什么。
iptables -L 的输出
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 10.0.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 …Run Code Online (Sandbox Code Playgroud) 我想要做的是从主机系统设置来宾的网络配置(IP 地址、子网、网关、广播地址)。使用的网络设置处于bridge模式。如何从主机配置网络而不是将客户端本身配置为静态网络配置?
如果我执行:
virsh edit vm1
Run Code Online (Sandbox Code Playgroud)
还有一个<network>块,我试图从那里配置网络接口,但不幸的是来宾 VM 似乎没有使用它,因此对网络离线(因为它仅使用自动网络配置)......来宾VM 都基于 Linux 和 Windows。任何帮助将不胜感激。
如何在 KVM+libvirt 上重命名虚拟机?
我希望它更改“库存”中的名称以及更改存储的名称等。
我从命令行创建了一个 KVM 来宾,virt-install其中使用了命令行选项--disk pool=vg0,size=20和--name virt1.example.com.
如何从命令行删除此 KVM 来宾?我不再需要它了。
只是为了记录整个命令行是
virt-install --debug --hvm --vnc --name virt1.example.com --os-type=linux --os-variant=rhel6 --pxe --network network=default,model=e1000,mac=02:54:00:13:be:e4 --disk pool=vg0,size=20 --ram 1024 --vcpus=1
Run Code Online (Sandbox Code Playgroud)
这是一些额外的信息
[root@server ~]# virsh vol-list vg0
Name Path
-----------------------------------------
lv0 /dev/vg0/lv0
lv_swap /dev/vg0/lv_swap
virt1.example.com.img /dev/vg0/virt1.example.com.img
[root@server ~]# virsh list
Id Name State
----------------------------------
3 virt1.example.com running
Run Code Online (Sandbox Code Playgroud)
运行这三个命令似乎删除了已安装的 KVM
virsh destroy virt1.example.com
virsh undefine virt1.example.com
virsh vol-delete --pool vg0 virt1.example.com.img
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅终端会话:
[root@server ~]# virsh list --all
Id Name State …Run Code Online (Sandbox Code Playgroud) virsh create somefile.xml创建我的机器就好了,但是当我关闭机器时,整个事情就消失了。我用 virt-manager GUI 制作的机器是持久的(关机后仍然存在)并且 xml 文件来自那些 virt-manager 创建的机器。
我正在尝试将基于文件的磁盘热添加到正在运行的 KVM 虚拟服务器。我使用命令从头开始创建了一个新磁盘
dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0
Run Code Online (Sandbox Code Playgroud)
我希望通过在 virsh shell 中执行此操作来将其热添加到来宾中:
virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
vdd --driver=file --subdriver=raw
Run Code Online (Sandbox Code Playgroud)
然后域的 XML 定义变为:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/home/cloud/vps_59/root.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
<driver name='file' type='raw'/>
<source file='/home/cloud/vps_59/test.img'/>
<target dev='vdd' bus='virtio'/>
</disk>
Run Code Online (Sandbox Code Playgroud)
如您所见,驱动程序名称错误,应该是driver name='qemu'现有vda磁盘。我已经尝试过,--drive=qemu但它表示它不受支持。
其次,一旦我重新启动运行 Ubuntu 10.04.4 LTS 的虚拟机,我只会“看到”新添加的驱动器。如何使驱动器“热插拔”?我希望虚拟机无需重新启动即可立即“看到”新驱动器。
virtualization storage virtual-machines libvirt kvm-virtualization
在我的主机上,我使用 libvirt 和 KVM 来宾。当主机关闭时,libvirt 挂起来宾。当主机启动时,libvirt 恢复来宾。问题是,如果访客暂停并在 24 小时后恢复,那么访客时间是过去的 24 小时。
我认为问题可能出在时钟源上,但它已经设置为“kvm-clock”。
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc hpet acpi_pm
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock
Run Code Online (Sandbox Code Playgroud) virtualization time-synchronization libvirt kvm-virtualization
我正在尝试在 KVM 上使用不同的存储池,以便存储我的 VM 的虚拟磁盘以及我正在使用的操作系统的 ISO。
例如:我想使用/media/work/kvm挂载的目录/dev/sda5作为所有未来情况的默认存储池
要配置、创建和启动一个新的存储池,这很容易,但至少在 Ubuntu 中,如果我从不同的存储池中选择 ISO 并不重要,Virtual Machine Manager总是将我指向默认存储池 ( /var/cache/libvirt) 作为将创建来自我的 VM 的虚拟磁盘的存储。
我怎样才能避免这种情况?
我最近开始尝试在最新版本的 KVM/QEMU/libvirt 中支持直通文件系统。使文件系统可用于读取访问“刚刚奏效”,但我对写入访问应该如何工作感到有些困惑。在客户机中挂载文件系统后:
# mount -t 9p -o trans=virtio /fs/data /mnt
Run Code Online (Sandbox Code Playgroud)
如果现有文件具有 mode ,我可以修改它o+w:
# cd /mnt/work
# ls -l foo
-rw-rw-rw-. 1 root root 17 Dec 20 11:16 foo
# cat foo
this is line one
# echo this is line two >> foo
# cat foo
this is line one
this is line two
Run Code Online (Sandbox Code Playgroud)
但是无论目录权限如何,我都无法创建新文件或目录:
# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# …Run Code Online (Sandbox Code Playgroud) 我们有一个 Ubuntu 9.10 根服务器,我们希望在其上运行多个 KVM 虚拟机。为了管理这些虚拟机,我想要一个基于 Web 的 KVM 管理工具,但我不知道从linux-kvm.org 上提到的工具列表中选择哪个。
我在桌面上使用了 virsh 和 virt-manager,但想要一个服务器的 Web 界面。我在桌面上测试了 ConVirt,但它无法从 virsh / virt-manager 获取 KVM 机器,并且我无法让 KVM 虚拟机导入工作(仅限 Xen)。
oVirt 看起来不错,但我不知道我是否以及如何在 Ubuntu 9.10 上安装它..(我真的不想再浪费几天测试那些最终可能不起作用的东西。)
任何人都可以推荐任何易于在 Ubuntu 9.10 上安装的基于 Web 的 KVM 管理工具吗?
我正在寻找一些东西,除了托管虚拟机之外,它还可以让我运行其他服务,如 apache 和 postgresql,所以最好是相当轻量级的,没有专门的操作系统安装。我们不需要任何专业的集群/迁移或任何东西,只需能让我们从网页创建、启动、检查、管理和停止虚拟机的东西。
最好的问候,蒂姆
更新:
有人有什么建议吗?这里好安静。。