Projet

Général

Profil

Libvirt (ancien) » Historique » Version 60

Matthieu Herrb, 24/11/2020 09:32
back to libvirt

1 1 Mehdi Abaakouk
h1. Libvirt
2 1 Mehdi Abaakouk
3 60 Matthieu Herrb
h2. /!\ tetaneutral utilise de nouveau libvirt /!\
4 1 Mehdi Abaakouk
5 60 Matthieu Herrb
https://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/Cluster_with_libvirt
6 60 Matthieu Herrb
7 60 Matthieu Herrb
8 59 Mehdi Abaakouk
9 12 Mehdi Abaakouk
h2. Resources/Liens
10 12 Mehdi Abaakouk
11 18 Laurent GUERBY
* Virtualisation du routage IPv4 pour les VM http://lists.tetaneutral.net/pipermail/technique/2013-April/000810.html
12 18 Laurent GUERBY
13 12 Mehdi Abaakouk
* libvirt
14 12 Mehdi Abaakouk
15 12 Mehdi Abaakouk
http://builder.virt-tools.org/artifacts/libvirt-virshcmdref/html/index.html
16 12 Mehdi Abaakouk
http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/chap-Virtualization-Managing_guests_with_virsh.html
17 12 Mehdi Abaakouk
18 12 Mehdi Abaakouk
* virt-install et preseed sans server web et pxe:
19 12 Mehdi Abaakouk
20 58 Mehdi Abaakouk
http://honk.sigxcpu.org/con/Preseeding_Debian_virtual_machines_with_virt_install.html
21 58 Mehdi Abaakouk
22 58 Mehdi Abaakouk
23 58 Mehdi Abaakouk
24 28 Mehdi Abaakouk
h2. Backup d'un VM n7
25 28 Mehdi Abaakouk
26 28 Mehdi Abaakouk
sur h2:
27 28 Mehdi Abaakouk
28 29 Mehdi Abaakouk
<pre>
29 28 Mehdi Abaakouk
# VM=XXX.gz; cd /backup/libvirt-n7-vm-raw/20140319/ ; if [ ! -f ${VM} ]; then socat -u tcp4-listen:50555 - > $VM ; zcat $VM | md5sum -; du -hs *; else echo $VM already present;fi
30 29 Mehdi Abaakouk
</pre>
31 28 Mehdi Abaakouk
32 28 Mehdi Abaakouk
sur la machine n7:
33 28 Mehdi Abaakouk
34 29 Mehdi Abaakouk
<pre>
35 28 Mehdi Abaakouk
# virsh shutdown XXX
36 1 Mehdi Abaakouk
# LV=XXX; cat /dev/raid5/$LV | gzip --fast|socat -u - tcp4:h2.tetaneutral.net:50555;md5sum /dev/raid5/$LV
37 29 Mehdi Abaakouk
</pre>
38 28 Mehdi Abaakouk
39 1 Mehdi Abaakouk
h2. Installation VM sans bridge avec routage static (en /32 pour l'ipv4)
40 1 Mehdi Abaakouk
41 28 Mehdi Abaakouk
Note: tous les fichiers utilisés et créés ne sont peut être pas à jour, voir ici pour les dernières version: http://git.tetaneutral.net/libvirt.git/
42 11 Mehdi Abaakouk
43 28 Mehdi Abaakouk
Le répertoire /etc/libvirt/ttnn cité plustard est géré dans ce git.
44 1 Mehdi Abaakouk
45 1 Mehdi Abaakouk
h3. Configuration de la libvirt
46 1 Mehdi Abaakouk
47 28 Mehdi Abaakouk
On créé un réseau libvirt qui fait rien (déjà fait sur n7):
48 1 Mehdi Abaakouk
49 10 Mehdi Abaakouk
<pre>
50 1 Mehdi Abaakouk
cat > libvirt_dump_network.xml <<EOF
51 1 Mehdi Abaakouk
<network ipv6='yes'>
52 6 Mehdi Abaakouk
<name>dump-net</name>
53 1 Mehdi Abaakouk
<bridge name='dumpbr0' />
54 1 Mehdi Abaakouk
</network>
55 1 Mehdi Abaakouk
EOF
56 10 Mehdi Abaakouk
57 1 Mehdi Abaakouk
virsh net-define libvirt_dump_network.xml
58 1 Mehdi Abaakouk
virsh net-autostart dump-net
59 1 Mehdi Abaakouk
virsh net-start dump-net
60 1 Mehdi Abaakouk
</pre>
61 1 Mehdi Abaakouk
62 28 Mehdi Abaakouk
On créé un hook libvirt (déjà fait sur n7):
63 1 Mehdi Abaakouk
<pre>
64 9 Mehdi Abaakouk
mkdir -p /etc/libvirt/ttnn/hooks
65 9 Mehdi Abaakouk
ln -s /etc/libvirt/ttnn/hooks /etc/libvirt/hooks
66 1 Mehdi Abaakouk
vi /etc/libvirt/hooks/qemu
67 1 Mehdi Abaakouk
----8<--------------->8----
68 1 Mehdi Abaakouk
#!/bin/bash
69 1 Mehdi Abaakouk
70 1 Mehdi Abaakouk
name="$1"
71 1 Mehdi Abaakouk
operation="$2"
72 1 Mehdi Abaakouk
suboperation="$3"
73 1 Mehdi Abaakouk
74 7 Mehdi Abaakouk
[ "$operation" != "start" ] && exit 0
75 1 Mehdi Abaakouk
[ "$suboperation" != "begin" ] && exit 0
76 1 Mehdi Abaakouk
77 1 Mehdi Abaakouk
# get interface from the libvirt xml
78 1 Mehdi Abaakouk
interface=$(cat - | sed -ne "/vnet/s/.*dev='\([^']*\)'.*/\1/gp")
79 5 Mehdi Abaakouk
80 5 Mehdi Abaakouk
[ -f /etc/libvirt/ttnn/${name}.conf ] && source /etc/libvirt/ttnn/${name}.conf
81 5 Mehdi Abaakouk
82 1 Mehdi Abaakouk
[ "$ip" -o "$ip6" ] && brctl delif dumpbr0 $interface
83 1 Mehdi Abaakouk
[ "$ip" ] && ip route add $ip/32 dev $interface
84 1 Mehdi Abaakouk
[ "$ip6" ] && ip route add $ip6/56 dev $interface
85 1 Mehdi Abaakouk
[ "$ip6" ] && ip -6 addr add fe80::31/64 dev $interface
86 1 Mehdi Abaakouk
exit 0
87 1 Mehdi Abaakouk
----8<--------------->8----
88 1 Mehdi Abaakouk
</pre>
89 1 Mehdi Abaakouk
90 1 Mehdi Abaakouk
91 4 Mehdi Abaakouk
h3. Preparation de l'installer
92 1 Mehdi Abaakouk
93 28 Mehdi Abaakouk
Pour une squeeze on met à jour virtinst  (déjà fait sur n7):
94 1 Mehdi Abaakouk
95 9 Mehdi Abaakouk
<pre>
96 9 Mehdi Abaakouk
wget http://ftp.us.debian.org/debian/pool/main/v/virtinst/virtinst_0.600.3-3_all.deb
97 1 Mehdi Abaakouk
dpkg -i virtinst_0.600.3-3_all.deb
98 1 Mehdi Abaakouk
</pre>
99 1 Mehdi Abaakouk
100 28 Mehdi Abaakouk
On install le preseed.cfg attaché à la page dans /etc/libvirt/preseed.cfg  (déjà fait sur n7)
101 1 Mehdi Abaakouk
102 1 Mehdi Abaakouk
h4. Installation d'une VM
103 4 Mehdi Abaakouk
104 28 Mehdi Abaakouk
Creation du disk (déjà fait sur n7):
105 1 Mehdi Abaakouk
<pre>
106 1 Mehdi Abaakouk
lvcreate -n picttn -L 50G /dev/raid5
107 1 Mehdi Abaakouk
</pre>
108 5 Mehdi Abaakouk
109 5 Mehdi Abaakouk
Configuration du routage static:
110 5 Mehdi Abaakouk
111 1 Mehdi Abaakouk
<pre>
112 5 Mehdi Abaakouk
vi /etc/libvirt/ttnn/picttn.conf 
113 16 Mehdi Abaakouk
# le /32 ipv4
114 1 Mehdi Abaakouk
ip="91.224.148.252"
115 16 Mehdi Abaakouk
# le /56 ipv6
116 5 Mehdi Abaakouk
ip6="2a01:6600:8080:FC00::"
117 5 Mehdi Abaakouk
</pre>
118 8 Mehdi Abaakouk
119 28 Mehdi Abaakouk
Lancement de l'installation via le réseau natter de libvirt
120 1 Mehdi Abaakouk
<pre>
121 1 Mehdi Abaakouk
virt-install -n picttn -r 2048 --os-type=linux \
122 8 Mehdi Abaakouk
    --autostart \
123 1 Mehdi Abaakouk
    --disk /dev/raid5/picttn,bus=virtio,cache=none,io=native \
124 13 Mehdi Abaakouk
    --network network=default,model=virtio \
125 8 Mehdi Abaakouk
    --nographics \
126 6 Mehdi Abaakouk
    --noreboot \
127 1 Mehdi Abaakouk
    --wait -1 \
128 1 Mehdi Abaakouk
    --location http://ftp.debian.org/debian/dists/wheezy/main/installer-amd64/ \
129 6 Mehdi Abaakouk
    --serial pty \
130 8 Mehdi Abaakouk
    --initrd-inject /etc/libvirt/ttnn/preseed.cfg \
131 7 Mehdi Abaakouk
    --initrd-inject /etc/libvirt/ttnn/picttn.conf \
132 1 Mehdi Abaakouk
    --initrd-inject /etc/libvirt/ttnn/postinstall.sh \
133 1 Mehdi Abaakouk
    --extra-args "console=ttyS0,9600n8 DEBIAN_FRONTEND=text auto priority=critical hostname=picttn domain=le-pic.org"
134 8 Mehdi Abaakouk
</pre>
135 8 Mehdi Abaakouk
136 28 Mehdi Abaakouk
Une fois l'installation terminée, on change la conf réseau:
137 1 Mehdi Abaakouk
138 14 Mehdi Abaakouk
<pre>
139 8 Mehdi Abaakouk
EDITOR="sed -ie s/default/dump-net/g" virsh edit picttn
140 8 Mehdi Abaakouk
</pre>
141 1 Mehdi Abaakouk
142 28 Mehdi Abaakouk
On peux démarrer la VM
143 8 Mehdi Abaakouk
<pre>
144 8 Mehdi Abaakouk
virsh start picttn
145 3 Mehdi Abaakouk
virsh console picttn
146 1 Mehdi Abaakouk
</pre>
147 1 Mehdi Abaakouk
148 28 Mehdi Abaakouk
Ensuite on peux se connecte à la VM
149 17 Laurent GUERBY
<pre>
150 17 Laurent GUERBY
ssh root@2a01:6600:8080:FC00::1
151 17 Laurent GUERBY
</pre>
152 17 Laurent GUERBY
153 28 Mehdi Abaakouk
Le /etc/network/interfaces IPv4 après installation
154 21 Laurent GUERBY
155 21 Laurent GUERBY
<pre>
156 21 Laurent GUERBY
iface eth0 inet static
157 21 Laurent GUERBY
    address 91.224.148.xxx
158 1 Mehdi Abaakouk
    netmask 32
159 1 Mehdi Abaakouk
    up ip route add 91.224.148.0/32 dev eth0
160 1 Mehdi Abaakouk
    up ip route add default via 91.224.148.0
161 1 Mehdi Abaakouk
162 1 Mehdi Abaakouk
iface eth0 inet6 static
163 21 Laurent GUERBY
    address 2a01:6600:8080:xx00::1
164 1 Mehdi Abaakouk
    netmask 56
165 21 Laurent GUERBY
    gateway fe80::31
166 21 Laurent GUERBY
    pre-up /sbin/sysctl -w net.ipv6.conf.eth0.accept_ra=0
167 17 Laurent GUERBY
    pre-up /sbin/sysctl -w net.ipv6.conf.eth0.autoconf=0
168 19 Laurent GUERBY
169 19 Laurent GUERBY
</pre>
170 19 Laurent GUERBY
171 19 Laurent GUERBY
h2. Misc
172 19 Laurent GUERBY
173 28 Mehdi Abaakouk
<H4Mm3r> si tu lance la création de la VM sans avoir créé le disk --disk /vmroot/testnat.qcow2,format=qcow2,size=12,bus=virtio,cache=writeback
174 28 Mehdi Abaakouk
<H4Mm3r> le disk se créé mais dans le XML le format est à RAW
175 28 Mehdi Abaakouk
<H4Mm3r> si tu le créé à l'avance avec qemu-img create -f qcow2
176 19 Laurent GUERBY
<H4Mm3r> et que tu lance ta commande --disk /vmroot/testnat.qcow2,format=qcow2
177 28 Mehdi Abaakouk
<guerby> ok donc c'etait bien ça :)
178 19 Laurent GUERBY
<guerby> bbl (miam)
179 28 Mehdi Abaakouk
<H4Mm3r> dans le fichier XML le format est à RAW
180 28 Mehdi Abaakouk
<H4Mm3r> il faut en effet dumper un XML, modifier la valeur à QCOW2
181 28 Mehdi Abaakouk
<H4Mm3r> et créer la VM depuis ce XML
182 19 Laurent GUERBY
<H4Mm3r> virsh create file.xml
183 20 Joris Michaux
<H4Mm3r> pourqu'enfin il comprenne que c'est du QCOW...
184 28 Mehdi Abaakouk
<H4Mm3r> et là mon disk fait bien 265ko, mais est détecté comme 12G :D
185 20 Joris Michaux
186 20 Joris Michaux
h2. HOWTO by H4Mm3r (under contruction)
187 20 Joris Michaux
188 20 Joris Michaux
h3. Usefull links
189 20 Joris Michaux
190 20 Joris Michaux
#### Misc
191 20 Joris Michaux
192 20 Joris Michaux
#OS Type
193 20 Joris Michaux
http://rhevdup.blogspot.fr/2012/05/list-available-os-types-for-kvm-on-rhel.html
194 20 Joris Michaux
195 20 Joris Michaux
#Libvirt TTN
196 20 Joris Michaux
http://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/Libvirt
197 20 Joris Michaux
198 20 Joris Michaux
#### KVM management
199 20 Joris Michaux
200 20 Joris Michaux
#Install QEMU KVM + LIBVIRT
201 20 Joris Michaux
http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server
202 20 Joris Michaux
203 20 Joris Michaux
#Edit XML file
204 20 Joris Michaux
http://vladnevzorov.com/2011/02/11/how-to-change-configuration-of-kvm-virtual-machine/
205 20 Joris Michaux
206 20 Joris Michaux
#Clone a KVM
207 20 Joris Michaux
https://help.ubuntu.com/community/KVM/CreateGuests#Cloning_a_virtual_machine
208 20 Joris Michaux
http://linux.die.net/man/1/virt-clone
209 20 Joris Michaux
210 20 Joris Michaux
#### Network
211 20 Joris Michaux
212 20 Joris Michaux
#NAT
213 20 Joris Michaux
http://www.linuxquestions.org/questions/linux-networking-3/kvm-qemu-and-nat-on-the-host-machine-mini-tutorial-697980/
214 20 Joris Michaux
http://wiki.libvirt.org/page/Networking
215 20 Joris Michaux
http://libvirt.org/formatnetwork.html#examplesNAT
216 20 Joris Michaux
https://help.ubuntu.com/community/KVM/Networking
217 20 Joris Michaux
218 20 Joris Michaux
#Bridge
219 20 Joris Michaux
http://toast.djw.org.uk/qemu.html
220 20 Joris Michaux
http://www.mediaonfire.com/en/tech_tips/QEMUNetworking.html (bridge, nat, arp)
221 20 Joris Michaux
222 20 Joris Michaux
#### Improve performance
223 20 Joris Michaux
http://blog.bodhizazen.net/linux/improve-kvm-performance/
224 20 Joris Michaux
http://www.linux-kvm.org/page/Tuning_KVM
225 20 Joris Michaux
http://www.ezunix.org/index.php?title=Boost_performance_of_KVM_guests
226 20 Joris Michaux
227 20 Joris Michaux
#### Storage
228 20 Joris Michaux
http://doc.opensuse.org/products/draft/SLES/SLES-kvm_sd_draft/cha.libvirt.storage.html
229 20 Joris Michaux
230 20 Joris Michaux
h3. HOWTO
231 20 Joris Michaux
232 20 Joris Michaux
<pre>
233 20 Joris Michaux
[H] = Host
234 20 Joris Michaux
[G] = Guest
235 20 Joris Michaux
[XML] = XML content
236 20 Joris Michaux
"command"
237 20 Joris Michaux
</pre>
238 20 Joris Michaux
239 20 Joris Michaux
#### Diskfile Storage
240 20 Joris Michaux
241 20 Joris Michaux
#Create qcow2 disk
242 20 Joris Michaux
<pre>
243 20 Joris Michaux
[H] "qemu-img create -f qcow2 /path/to/disk.qcow2 $SIZE" (ex: 20G)
244 20 Joris Michaux
[H] "chmod +x /path/to/disk.qcow2"
245 20 Joris Michaux
</pre>
246 20 Joris Michaux
247 20 Joris Michaux
#Convert raw to qcow2
248 20 Joris Michaux
<pre>
249 20 Joris Michaux
[H] "qemu-img convert -O qcow2 disk.img disk.qcow2"
250 20 Joris Michaux
</pre>
251 20 Joris Michaux
252 20 Joris Michaux
#Disable cache to improve performance 
253 20 Joris Michaux
<pre>
254 20 Joris Michaux
[XML] <driver name='qemu' type='qcow2' cache='none'/>
255 20 Joris Michaux
</pre>
256 20 Joris Michaux
257 20 Joris Michaux
#### LVM Storage
258 20 Joris Michaux
259 20 Joris Michaux
<pre>
260 20 Joris Michaux
[H] Create "/etc/libvirt/storage/vmdata.xml" file :
261 20 Joris Michaux
      <pool type="logical">
262 20 Joris Michaux
        <name>my_pool</name>
263 20 Joris Michaux
        <source>
264 20 Joris Michaux
          <device path="/path/to/dev"/>
265 20 Joris Michaux
        </source>
266 20 Joris Michaux
        <target>
267 20 Joris Michaux
          <path>/target/path/path> (LV will be created there)
268 20 Joris Michaux
        </target>
269 20 Joris Michaux
      </pool>
270 20 Joris Michaux
[H] "virsh pool-define /etc/libvirt/storage/my_pool.xml"
271 20 Joris Michaux
[H] "virsh pool-start my_pool"
272 20 Joris Michaux
[H] "virsh pool-autostart my_pool"
273 20 Joris Michaux
[H] "virsh pool-info my_pool"
274 20 Joris Michaux
[H] "virsh vol-create-as my_pool my_logical_volume 12G"
275 20 Joris Michaux
[H] You must create a LV to be able to give it to a KVM "virsh vol-create-as my_pool my_vol 12G --format=lvm2"
276 20 Joris Michaux
</pre>
277 20 Joris Michaux
278 20 Joris Michaux
h3. Create KVM
279 20 Joris Michaux
280 20 Joris Michaux
#Bridged with TAP + LVM
281 20 Joris Michaux
<pre>
282 20 Joris Michaux
[H] "virt-install -d --hvm --vnc --name=my_kvm --vcpus=4 --cpuset=0-4 --ram 2048 --disk vol=my_pool/my_vol,bus=virtio,cache=none --network bridge=my_bridge,model=virtio -c /path/to/distrib.iso --keymap=fr --os-type=linux --noautoconsole"
283 20 Joris Michaux
</pre>
284 20 Joris Michaux
285 20 Joris Michaux
#TAP (if you want to rename the default "vnetX" interface by "tapX"
286 20 Joris Michaux
<pre>
287 20 Joris Michaux
[H] "virsh dumpxml my_guest > my_guest.xml
288 20 Joris Michaux
[H] "virsh undefine my_guest"
289 20 Joris Michaux
[H] Edit the my_guest.xml file to rename VNETX by TAPX
290 20 Joris Michaux
[H] "virsh define my_guest.xml"
291 20 Joris Michaux
[H] "virsh start my_guest"
292 20 Joris Michaux
</pre>
293 20 Joris Michaux
294 20 Joris Michaux
#NATed + LVM
295 20 Joris Michaux
<pre>
296 20 Joris Michaux
[H] "virt-install -d --hvm --vnc --name=my_kvm --vcpus=4 --cpuset=0-4 --ram 2048 --disk vol=my_pool/my_vol,bus=virtio,cache=none --network network=my_network,model=virtio -c /path/to/distrib.iso --keymap=fr --os-type=linux --noautoconsole"
297 20 Joris Michaux
</pre>
298 20 Joris Michaux
299 20 Joris Michaux
#Clone VM
300 20 Joris Michaux
<pre>
301 20 Joris Michaux
[H] Create the LVM dest
302 20 Joris Michaux
[H] Pause the KVM "virsh suspend my_kvm"
303 20 Joris Michaux
[H] virt-clone -o my_orig_kvm -n my_cloned_kvm -f=/path/to/lvm/dev
304 20 Joris Michaux
[G] Go and change the hostname and resolv.conf
305 20 Joris Michaux
</pre>
306 20 Joris Michaux
307 20 Joris Michaux
h3. Command explanation
308 20 Joris Michaux
309 20 Joris Michaux
#Bridged with tap
310 20 Joris Michaux
<pre>
311 20 Joris Michaux
virt-install -d --hvm --vnc --name=testlvm \
312 20 Joris Michaux
    --vcpus=4 --cpuset=0-4 \
313 20 Joris Michaux
    --ram 2048 \ 
314 20 Joris Michaux
    --disk vol=vmdata/testlvm,bus=virtio,cache=none \
315 20 Joris Michaux
    --network bridge=br0,model=virtio \
316 20 Joris Michaux
    -c /data/isos/debian-testing-amd64-netinst.iso \
317 20 Joris Michaux
    --keymap=fr --os-type=linux --os-variant=debiansqueeze --noautoconsole
318 20 Joris Michaux
</pre>
319 20 Joris Michaux
320 20 Joris Michaux
#NATed
321 20 Joris Michaux
<pre>
322 20 Joris Michaux
virt-install -d --hvm --vnc --name=testlvm \
323 20 Joris Michaux
    --vcpus=4 --cpuset=0-4 \
324 20 Joris Michaux
    --ram 2048 \ 
325 20 Joris Michaux
    --disk vol=vmdata/testlvm,bus=virtio,cache=none \
326 20 Joris Michaux
    --network network=frp_network,model=virtio \
327 20 Joris Michaux
    -c /data/isos/debian-testing-amd64-netinst.iso \
328 20 Joris Michaux
    --keymap=fr --os-type=linux --os-variant=debiansqueeze --noautoconsole
329 20 Joris Michaux
</pre>
330 20 Joris Michaux
331 20 Joris Michaux
[OLD QCOW2]
332 20 Joris Michaux
<pre>
333 20 Joris Michaux
[H] "virt-install --connect qemu:///system -n puppetnode1 -r 1024 --vcpus=4 --cpuset=4-7 --disk path=/vmroot/puppetnode1.qcow2 -c /data/isos/debian-6.0.6-amd64-netinst.iso --vnc --keymap=fr --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network network=default --hvm"
334 20 Joris Michaux
[H] "virt-install --connect qemu:///system -n testnat -r 1024 --vcpus=2 --cpuset=2-3 --disk /vmroot/testnat.qcow2,format=qcow2,size=12,bus=virtio,cache=writeback -c /data/isos/debian-6.0.6-amd64-netinst.iso --vnc --keymap=fr --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network bridge=br0 --hvm"
335 20 Joris Michaux
</pre>
336 20 Joris Michaux
337 20 Joris Michaux
#Start a KVM
338 20 Joris Michaux
<pre>
339 20 Joris Michaux
[H] "virsh start my_kvm"
340 20 Joris Michaux
</pre>
341 20 Joris Michaux
342 20 Joris Michaux
#Stop node
343 20 Joris Michaux
<pre>
344 20 Joris Michaux
[H] Soft : "virsh shutdown my_kvm"
345 20 Joris Michaux
[H] Hard : "virsh destroy my_kvm"
346 20 Joris Michaux
</pre>
347 20 Joris Michaux
348 20 Joris Michaux
#Suppr node del
349 20 Joris Michaux
<pre>
350 20 Joris Michaux
[H] "virsh undefine node" (+ remove files)
351 20 Joris Michaux
</pre>
352 20 Joris Michaux
353 20 Joris Michaux
#Rename node
354 20 Joris Michaux
<pre>
355 20 Joris Michaux
[H] "virsh dumpxml my_kvm > foo.xml"
356 20 Joris Michaux
[H] <edit foo.xml, change the name, move storage>
357 20 Joris Michaux
[H] "virsh undefine my_kvm"
358 20 Joris Michaux
[H] "virsh define foo.xml"
359 20 Joris Michaux
</pre>
360 20 Joris Michaux
361 20 Joris Michaux
# Connect to virsh qemu
362 20 Joris Michaux
<pre>
363 20 Joris Michaux
[H] "virsh --connect qemu:///system"
364 20 Joris Michaux
[H] "virsh # help"
365 20 Joris Michaux
</pre>
366 20 Joris Michaux
367 20 Joris Michaux
#Start a network
368 20 Joris Michaux
<pre>
369 20 Joris Michaux
[H] "virsh net-start my_network"
370 20 Joris Michaux
</pre>
371 20 Joris Michaux
372 20 Joris Michaux
#Configure VNC
373 20 Joris Michaux
374 20 Joris Michaux
<pre>
375 20 Joris Michaux
[H] Edit /etc/libvirt/qemu.conf and set vnc_listen = "your.ip.addd"
376 20 Joris Michaux
[H] You need to restart service "/etc/init.d/libvirtd restart"
377 20 Joris Michaux
[H] "ps aux | grep -i kvm" (find vnc display for your KVM)
378 20 Joris Michaux
</pre>
379 20 Joris Michaux
380 20 Joris Michaux
#Connect to a KVM through VNC
381 20 Joris Michaux
382 20 Joris Michaux
<pre>
383 20 Joris Michaux
tightvncviewer -compresslevel 7 -encodings "copyrect tight hextile zlib corre rre raw" x.xxx.xxx.xxx:x
384 20 Joris Michaux
</pre>
385 20 Joris Michaux
386 20 Joris Michaux
#Keyboard FR for KVM
387 20 Joris Michaux
<pre>
388 20 Joris Michaux
[H] "virsh edit my_kvm"
389 20 Joris Michaux
[XML] <graphics type='vnc' port='-1' autoport='yes' keymap='fr'/>
390 20 Joris Michaux
</pre>
391 20 Joris Michaux
392 20 Joris Michaux
#Create your own NAT network
393 20 Joris Michaux
<pre>
394 20 Joris Michaux
[H] Create your_nat.xml file :
395 20 Joris Michaux
[XML] <network>
396 20 Joris Michaux
  <name>frp_network</name>
397 20 Joris Michaux
  <forward mode='nat'/>
398 20 Joris Michaux
  <bridge name='br1' stp='on' delay='0' />
399 20 Joris Michaux
  <ip address='10.16.42.1' netmask='255.255.255.0'>
400 20 Joris Michaux
    <dhcp>
401 20 Joris Michaux
      <range start='10.16.42.2' end='10.16.42.50' />
402 20 Joris Michaux
    </dhcp>
403 20 Joris Michaux
  </ip>
404 20 Joris Michaux
</network>
405 20 Joris Michaux
[H] "virsh net-define your_nat.xml"
406 20 Joris Michaux
[H] "virsh net-start your_nat.xml"
407 20 Joris Michaux
[H] "virsh net-autostart your_nat.xml"
408 20 Joris Michaux
[XML] Network type "interface type = network, source network=your_nat"
409 20 Joris Michaux
</pre>
410 20 Joris Michaux
411 20 Joris Michaux
#IBM advisements to improve performance
412 20 Joris Michaux
<pre>
413 20 Joris Michaux
[H] Use LVM (or other direct access to HDD) for VMs storage (from 45 to 3' to install a VM)
414 20 Joris Michaux
[H] Set the swappiness value to 0 ("echo 0 > /proc/sys/vm/swappiness" && edit "/etc/sysctl.conf" and add "vm.swappiness=0")
415 20 Joris Michaux
[H] Disable zone_reclaim ("echo 0 > /proc/sys/vm/zone_reclaim_mode" && edit "/etc/sysctl.conf" and add "vm.zone_reclaim_mode=0")
416 22 Mehdi Abaakouk
[H] Enable KSM ("echo 1 > /sys/kernel/mm/ksm/run") and set the check time to 200ms ("echo 200 > /sys/kernel/mm/ksm/sleep_millisecs")
417 22 Mehdi Abaakouk
</pre>
418 22 Mehdi Abaakouk
419 22 Mehdi Abaakouk
420 22 Mehdi Abaakouk
421 22 Mehdi Abaakouk
h2. PC velizy
422 22 Mehdi Abaakouk
423 22 Mehdi Abaakouk
424 22 Mehdi Abaakouk
<pre>
425 22 Mehdi Abaakouk
root@tetaneutral1:~# fdisk /dev/sdb
426 22 Mehdi Abaakouk
427 22 Mehdi Abaakouk
Command (m for help): p
428 22 Mehdi Abaakouk
429 22 Mehdi Abaakouk
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
430 22 Mehdi Abaakouk
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
431 22 Mehdi Abaakouk
Units = sectors of 1 * 512 = 512 bytes
432 22 Mehdi Abaakouk
Sector size (logical/physical): 512 bytes / 512 bytes
433 22 Mehdi Abaakouk
I/O size (minimum/optimal): 512 bytes / 512 bytes
434 22 Mehdi Abaakouk
Disk identifier: 0x9bf0c7df
435 22 Mehdi Abaakouk
436 22 Mehdi Abaakouk
   Device Boot      Start         End      Blocks   Id  System
437 22 Mehdi Abaakouk
438 22 Mehdi Abaakouk
Command (m for help): n
439 22 Mehdi Abaakouk
Partition type:
440 22 Mehdi Abaakouk
   p   primary (0 primary, 0 extended, 4 free)
441 22 Mehdi Abaakouk
   e   extended
442 22 Mehdi Abaakouk
Select (default p): p
443 22 Mehdi Abaakouk
Partition number (1-4, default 1): 
444 22 Mehdi Abaakouk
Using default value 1
445 22 Mehdi Abaakouk
First sector (2048-3907029167, default 2048): 
446 22 Mehdi Abaakouk
Using default value 2048
447 22 Mehdi Abaakouk
Last sector, +sectors or +size{K,M,G} (2048-3907029167, default 3907029167): 
448 22 Mehdi Abaakouk
Using default value 3907029167
449 22 Mehdi Abaakouk
450 22 Mehdi Abaakouk
Command (m for help): n
451 22 Mehdi Abaakouk
Partition type:
452 22 Mehdi Abaakouk
   p   primary (1 primary, 0 extended, 3 free)
453 22 Mehdi Abaakouk
   e   extended
454 22 Mehdi Abaakouk
Select (default p): ^C
455 22 Mehdi Abaakouk
root@tetaneutral1:~# fdisk /dev/sdb
456 22 Mehdi Abaakouk
457 22 Mehdi Abaakouk
Command (m for help): n
458 22 Mehdi Abaakouk
Partition type:
459 22 Mehdi Abaakouk
   p   primary (0 primary, 0 extended, 4 free)
460 22 Mehdi Abaakouk
   e   extended
461 22 Mehdi Abaakouk
Select (default p): p
462 22 Mehdi Abaakouk
Partition number (1-4, default 1): 1
463 22 Mehdi Abaakouk
First sector (2048-3907029167, default 2048): 
464 22 Mehdi Abaakouk
Using default value 2048
465 22 Mehdi Abaakouk
Last sector, +sectors or +size{K,M,G} (2048-3907029167, default 3907029167): 
466 22 Mehdi Abaakouk
Using default value 3907029167
467 22 Mehdi Abaakouk
468 22 Mehdi Abaakouk
Command (m for help): p
469 22 Mehdi Abaakouk
470 22 Mehdi Abaakouk
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
471 22 Mehdi Abaakouk
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
472 22 Mehdi Abaakouk
Units = sectors of 1 * 512 = 512 bytes
473 22 Mehdi Abaakouk
Sector size (logical/physical): 512 bytes / 512 bytes
474 22 Mehdi Abaakouk
I/O size (minimum/optimal): 512 bytes / 512 bytes
475 22 Mehdi Abaakouk
Disk identifier: 0x9bf0c7df
476 22 Mehdi Abaakouk
477 22 Mehdi Abaakouk
   Device Boot      Start         End      Blocks   Id  System
478 22 Mehdi Abaakouk
/dev/sdb1            2048  3907029167  1953513560   83  Linux
479 22 Mehdi Abaakouk
480 22 Mehdi Abaakouk
Command (m for help): m
481 22 Mehdi Abaakouk
Command action
482 22 Mehdi Abaakouk
   a   toggle a bootable flag
483 22 Mehdi Abaakouk
   b   edit bsd disklabel
484 22 Mehdi Abaakouk
   c   toggle the dos compatibility flag
485 22 Mehdi Abaakouk
   d   delete a partition
486 22 Mehdi Abaakouk
   l   list known partition types
487 22 Mehdi Abaakouk
   m   print this menu
488 22 Mehdi Abaakouk
   n   add a new partition
489 22 Mehdi Abaakouk
   o   create a new empty DOS partition table
490 22 Mehdi Abaakouk
   p   print the partition table
491 22 Mehdi Abaakouk
   q   quit without saving changes
492 22 Mehdi Abaakouk
   s   create a new empty Sun disklabel
493 22 Mehdi Abaakouk
   t   change a partition's system id
494 22 Mehdi Abaakouk
   u   change display/entry units
495 22 Mehdi Abaakouk
   v   verify the partition table
496 22 Mehdi Abaakouk
   w   write table to disk and exit
497 22 Mehdi Abaakouk
   x   extra functionality (experts only)
498 22 Mehdi Abaakouk
499 22 Mehdi Abaakouk
Command (m for help): t
500 22 Mehdi Abaakouk
Selected partition 1
501 22 Mehdi Abaakouk
Hex code (type L to list codes): L
502 22 Mehdi Abaakouk
503 22 Mehdi Abaakouk
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
504 22 Mehdi Abaakouk
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
505 22 Mehdi Abaakouk
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
506 22 Mehdi Abaakouk
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
507 22 Mehdi Abaakouk
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
508 22 Mehdi Abaakouk
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
509 22 Mehdi Abaakouk
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
510 22 Mehdi Abaakouk
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
511 22 Mehdi Abaakouk
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
512 22 Mehdi Abaakouk
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
513 22 Mehdi Abaakouk
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
514 22 Mehdi Abaakouk
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
515 22 Mehdi Abaakouk
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
516 22 Mehdi Abaakouk
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
517 22 Mehdi Abaakouk
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
518 22 Mehdi Abaakouk
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
519 22 Mehdi Abaakouk
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
520 22 Mehdi Abaakouk
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
521 22 Mehdi Abaakouk
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
522 22 Mehdi Abaakouk
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
523 22 Mehdi Abaakouk
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
524 22 Mehdi Abaakouk
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
525 22 Mehdi Abaakouk
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
526 22 Mehdi Abaakouk
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
527 22 Mehdi Abaakouk
1e  Hidden W95 FAT1 80  Old Minix      
528 22 Mehdi Abaakouk
Hex code (type L to list codes): 8e
529 22 Mehdi Abaakouk
Changed system type of partition 1 to 8e (Linux LVM)
530 22 Mehdi Abaakouk
531 22 Mehdi Abaakouk
Command (m for help): w
532 22 Mehdi Abaakouk
The partition table has been altered!
533 22 Mehdi Abaakouk
534 22 Mehdi Abaakouk
Calling ioctl() to re-read partition table.
535 22 Mehdi Abaakouk
Syncing disks.
536 22 Mehdi Abaakouk
</pre>
537 1 Mehdi Abaakouk
<pre>
538 23 Mehdi Abaakouk
pvcreate /dev/sdb1
539 24 Mehdi Abaakouk
vgcreate vm-velizy /dev/sdb1
540 1 Mehdi Abaakouk
lvcreate -n velizy-vm1 -L 50G vm-velizy
541 25 Mehdi Abaakouk
apt-get install virtinst
542 1 Mehdi Abaakouk
543 25 Mehdi Abaakouk
544 27 Mehdi Abaakouk
/root/preseed.cfg @ http://git.tetaneutral.net/libvirt.git/
545 27 Mehdi Abaakouk
546 1 Mehdi Abaakouk
replace the late-command line at the end of the file by:
547 27 Mehdi Abaakouk
d-i preseed/late_command string cp -f /postinstall-velizy.sh /target/; in-target bash /postinstall-velizy.sh
548 25 Mehdi Abaakouk
549 25 Mehdi Abaakouk
550 25 Mehdi Abaakouk
vmname=velizy-vm1
551 25 Mehdi Abaakouk
ip=192.166.143.24
552 25 Mehdi Abaakouk
553 25 Mehdi Abaakouk
virt-install -n $vmname -r 2048 --os-type=linux \
554 25 Mehdi Abaakouk
    --debug \
555 25 Mehdi Abaakouk
    --autostart \
556 25 Mehdi Abaakouk
    --disk /dev/vm-velizy/$vmname,bus=virtio,cache=none,io=native \
557 25 Mehdi Abaakouk
    --network bridge=br0,model=virtio \
558 25 Mehdi Abaakouk
    --nographics \
559 25 Mehdi Abaakouk
    --noreboot \
560 25 Mehdi Abaakouk
    --wait -1 \
561 1 Mehdi Abaakouk
    --location http://ftp.debian.org/debian/dists/wheezy/main/installer-amd64/ \
562 27 Mehdi Abaakouk
    --serial pty \
563 25 Mehdi Abaakouk
    --initrd-inject /root/preseed.cfg \
564 1 Mehdi Abaakouk
    --initrd-inject /root/postinstall-velizy.sh \
565 27 Mehdi Abaakouk
    --extra-args "console=ttyS0,9600n8 DEBIAN_FRONTEND=text auto priority=critical hostname=$vmname domain=tetaneutral.net netcfg/get_ipaddress=$ip netcfg/get_netmask=255.255.252.0 netcfg/get_gateway=192.166.143.254 netcfg/get_nameservers=192.166.143.23 netcfg/disable_dhcp=true" 
566 27 Mehdi Abaakouk
567 27 Mehdi Abaakouk
</pre>
568 27 Mehdi Abaakouk
569 27 Mehdi Abaakouk
570 27 Mehdi Abaakouk
postinstall-velizy.sh
571 27 Mehdi Abaakouk
<pre>
572 27 Mehdi Abaakouk
#!/bin/bash
573 27 Mehdi Abaakouk
sed -i -e 's/^.*Port.*$/Port 2222/' -e 's/^[# ]*PasswordAuthentication.*$/PasswordAuthenticati
574 27 Mehdi Abaakouk
on no/' /etc/ssh/sshd_config
575 27 Mehdi Abaakouk
576 27 Mehdi Abaakouk
mkdir -p /root/.ssh
577 27 Mehdi Abaakouk
cat > /root/.ssh/authorized_keys  <<EOF
578 27 Mehdi Abaakouk
ssh-dss AAAAB3NzaC1kc3MAAACBAJtnGLvuz4uVD6fnERDxDi/C0UyzwCiKmgNtEessopREYasAX4Gu6Fg10jAyIL5Nuc
579 27 Mehdi Abaakouk
7YDnqj//pOfxNjD7hp99a2ZmkRQgh/ltClxYML9fqhBHgsUCpVse9nOYDHDnDgvXIPRSDUHat2UFpdchHVrFURNLIlZnBz
580 27 Mehdi Abaakouk
tsr+GCDURTV/AAAAFQD9SrBcH49ltaKOm6V5ssCPmgs1SwAAAIAbAvkQ3/tMzzdACO5B9s5Yb3ZuM7XImm0iqufivVf2Xy
581 27 Mehdi Abaakouk
39g8HOBulUsN7eKEGPhVriqNolgIO7q7tVgYAff4/NE4yDP0Kp0SPg4tjt2yFJuL31Y3wzwHjnKrjgNlDSLl3uZnRXSipw
582 27 Mehdi Abaakouk
UMwGKbdHB6NZSqlq192VKbHilQ00pbiMlAAAAIB5dfB1lVHkJ0o5CcaVQRPbca9DvbbRwnoTSmKHc5DUcqsPqDhS07CkM9
583 27 Mehdi Abaakouk
ZcJuY1Nh4wGl4Q9kArj7Tnsvvygf/HReSUcIk4+nbDytJ8/pca/Qx4fzQQyppa94TylN62LSFT6MIJKLoMwYa0dQURT7Mv
584 27 Mehdi Abaakouk
5+9Qj2vk5pZ38w2iQ9zVCg== root@h1
585 27 Mehdi Abaakouk
EOF
586 25 Mehdi Abaakouk
587 25 Mehdi Abaakouk
passwd -d root
588 1 Mehdi Abaakouk
</pre>
589 24 Mehdi Abaakouk
590 24 Mehdi Abaakouk
591 1 Mehdi Abaakouk
apt-get install debconf-utils
592 1 Mehdi Abaakouk
debconf-get-selections > preseed.cfg # marche pas