天天看點

kvm中虛拟機xml檔案釋義

  xml檔案内容是來定義kvm中domain的配置資訊,可以使用virt-install來生成,但需要指定各個選項,那還不如生成一個基本的xml或複制模闆來做相應修改。

以下是kvm中domain的xml配置解釋。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

<code>&lt;!-- </code><code>#提示資訊</code>

<code>WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE </code>

<code>OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:</code>

<code>  </code><code>virsh edit win7-02</code>

<code>or other application using the libvirt API.</code>

<code>--&gt;</code>

<code>&lt;domain </code><code>type</code><code>=</code><code>'kvm'</code><code>&gt; </code><code>#用kvm建立的虛拟機稱為domain,type定義使用哪個虛拟機管理程式,值可以是:xen、kvm、qemu、lxc、kqemu</code>

<code>                    </code><code>#第二個參數是id,它唯一的标示一個運作的虛拟機,不活躍的用戶端沒有id。 </code>

<code>  </code><code>&lt;name&gt;win7-02&lt;</code><code>/name</code><code>&gt;</code>

<code>            </code><code>#name參數為虛拟機定義了一個簡短的名字,必須唯一</code>

<code>  </code><code>&lt;uuid&gt;6ce14f21-33ac-dc79-5444-f64ccc80ea17&lt;</code><code>/uuid</code><code>&gt;</code>

<code>                    </code><code>#uuid,全球唯一,linux下可以用uuidgen生成</code>

<code> </code><code>&lt;title&gt;This is my first </code><code>test</code> <code>kvm&lt;</code><code>/title</code><code>&gt;</code>

<code>                    </code><code>#title參數提供一個對虛拟機簡短的說明,它不能包含換行符。</code>

<code>  </code><code>&lt;memory unit=</code><code>'KiB'</code><code>&gt;2097152&lt;</code><code>/memory</code><code>&gt;</code>

<code>                    </code><code>#可以配置設定到的最大記憶體,記憶體機關由unit定義,機關可以是:K、KiB、M、MiB、G、GiB、T、TiB。預設是KiB。MiB 2048代表2G</code>

<code>  </code><code>&lt;currentMemory unit=</code><code>'KiB'</code><code>&gt;2097152&lt;</code><code>/currentMemory</code><code>&gt;</code>

<code>                    </code><code>#實際分給給用戶端的記憶體她小于memory的定義,如果沒有定義,值和memory一緻。</code>

<code>  </code><code>&lt;vcpu placement=</code><code>'static'</code><code>&gt;1&lt;</code><code>/vcpu</code><code>&gt;</code>

<code>                    </code><code>#vcpu的内容是為虛拟機最多配置設定幾個cpu</code>

<code>  </code><code>&lt;os&gt;</code>

<code>    </code><code>&lt;</code><code>type</code> <code>arch=</code><code>'x86_64'</code> <code>machine=</code><code>'rhel6.5.0'</code><code>&gt;hvm&lt;</code><code>/type</code><code>&gt;</code>

<code>#arch指定虛拟機的CPU構架,machine指定機器的類型。hvm表明該OS被設計為直接運作在裸金屬上面,需要全虛拟化。</code>

<code>    </code><code>&lt;boot dev=</code><code>'cdrom'</code><code>/&gt;</code>

<code>                </code><code>#dev屬性的值可以是:fd、hd、cdrom、network,boot的元素可以被設定多個用來建立一個啟動優先規則。 </code>

<code>  </code><code>&lt;</code><code>/os</code><code>&gt;</code>

<code>  </code><code>&lt;features&gt; </code><code>#Hypervisor的特性:</code>

<code>    </code><code>&lt;acpi/&gt;  </code><code>#Hypervisors允許特定的CPU/機器特性打開或關閉,所有的特性都在fearures元素中,以下介紹一些在全虛拟化中常用的标記:</code>

<code>    </code><code>&lt;apic/&gt;  </code><code>#acpi:用于電源管理      </code>

<code>    </code><code>&lt;pae/&gt;   </code><code>#pae:擴充實體位址模式,使32位的用戶端支援大于4GB的記憶體</code>

<code>  </code><code>&lt;</code><code>/features</code><code>&gt;</code>

<code>  </code><code>&lt;cpu mode=</code><code>'host-passthrough'</code><code>&gt;</code>

<code>    </code><code>&lt;topology sockets=</code><code>'1'</code> <code>cores=</code><code>'4'</code> <code>threads=</code><code>'1'</code><code>/&gt;</code>

<code>  </code><code>&lt;</code><code>/cpu</code><code>&gt;</code>

<code>  </code> 

<code>  </code><code>&lt;on_poweroff&gt;destroy&lt;</code><code>/on_poweroff</code><code>&gt;</code>

<code>  </code><code>#當用戶端請求poweroff時執行特定的動作</code>

<code>  </code><code>&lt;on_reboot&gt;restart&lt;</code><code>/on_reboot</code><code>&gt;</code>

<code>  </code><code>#當用戶端請求reboot時執行特定的動作</code>

<code>  </code><code>&lt;on_crash&gt;restart&lt;</code><code>/on_crash</code><code>&gt;</code>

<code>  </code><code>#當用戶端崩潰時執行的動作</code>

<code> </code><code>#每種狀态下可以允許指定如下四種行為:</code>

<code>         </code><code>#destory:domain将會被完全終止,domain的所有資源會被釋放</code>

<code>         </code><code>#restart:domain會被終止,然後以相同的配置重新啟動</code>

<code>         </code><code>#preserver:domain會被終止,它的資源會被保留用來分析</code>

<code>         </code><code>#rename-restart:domain會被終止,然後以一個新名字被重新啟動</code>

<code> </code> 

<code> </code><code>&lt;clock offset=</code><code>"localtime"</code> <code>/&gt;</code>

<code>         </code><code>#用戶端的時間初始化來自主控端的時間,大多數作業系統期望硬體時鐘保持UTC格式,UTC也是預設格式,然而Windows機器卻期望它是'localtime'</code>

<code> </code><code>#UTC:當引導時用戶端時鐘同步到UTC時鐘</code>

<code>         </code><code>#localtime:當引導時用戶端時鐘同步到主機時鐘所在的時區</code>

<code>         </code><code>#timezone:The guest clock will be synchronized to the requested timezone using the timezone attribute </code>

<code> </code><code>&lt;devices&gt; </code><code>#所有的裝置都是一個名為devices元素的子裝置</code>

<code>    </code><code>&lt;emulator&gt;</code><code>/usr/libexec/qemu-kvm</code><code>&lt;</code><code>/emulator</code><code>&gt;</code>

<code>        </code><code>#emulator元素指定模拟裝置二進制檔案的全路徑</code>

<code>    </code><code>&lt;disk </code><code>type</code><code>=</code><code>'file'</code> <code>device=</code><code>'disk'</code><code>&gt;</code>

<code>      </code><code>&lt;driver name=</code><code>'qemu'</code> <code>type</code><code>=</code><code>'qcow2'</code><code>/&gt;</code>

<code>      </code><code>&lt;</code><code>source</code> <code>file</code><code>=</code><code>'/data/vmdisk/win7-02.qcow2'</code><code>/&gt;</code>

<code>      </code><code>&lt;target dev=</code><code>'vda'</code> <code>bus=</code><code>'virtio'</code><code>/&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x04'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/disk</code><code>&gt;</code>

<code>    </code><code>&lt;disk </code><code>type</code><code>=</code><code>'file'</code> <code>device=</code><code>'cdrom'</code><code>&gt;</code>

<code>      </code><code>&lt;driver name=</code><code>'qemu'</code> <code>type</code><code>=</code><code>'raw'</code><code>/&gt;</code>

<code>      </code><code>&lt;</code><code>source</code> <code>file</code><code>=</code><code>'/iso/win7.iso'</code><code>/&gt;</code>

<code>      </code><code>&lt;target dev=</code><code>'hda'</code> <code>bus=</code><code>'ide'</code><code>/&gt;</code>

<code>      </code><code>&lt;</code><code>readonly</code><code>/&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'drive'</code> <code>controller=</code><code>'0'</code> <code>bus=</code><code>'0'</code> <code>target=</code><code>'0'</code> <code>unit=</code><code>'0'</code><code>/&gt;</code>

<code>      </code><code>&lt;</code><code>source</code> <code>file</code><code>=</code><code>'/iso/virtio-win-0.1-100.iso'</code><code>/&gt;</code>

<code>      </code><code>&lt;target dev=</code><code>'hdb'</code> <code>bus=</code><code>'ide'</code><code>/&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'drive'</code> <code>controller=</code><code>'0'</code> <code>bus=</code><code>'0'</code> <code>target=</code><code>'0'</code> <code>unit=</code><code>'1'</code><code>/&gt;</code>

<code>    </code><code>&lt;disk </code><code>type</code><code>=</code><code>'file'</code> <code>device=</code><code>'floppy'</code><code>&gt;</code>

<code>      </code><code>&lt;</code><code>source</code> <code>file</code><code>=</code><code>'/iso/virtio-win-0.1.96_amd64.vfg'</code><code>/&gt;</code>

<code>      </code><code>&lt;target dev=</code><code>'fda'</code> <code>bus=</code><code>'fdc'</code><code>/&gt;</code>

<code>#所有的裝置看起來就像一個disk、floppy、cdrom或者一個 paravirtualized driver,他們通過一個disk元素指定。</code>

<code>#type特性包括:file,block,dir,network,device描述disk如何受到用戶端OS的,特性包括:floppy、disk、cdrom、lun,預設是disk</code>

<code>#source元素:在disk的type是file時,file屬性指定一個合格的全路徑檔案映像作為用戶端的磁盤,在disk的type是block時,dev屬性指定一個主機裝置的路徑作為disk。</code>

<code>   </code><code>#在disk的type是dir時,dir屬性指定一個全路徑的目錄作為disk,在disk的type是network時,protocol屬性指定協定用來通路鏡像,鏡像的值可以是:nbd,rbd,sheepdog</code>

<code>#dev屬性表明本地磁盤在用戶端上的實際名稱,因為實際裝置的名稱指定并不能保證映射到用戶端OS上的裝置</code>

<code>#bus屬性指定了哪種類型的磁盤被模拟,值主要有:ide、scsi、virtio、xen、usb、sata</code>

<code>#readonly元素:指定用戶端不能修改裝置。當一個disk含有type=cdrom,readonly則是預設值。</code>

<code>(disk中virtio-win-0.1-100.iso和virtio-win-0.1.96_amd64.vfg是windows需要的驅動檔案,linux系列無需定義)</code>

<code>    </code> 

<code>&lt;controller </code><code>type</code><code>=</code><code>'usb'</code> <code>index=</code><code>'0'</code><code>&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x01'</code> <code>function</code><code>=</code><code>'0x2'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/controller</code><code>&gt;</code>

<code>    </code><code>&lt;controller </code><code>type</code><code>=</code><code>'ide'</code> <code>index=</code><code>'0'</code><code>&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x01'</code> <code>function</code><code>=</code><code>'0x1'</code><code>/&gt;</code>

<code>    </code><code>&lt;controller </code><code>type</code><code>=</code><code>'fdc'</code> <code>index=</code><code>'0'</code><code>/&gt;</code>

<code>    </code><code>&lt;controller </code><code>type</code><code>=</code><code>'virtio-serial'</code> <code>index=</code><code>'0'</code><code>&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x05'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/&gt;</code>

<code>&lt;interface </code><code>type</code><code>=</code><code>'bridge'</code><code>&gt;  </code><code>#類型橋接</code>

<code>      </code><code>&lt;</code><code>source</code> <code>bridge=</code><code>'br0'</code><code>/&gt; </code><code>#橋接的裝置名字</code>

<code>      </code><code>&lt;model </code><code>type</code><code>=</code><code>'virtio'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/interface</code><code>&gt;</code>

<code>#串行端口</code>

<code>&lt;serial </code><code>type</code><code>=</code><code>'file'</code><code>&gt;</code>

<code>      </code><code>&lt;</code><code>source</code> <code>path=</code><code>'/tmp/console.log'</code><code>/&gt;</code>

<code>      </code><code>&lt;target port=</code><code>'0'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/serial</code><code>&gt;</code>

<code>    </code><code>&lt;serial </code><code>type</code><code>=</code><code>'pty'</code><code>&gt;</code>

<code>      </code><code>&lt;target port=</code><code>'1'</code><code>/&gt;</code>

<code>    </code><code>&lt;console </code><code>type</code><code>=</code><code>'file'</code><code>&gt;</code>

<code>      </code><code>&lt;target </code><code>type</code><code>=</code><code>'serial'</code> <code>port=</code><code>'0'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/console</code><code>&gt;</code>

<code>    </code><code>&lt;channel </code><code>type</code><code>=</code><code>'spicevmc'</code><code>&gt;</code>

<code>      </code><code>&lt;target </code><code>type</code><code>=</code><code>'virtio'</code> <code>name=</code><code>'com.redhat.spice.0'</code><code>/&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'virtio-serial'</code> <code>controller=</code><code>'0'</code> <code>bus=</code><code>'0'</code> <code>port=</code><code>'1'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/channel</code><code>&gt;</code>

<code>    </code><code>&lt;input </code><code>type</code><code>=</code><code>'tablet'</code> <code>bus=</code><code>'usb'</code><code>/&gt;</code>

<code>    </code><code>&lt;input </code><code>type</code><code>=</code><code>'mouse'</code> <code>bus=</code><code>'ps2'</code><code>/&gt;</code>

<code>    </code><code>#input元素:input元素含有一個強制的屬性,type屬性的值可以是mouse或tablet</code>

<code>#bus屬性指定一個明确的裝置類型,值可以是:xen、ps2、usb。 </code>

<code>&lt;graphics </code><code>type</code><code>=</code><code>'spice'</code> <code>port=</code><code>'6789'</code> <code>autoport=</code><code>'no'</code> <code>listen=</code><code>'0.0.0.0'</code> <code>keymap=</code><code>'en-us'</code><code>&gt;</code>

<code>      </code><code>&lt;listen </code><code>type</code><code>=</code><code>'address'</code> <code>address=</code><code>'0.0.0.0'</code><code>/&gt; </code><code>#graphics元素:graphics含有一個強制的屬性type,type的值可以是:sdl、vnc、rdp、desktop、spice</code>

<code>      </code><code>&lt;channel name=</code><code>'main'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;     </code><code>#vnc則啟動vnc服務,port屬性指定tcp端口,如果是-1,則表示自動配置設定</code>

<code>      </code><code>&lt;channel name=</code><code>'display'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;  </code><code>#vnc的端口自動配置設定的話是從5900向上遞增。listen屬性提供一個IP位址給伺服器監聽,可以單獨在listen元素中設定</code>

<code>      </code><code>&lt;channel name=</code><code>'inputs'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;   </code><code>#passwd屬性提供一個vnc的密碼</code>

<code>      </code><code>&lt;channel name=</code><code>'cursor'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;   </code><code>#listen元素:listen元素專門針對vnc和spice設定監聽端口等</code>

<code>      </code><code>&lt;channel name=</code><code>'playback'</code> <code>mode=</code><code>'insecure'</code><code>/&gt; </code><code>#它包含以下屬性:type、address、network。type的值可以是address或network。</code>

<code>      </code><code>&lt;channel name=</code><code>'record'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;   </code><code>#如果設定了type=address,那麼address屬性設定一個ip位址或者主機名來監聽。</code>

<code>      </code><code>&lt;channel name=</code><code>'smartcard'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;</code><code>#如果type=network,則network屬性設定一個網絡名稱在libvirt‘s的網絡配置檔案中。</code>

<code>      </code><code>&lt;channel name=</code><code>'usbredir'</code> <code>mode=</code><code>'insecure'</code><code>/&gt;</code>

<code>      </code><code>&lt;image compression=</code><code>'auto_glz'</code><code>/&gt;</code>

<code>      </code><code>&lt;streaming mode=</code><code>'all'</code><code>/&gt;</code>

<code>      </code><code>&lt;clipboard copypaste=</code><code>'yes'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/graphics</code><code>&gt;</code>

<code>  </code><code>&lt;video&gt;</code>

<code>      </code><code>&lt;model </code><code>type</code><code>=</code><code>'qxl'</code> <code>ram</code><code>=</code><code>'65536'</code> <code>vram=</code><code>'65536'</code> <code>heads=</code><code>'1'</code><code>&gt;</code>

<code>        </code><code>&lt;acceleration accel3d=</code><code>'yes'</code> <code>accel2d=</code><code>'yes'</code><code>/&gt;</code>

<code>      </code><code>&lt;</code><code>/model</code><code>&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x02'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/video</code><code>&gt;</code>

<code>    </code><code>&lt;memballoon model=</code><code>'virtio'</code><code>&gt;</code>

<code>      </code><code>&lt;address </code><code>type</code><code>=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x06'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>/memballoon</code><code>&gt;</code>

<code>  </code><code>&lt;</code><code>/devices</code><code>&gt;</code>

<code>&lt;</code><code>/domain</code><code>&gt;</code>

<code>   </code><code>#video元素:是描述聲音裝置的容器,為了向後完全相容,如果沒有設定video但是有graphics在xml配置檔案中,這時libvirt會按照用戶端類型增加一個預設的video</code>

本文轉自Jacken_yang 51CTO部落格,原文連結:http://blog.51cto.com/linuxnote/1881726,如需轉載請自行聯系原作者