Skapa virtuell maskin i KVM från befintlig image

Skapa image.xml enligt nedan, importera sedan med virsh define image.xml

<domain type='kvm'>
  <name>minMaskin</name>
  <uuid>be0bd60a-425e-e849-538a-0c5f0cb927a8</uuid>
  <memory>2048000</memory>
  <currentMemory>2048000</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.11'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/image.img'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='cdrom'>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
    <interface type='bridge'>
      <mac address='52:54:00:13:ba:ee'/>
      <source bridge='br0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target port='0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='sv'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
</domain>

OBS: glöm inte ändra driver type till ‘qcow2′ om imagen är av den typen! En virtuell maskin som importerats till virt-manager kan få fel image-typ om imagen är en qcow2, definiera då om den i virsh:

virsh dumpxml minMaskin > minMaskin.xml
virsh undefine minMaskin

Ändra driver type i xml-filen och importera igen:
virsh define minMaskin.xml

Om nätverket inte kommer upp, logga in via vnc (se virsh vncdisplay minMaskin för portnummer; lägg till numret till 5900) och ta bort befintliga poster ur /etc/udev/rules.d/70-persistent-net.rules

Apache2: reverse proxy

Scenario:

Ett par vhosts (example.com och otherexample.com) ligger på en intern utvecklingsserver på lilla kontoret. Vi behöver tillfälligt låta en klient komma åt dem utifrån, men kan av olika anledningar inte lägga dem på den publikt åtkomliga webbservern just nu.

Snabb lösning:

Reverse proxy från webbservern, som ligger i samma subnät. På externa webbservern (192.168.1.65 är lokalt ip för den interna utvecklingsservern):

<VirtualHost *:80>
# /etc/apache2/sites-available/proxied-vhosts
ServerName www.example.com
ServerAlias example.com www.otherexample.com otherexample.com

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://192.168.1.65/
ProxyPassReverse / http://192.168.1.65/

<Location *>
Order allow,deny
Allow from all
</Location>
</VirtualHost>

På klientens dator, lägg till i hosts-filen (Ubuntu: /etc/hosts):

123.123.123.123 example.com www.example.com otherexample.com www.otherexample.com

…där 123.123.123.123 är vårt publika ip till webbservern.

Återställa mysql från filer

Att återställa mysql-databaser från databas- och tabellfilerna, när riktig backup saknas.

  1. Rädda databas- och tabellfilerna på lämpligt vis, t ex från en monterad image
    sudo /etc/init.d/mysql stop
    sudo cp -rp /mnt/image/var/lib/mysql/databasnamn /var/lib/mysql/
    sudo chown -R mysql:mysql /var/lib/mysql/databasnamn
    sudo /etc/init.d/mysql start
  2. Reparera ev trasiga tabeller
    mysql -uroot -p
    use databasnamn;
    check table tabellnamn;
    repair table tabellnamn;
  3. Spara databasen som SQL
    mysqldump -uroot -p –database databasnamn > databasnamn.sql

Montera qcow2-images

Efter det lyckade räddningsförsöket kom ytterligare ett par image-filer. En av dem var i qcow2-format, som inte kan monteras direkt i Ubuntu. Först måste vi skapa ett enhetsnamn via ett nätverksprotokoll, NBD:

sudo modprobe nbd max_part=8
sudo qemu-nbd -c /dev/nbd0 image.qcow2
sudo partprobe /dev/nbd0

Sedan är det bara att gå vidare med att montera partitionerna som vanligt, antingen direkt (mount /dev/nbd0p1 /mnt/image) eller med LVM.

Avmontera som vanligt, kör sedan sudo qemu-nbd -d /dev/nbd0 för att ta bort kopplingen till enhetsnamnet.

Referenser:

Montera kvm-diskar

En datorkrasch fick till följd att vi fick ett gäng diskimages skickade till oss, med uppdrag att rädda vad som räddas kunde. Lyckligtvis var filsystemet oförstört, så allt gick lättare än förväntat. För att slippa söktiden på google nästa gång (allt är skrivet ur ett Ubuntu-perspektiv):

Montera raw images med standardpartitioner:
sudo losetup /dev/loop0 image.img
# Ev: Visa partitioner
# sudo kpartx -l /dev/loop0
sudo kpartx -a /dev/loop0
sudo mount /dev/mapper/loop0p1 /mnt/image -o loop,ro

Montera raw images med LVM-partitioner:
sudo apt-get install lvm2
sudo modprobe dm-mod
sudo losetup /dev/loop0 image.img
# Ev: Visa partitioner
# sudo kpartx -l /dev/loop0
sudo kpartx -a /dev/loop0
sudo vgscan
# Notera LVM-gruppens namn från vgscan, i exemplet “Grupp0″
sudo vghange -ay Grupp0
sudo lvdisplay
# Notera partitionsnamn, i exemplet “root”
sudo mount /dev/Grupp0/root /mnt/root -o ro

Därefter var det bara att kopiera önskade filer från /mnt/root:
sudo cp -r /mnt/root/home/user/filnamn /home/wt/SAVED/

Avmontera:
sudo umount /mnt/image
# Om LVM:
# sudo vgchange -an Grupp0
sudo kpartx -d /dev/loop0
sudo losetup -d /dev/loop0

Referenser:

Follow

Get every new post delivered to your Inbox.