Linux桌面虛擬化技術KVM

安裝KVM

        查看CPU是否支持硬件虛擬化技術。 CPU要支持全虛擬化虛擬化技術且是64位的
Intel:cat /proc/cpuinfo | grep –color vmx
AMD :cat /proc/cpuinfo | grep –color svm
看看flag有沒有上面的vmx戒者是svm,有的話就是支持全虛擬化技術
cat /proc/cpuinfo | grep –color lm 是否支持64位html

[root@sxooky ~]# cat /proc/cpuinfo |grep --color lm 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
[root@sxooky ~]# cat /proc/cpuinfo |grep --color vmx 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid

若是,看不到vmx,是由於 VM CPU沒有開啓 VT 技術node

安裝KVM模塊、管理工具和libvirt

kvm : KVM虛擬化模塊
virt-manager: KVM圖形化管理工具
libvirt: 虛擬化服務python

[root@sxooky ~]# yum install -y kvm virt-manager libvirt 
......省略 
Installed: 
libvirt.x86_64 0:0.10.2-29.el6 qemu-kvm.x86_64 2:0.12.1.2-2.415.el6 virt-manager.x86_64 0:0.9.0-19.el6 
Dependency Installed: 
augeas-libs.x86_64 0:1.0.0-5.el6 celt051.x86_64 0:0.5.1.3-0.el6 cyrus-sasl-md5.x86_64 0:2.1.23-13.el6_3.1 
ebtables.x86_64 0:2.0.9-6.el6 glusterfs-api.x86_64 0:3.4.0.36rhs-1.el6 glusterfs-libs.x86_64 0:3.4.0.36rhs-1.el6 
gnutls-utils.x86_64 0:2.8.5-10.el6_4.2 gpxe-roms-qemu.noarch 0:0.9.7-6.10.el6 gtk-vnc.x86_64 0:0.3.10-3.el6 
gtk-vnc-python.x86_64 0:0.3.10-3.el6 iscsi-initiator-utils.x86_64 0:6.2.0.873-10.el6 libcacard.x86_64 0:0.15.0-2.el6 
libcgroup.x86_64 0:0.40.rc1-5.el6 libvirt-client.x86_64 0:0.10.2-29.el6 libvirt-python.x86_64 0:0.10.2-29.el6 
lzop.x86_64 0:1.02-0.9.rc1.el6 nc.x86_64 0:1.84-22.el6 netcf-libs.x86_64 0:0.1.9-4.el6 
numad.x86_64 0:0.5-9.20130814git.el6 python-virtinst.noarch 0:0.600.0-18.el6 qemu-img.x86_64 2:0.12.1.2-2.415.el6 
radvd.x86_64 0:1.6-1.el6 seabios.x86_64 0:0.6.1.2-28.el6 sgabios-bin.noarch 0:0-0.3.20110621svn.el6 
spice-glib.x86_64 0:0.20-11.el6 spice-gtk.x86_64 0:0.20-11.el6 spice-gtk-python.x86_64 0:0.20-11.el6 
spice-server.x86_64 0:0.12.4-6.el6 usbredir.x86_64 0:0.5.1-1.el6 vgabios.noarch 0:0.6b-3.7.el6 
yajl.x86_64 0:1.0.7-3.el6
 
Complete!

注:使用系統鏡像,先配置好yum 本地源linux

啓動KVM服務並設爲開機自啓

[root@sxooky ~]# service libvirtd start 
Starting libvirtd daemon: 2017-02-21 19:57:58.972+0000: 37536: info : libvirt version: 0.10.2, package: 29.el6 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2013-10-09-06:25:35, x86-026.build.eng.bos.redhat.com) 
2017-02-21 19:57:58.972+0000: 37536: warning : virGetHostname:2294 : getaddrinfo failed for 'sxooky': Name or service not known 
[ OK ] 
[root@sxooky ~]# chkconfig libvirtd on

肯定正確加載kvm 模塊

[root@sxooky ~]# lsmod |grep kvm 
kvm_intel 54285 0 
kvm 333172 1 kvm_intel

檢查 KVM 模塊是否成功安裝

檢查KVM 是否成功安裝可使用virsh命令檢查虛擬機的狀態ios

[root@sxooky ~]# virsh list 
Id Name State 
----------------------------------------------------

使用命令:virt-manager 創建虛擬機, 將kvm管理工具從英文界面,切換成中文界面git

[root@sxooky ~]# echo $LANG 
en_US.UTF-8 
[root@sxooky ~]# LANG='zh_CN.UTF-8' 
[root@sxooky ~]# echo $LANG 
zh_CN.UTF-8

執行virt-manager後,彈出以下界面vim

右擊localhost(QEMU)後,點擊「新建」就能夠跟據嚮導,安裝一個新的虛擬機了。
注:這裏先丌安裝Linux虛擬機。api

擴展:
下載linux版本的vmware
https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-11.1.2-2780 323.x86_64.bundle
安裝:
 bash

[root@sxooky ~]# hmod 755 VMware-Workstation-Full-11.1.2-2780323.x86_64.bundle [root@xuegod63~]# /VMware-Workstation-Full-11.1.2-2780323.x86_64.bundle

實戰1:配置KVM橋接功能

網橋介紹: 咱們常常所說的Bridge設備其實就是網橋設備,也就至關於如今的二層交換機,用於鏈接同一 網段內的全部機器,因此咱們的目的就是將網絡設備 eth0 添加到 br0,此時 br0 就成爲了所謂的交換機 設備,咱們物理機的eth0也是鏈接在上面的。網絡

添加橋接設備br0: 至關於一個二層交換機

安裝橋接軟件包

[root@sxooky ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-10.el6.x86_64.rpm 
warning: /mnt/Packages/bridge-utils-1.2-10.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY 
Preparing... ########################################### [100%] 
[root@sxooky ~]# cd /etc/sysconfig/network-scripts/

網卡配置修改eth0

[root@sxooky network-scripts]# vim ifcfg-eth0 
[root@sxooky network-scripts]# cat !$ 
cat ifcfg-eth0 
DEVICE=eth0 
HWADDR=00:0c:29:34:3b:d3 
TYPE=Ethernet 
UUID=48a80b39-84e0-4cbf-bedc-c97dd1340048 
ONBOOT=yes 
NM_CONTROLLED=yes 
BOOTPROTO=none 
IPV6INIT=no 
USERCTL=no 
#IPADDR=192.168.1.51 
#NETMASK=255.255.255.0 
#GATEWAY=192.168.1.1 
#DNS1=8.8.8.8 
BRIDGE="br0"

建立橋接配置文件

[root@sxooky network-scripts]# cp ifcfg-eth0 ifcfg-br0 
[root@sxooky network-scripts]# vim ifcfg-br0 
[root@sxooky network-scripts]# cat !$ 
cat ifcfg-br0 
DEVICE=br0 
TYPE="Bridge" 
ONBOOT=yes 
NM_CONTROLLED=yes 
BOOTPROTO=none 
IPV6INIT=no 
USERCTL=no 
IPADDR=192.168.1.51 
GATEWAY=192.168.1.1 
PREFIX=24 
DNS1=8.8.8.8

注:TYPE=」Bridge」,B要大寫。

[root@sxooky network-scripts]# /etc/init.d/network restart 
Shutting down interface br0: [ OK ] 
Shutting down interface eth0: [ OK ] 
Shutting down loopback interface: [ OK ] 
Bringing up loopback interface: [ OK ] 
Bringing up interface eth0: [ OK ] 
Bringing up interface br0: Determining if ip address 192.168.1.51 is already in use for device br0... 
[ OK ]

測試br0

[root@sxooky network-scripts]# ifconfig 
br0 Link encap:Ethernet HWaddr 00:0C:29:34:3B:D3 
inet addr:192.168.1.51 Bcast:192.168.1.255 Mask:255.255.255.0 
inet6 addr: fe80::20c:29ff:fe34:3bd3/64 Scope:Link 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:984 errors:0 dropped:0 overruns:0 frame:0 
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:48543 (47.4 KiB) TX bytes:3446 (3.3 KiB) 
eth0 Link encap:Ethernet HWaddr 00:0C:29:34:3B:D3 
inet6 addr: fe80::20c:29ff:fe34:3bd3/64 Scope:Link 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:224243 errors:0 dropped:0 overruns:0 frame:0 
TX packets:162118 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:26322149 (25.1 MiB) TX bytes:37133229 (35.4 MiB) 
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0 
inet6 addr: ::1/128 Scope:Host 
UP LOOPBACK RUNNING MTU:16436 Metric:1 
RX packets:52913 errors:0 dropped:0 overruns:0 frame:0 
TX packets:52913 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:31947192 (30.4 MiB) TX bytes:31947192 (30.4 MiB) 
virbr0 Link encap:Ethernet HWaddr 52:54:00:C5:29:6C 
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) 
[root@sxooky network-scripts]# /etc/init.d/NetworkManager status 
NetworkManager is stopped 
[root@sxooky network-scripts]# brctl show 
bridge name bridge id STP enabled interfaces 
br0 8000.000c29343bd3 no eth0 
virbr0 8000.525400c5296c yes virbr0-nic

實戰2:建立一臺KVM虛擬機

建立一個分區,用於存放安裝好的Linux操做系統

[root@sxooky ~]# lvs 
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert 
root vg_rhel -wi-ao---- 10.00g 
swap vg_rhel -wi-ao---- 1.00g 
[root@sxooky ~]# vgs 
VG #PV #LV #SN Attr VSize VFree 
vg_rhel 1 2 0 wz--n- 19.56g 8.56g 
[root@sxooky ~]# lvcreate -n kvm -L 8G vg_rhel 
Logical volume "kvm" created

格式化分區,並掛載使用

[root@sxooky ~]# mkfs.ext4 /dev/mapper/vg_rhel-kvm 
mke2fs 1.41.12 (17-May-2010) 
文件系統標籤= 
操做系統:Linux 
塊大小=4096 (log=2) 
分塊大小=4096 (log=2) 
Stride=0 blocks, Stripe width=0 blocks 
524288 inodes, 2097152 blocks 
104857 blocks (5.00%) reserved for the super user 
第一個數據塊=0 
Maximum filesystem blocks=2147483648 
64 block groups 
32768 blocks per group, 32768 fragments per group 
8192 inodes per group 
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 
正在寫入inode表: 完成 
Creating journal (32768 blocks): 完成 
Writing superblocks and filesystem accounting information: 完成 
This filesystem will be automatically checked every 20 mounts or 
180 days, whichever comes first. Use tune2fs -c or -i to override. 
[root@sxooky ~]# mount /dev/mapper/vg_rhel-kvm / var/lib/libvirt/images/ #安裝虛擬機, 默認存放的路徑 
[root@sxooky ~]# df -h |tail -1 
/dev/mapper/vg_rhel-kvm 7.9G 146M 7.4G 2% /var/lib/libvirt/images

建立KVM虛擬機

[root@sxooky ~]# virt-manager
準備系統鏡像:這裏直接使用VMware光驅中的鏡像

點「Finish」到此建立好一個新的KVM虛擬機了。

實戰3:解決shutdown關不了KVM虛擬機的問題

在安裝好的KVM的Linux虛擬機中安裝並啓勱acpi服務 virsh shutdown命令經過發送acpi指令來控制虛擬機的電源, 而kvm虛擬機安裝linux系統時默認是沒有安裝acpi服務的,因此並丌會作處理。

解決方法:只須要在虛擬機裏安裝並啓動acpid服務便可,執行命令以下:

[root@kvmsxooky ~]# yum install acpid -y 
[root@kvmsxooky ~]# service acpid start #啓動acpic服務 
[root@localhost yum.repos.d]# chkconfig --list acpid acpid 
0:off 1:off 2:on 3:on 4:on 5:on 6:off ##安裝後默認會加入到開機啓動中的

一、本地YUM源的配置方法

方法一:自動鏈接宿主機sxooky的CD/DVD光驅

配置基本環境,關閉KVM虛擬主機

[root@kvmsxooky ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0" 
HWADDR="52:54:00:95:89:DE" 
IPADDR=192.168.1.201 
NETMASK=255.255.255.0 
GATEWAY=192.168.1.1 
DNS1=8.8.8.8 
NM_CONTROLLED="yes" 
ONBOOT="yes" 
[root@kvmsxooky ~]# service network restart #啓動網卡 
[root@kvmsxooky ~]# cat /etc/yum.repos.d/rhel.repo 
[rhel-source] 
name=rhel6.5 cdrom 
baseurl=file:///mnt 
enabled=1 
gpgcheck=0 
[root@kvmsxooky ~]# sed -n '/^SELINUX=/p' /etc/sysconfig/selinux 
SELINUX=disabled 
[root@kvmsxooky ~]# getenforce 
Disabled 
[root@kvmsxooky ~]# chkconfig --list iptables 
iptables 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉 
[root@sxooky ~]# init 0

KVM宿主機sxooky修改KVM虛擬機配置文件

[root@sxooky qemu]# vim kvm_shenxiang01.xml 
35 <disk type='block' device='cdrom'> 
36 <driver name='qemu' type='raw'/> 
37 <source dev="/dev/sr0"/> #插入這條信息 
38 <target dev='hdc' bus='ide'/> 
39 <readonly/> 
40 <address type='drive' controller='0' bus='1' target='0' unit='0'/>

從新載入配置文件,登錄KVM虛擬機查看

[root@sxooky qemu]# virsh create kvm_shenxiang01.xml 
域 kvm_shenxiang01 被建立(從 kvm_shenxiang01.xml)

方法二:在宿主機sxooky上搭建yum源服務

[root@sxooky ~]# yum install httpd -y 
[root@sxooky ~]# service httpd start 
[root@sxooky ~]# mount /dev/cdrom /var/www/html/ 
配置kvm 虛擬機rhel6-71 的yum源 
[root@kvmsxooky ~]# cat /etc/yum.repos.d/rhel.repo 
[rhel-source] 
name=rhel6.5 cdrom 
#baseurl=file:///mnt #方法一 
baseurl=http://192.168.1.51/ #方法二:修改成此內容 
enabled=1 
gpgcheck=0

二、在kvm 虛擬機kvm_shenxiang01安裝acpid服務

[root@kvmsxooky ~]# yum install -y acpid 
[root@kvmsxooky ~]# service acpid start #啓動acpic服務 
[root@localhost yum.repos.d]# chkconfig --list acpid acpid 
0:off 1:off 2:on 3:on 4:on 5:on 6:off #安裝後默認會加入到開機啓勱的

三、在KVM宿主機sxooky真機上測試

[root@sxooky ~]# virsh list 
Id 名稱 狀態 
---------------------------------------------------- 
19 kvm_shenxiang01 running 
[root@sxooky ~]# virsh shutdown kvm_shenxiang01 #關閉kvm_shenxiang01虛擬機 
域 kvm_shenxiang01 被關閉 
[root@sxooky ~]# virsh list --all 
Id 名稱 狀態 
---------------------------------------------------- 
- kvm_shenxiang01 關閉 
[root@sxooky ~]# virsh autostart kvm_shenxiang01 #設置 vm1爲物理機開機後,自動啓動 
域 kvm_shenxiang01標記爲自動開始

系統安裝出現的幾個問題

Kvm經過virt-manager遠程管理guestos時鍵盤錯亂

命令行方式

關閉要調整的虛擬機,編輯虛擬機配置文件
#virsh edit ‘your vm name’
找到配置文件中的如下字段
<graphics type=’vnc’ port=’-1’/>
加入鍵盤的語言佈局後以下
<graphics type=’vnc’ port=’-1′ keymap=’en-us’/>
保存退出後,從新載入虛擬機配置文件
#virsh create /etc/libvirt/qemu/’your vm name’.xml
若是要避免這種狀況,在使用virt-install安裝的時候,就加入鍵盤佈局的字段
–keymap=en-us

virt-manager方式

在虛擬關閉的狀態下,經過virt-manager界面選中相應的虛擬機
Open(打開)–>View(查看)–>Details(詳情)–>Display VNC(顯示VNC)–>keymap–>en-us
保存後再啓動虛擬機就能夠了
光盤安裝 —— 注意
Open(打開)–>View(查看)–>Details(詳情)–> IDE cdrom1 ()–>disconnect(鏈接狀態)

linux 內核啓動錯誤和selinux參數

Kernel panic -not syncing:Attempted to kill init

解決辦法

進入單用戶模式(關閉selinux)
在linux啓動界面出現時,按f2進入以下界面

輸入「e」

選擇Kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/luks-e885a2 再次輸入「e」

在rhgb quiet 後面加上 selinux=0 <回車鍵>

輸入「b」在從新進入系統,就OK了。

出現問題緣由

Swap分區:我沒有使用swap分區,因爲在安裝SELinux時候會消耗不少內存,內存不夠用時,會使用swap分區,若是沒有swap分區的話就會出現上圖所示,若是分了swap分區過小,同樣出現這種狀況,所以,swap分區仍是頗有必要的。至少解決了個人問題。

KVM虛擬機經常使用命令

[root@sxooky ~]# virsh list #只顯示運行中的虛擬機Id名稱 
Id 名稱 狀態 
---------------------------------------------------- 
12 kvm_shenxiang01 running 
[root@sxooky ~]# virsh list –all #顯示全部的虛擬,包括關閉狀態的虛擬機 
Id 名稱 狀態 
---------------------------------------------------- 
12 kvm_shenxiang01 running 
[root@sxooky ~]# virsh shutdown kvm_shenxiang01 #關閉KVM虛擬機kvm_shenxiang01 
域 kvm_shenxiang01 被關閉
相關文章
相關標籤/搜索