标签: libvirt

在 libvirt / KVM 中将端口转发给来宾

使用 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)

ubuntu nat port-forwarding libvirt kvm-virtualization

39
推荐指数
3
解决办法
8万
查看次数

KVM/libvirt:如何在虚拟化主机上配置静态访客 IP 地址

我想要做的是从主机系统设置来宾的网络配置(IP 地址、子网、网关、广播地址)。使用的网络设置处于bridge模式。如何从主机配置网络而不是将客户端本身配置为静态网络配置?

如果我执行:

virsh edit vm1
Run Code Online (Sandbox Code Playgroud)

还有一个<network>块,我试图从那里配置网络接口,但不幸的是来宾 VM 似乎没有使用它,因此对网络离线(因为它仅使用自动网络配置)......来宾VM 都基于 Linux 和 Windows。任何帮助将不胜感激。

dhcp libvirt kvm-virtualization virsh

38
推荐指数
2
解决办法
10万
查看次数

如何使用 libvirt+KVM 重命名虚拟机

如何在 KVM+libvirt 上重命名虚拟机?

我希望它更改“库存”中的名称以及更改存储的名称等。

ubuntu libvirt kvm-virtualization

26
推荐指数
4
解决办法
3万
查看次数

使用 virt-install 创建来宾后如何删除它

我从命令行创建了一个 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)

installation libvirt kvm-virtualization

25
推荐指数
1
解决办法
6万
查看次数

如何使用 virsh 创建持久域?

virsh create somefile.xml创建我的机器就好了,但是当我关闭机器时,整个事情就消失了。我用 virt-manager GUI 制作的机器是持久的(关机后仍然存在)并且 xml 文件来自那些 virt-manager 创建的机器。

libvirt rhel6 virsh

25
推荐指数
2
解决办法
2万
查看次数

KVM 和 Libvirt - 如何热插拔新的 virtio 磁盘?

我正在尝试将基于文件的磁盘热添加到正在运行的 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

25
推荐指数
1
解决办法
4万
查看次数

如何使用 libvirt 在恢复的 KVM 来宾上保持时间?

在我的主机上,我使用 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

20
推荐指数
2
解决办法
2万
查看次数

如何从 libvirt 更改默认存储池?

我正在尝试在 KVM 上使用不同的存储池,以便存储我的 VM 的虚拟磁盘以及我正在使用的操作系统的 ISO。

例如:我想使用/media/work/kvm挂载的目录/dev/sda5作为所有未来情况的默认存储池

要配置、创建和启动一个新的存储池,这很容易,但至少在 Ubuntu 中,如果我从不同的存储池中选择 ISO 并不重要,Virtual Machine Manager总是将我指向默认存储池 ( /var/cache/libvirt) 作为将创建来自我的 VM 的虚拟磁盘的存储。

我怎样才能避免这种情况?

libvirt kvm-virtualization virsh

20
推荐指数
2
解决办法
4万
查看次数

使用 libvirt/qemu 对直通 (9p) 文件系统进行读/写访问?

我最近开始尝试在最新版本的 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)

virtualization filesystems libvirt qemu 9p

17
推荐指数
1
解决办法
1万
查看次数

Ubuntu 基于 Web 的 KVM 管理

我们有一个 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,所以最好是相当轻量级的,没有专门的操作系统安装。我们不需要任何专业的集群/迁移或任何东西,只需能让我们从网页创建、启动、检查、管理和停止虚拟机的东西。

最好的问候,蒂姆


更新:
有人有什么建议吗?这里好安静。。

ubuntu virtual-machines libvirt kvm-virtualization

15
推荐指数
1
解决办法
5万
查看次数