Κατά την εγκατάσταση μεγάλη προσοχή στην επιλογή hostname, καθώς η αλλαγή του μετά είναι δύσκολη. Επιλέξτε ένα όνομα π.χ. της μορφής hosta.company.local
Αλλάζουμε το /etc/apt/sources.list
deb http://ftp.gr.debian.org/debian jessie main contrib non-free # security updates deb http://security.debian.org jessie/updates main contrib non-free
Θα εγκαταστήσουμε έναν πιο πρόσφατο πυρήνα. Εκτελούμε.
apt-get update apt-get install linux-image-amd64
Προαιρετικά εγκαθιστούμε και firmware αν χρειάζεται το υλικό μας
apt-get install firmware-linux firmware-linux-nonfree
Εάν έχουμε κάρτες δικτύου realtek και δεν λειτουργούν σωστά δοκιμάζουμε να εγκαταστήσουμε
apt-get install firmware-realtek
και επανεκκινούμε
Βάζουμε σε σχόλια στο /etc/apt/sources.list.d/pve-enterprise.list το subscription repository του proxmox και εισάγουμε αν θέλουμε το test repository
#deb https://enterprise.proxmox.com/debian wheezy pve-enterprise # PVE pvetest repository provided by proxmox.com deb http://download.proxmox.com/debian wheezy pvetest
Μπορούμε να εγκαταστήσουμε τον πυρήνα 3.10 που δίνει καλύτερες επιδόσεις στις εικονικές μηχανές και καλύτερη υποστήριξη στο υλικό αλλά δεν έχει ακόμα υποστήριξη στο openvz.
apt-get update apt-get install pve-kernel-3.10.0-5-pve
mkdir /mnt/usbstorage
Βρίσκουμε το UUID του δίσκου με την εντολή
blkid
Ορίζουμε στο /etc/fstab την προσάρτηση του δίσκου. Π.χ.
UUID=6bc62200-b7c4-4610-bd56-84f2c41715a3 /mnt/usbstorage ext4 defaults,nofail 0 2
Τέλος εκτελούμε
mount -a
και ελέγχουμε με df εάν έχει προσαρτηθεί ο εξωτερικός δίσκος
Συνδεόμαστε στο proxmox και στο Storage View αριστερά επιλέγουμε Datacenter, την καρτέλα Storage και πατάμε Add
Εάν θέλουμε να δούμε την σειριακή θύρα του ΗΥ μέσα από την εικονική μηχανή εκτελούμε
qm set 100 -serial0 /dev/ttyS0
Προσοχή! Δεν θα έχουμε την δυνατότητα migration καθώς είναι σύνδεση με τοπική συσκευή
Εάν η εικονική μας μηχανή ήταν σε virtualbox θα πρέπει να μετατρέψουμε πρώτα το αρχείο vdi σε qcow2 με την παρακάτω εντολή
qemu-img convert -f vdi -O qcow2 vm.vdi vm.qcow2
Η εικονική μας μηχανή δημιουργήθηκε με ένα ID π.χ. 100. Θα αντιγράψουμε τώρα υπάρχον αρχείο qcow2 πάνω στο αρχείο qcow2 της εικονικής μηχανής. Π.χ.
cp vm.qcow2 /mnt/usbstorage/proxmox/images/100/vm-100-disk-1.qcow2
Θα πρέπει οπωσδήποτε να ορίσουμε στις κάρτες δικτύου τις ίδιες mac address που είχε η εικονική μηχανή.
Τέλος εκκινούμε την εικονική μηχανή και συνδεόμαστε με console/no-vnc για να δούμε εάν ξεκινήσει
βλ. Spice - Windows
Εάν θέλουμε να αλλάξουμε από SATA σε virtio τον δίσκο κάνουμε τα εξής
Εάν στην εκκίνηση δούμε μπλε οθόνη με κωδικό 0x0000007B θα πρέπει να διορθώσουμε πρόβλημα με τον controller του δίσκου.
Για gigabit σύνδεση ακολουθούμε τις παρακάτω οδηγίες για spice και paravirtualized drivers.
Εάν υπάρξει πρόβλημα με τον default gpu driver της cirrus, π.χ. να κολλάνε τα γραφικά στο login screen μετά από λίγο αλλάζουμε σε standard vga.
Είναι καλό να εγκαταστήσουμε τους spice drivers από την Redhat για paravirtualized συσκευές. Αυτό θα μας δώσει την δυνατότητα να χρησιμοποιήσουμε μεταξύ άλλων spice vga driver και σύνδεση spice από proxmox, network virtio για gigabit συνδέσεις κτλ.
apt-get install virt-viewer spice-client-gtk browser-plugin-spice
Ανοίγουμε το proxmox στο τοπικό δίκτυο μέσω firefox και επιλέγουμε spice αντί για console και άνοιγμα με /usr/bin/remote-viewer
Το italc δουλεύει καλά μέσω spice αρκεί η οθόνη που θα το εκκινήσουμε να είναι ίση ή μικρότερη από την μικρότερη οθόνη των clients. Πρώτα κάνουμε full screen και μετά συνδεόμαστε και εκτελούμε το italc.
Για να ακούσουμε τον ήχο μέσα από την vm χρειαζόμαστε μια εικονική κάρτα ήχου και την χρήση spice
args: -device 'ich9-intel-hda,id=audiodev0,bus=pci.2,addr=0xc' -device 'hda-micro,id=audiodev0-codec0,bus=audiodev0.0,cad=0' -device 'hda-duplex,id=audiodev0-codec1,bus=audiodev0.0,cad=1'
Εάν φαίνεται ότι παίζει αλλά δεν ακούγεται τοπικά, εκτελούμε στον ΗΥ μας pulsemixer και επιβεβαιώνουμε ότι είναι ανοιχτός ο ήχος στο remote viewer (mute/unmute με το πλήκτρο m)
Σε ubuntu 18 ltsp client image στην εναλλαγή CTRL-ALT-F6 κρασάρει το client vm! Για να δοκιμάσουμε κάνουμε ένα αντίγραφο της εντολής 6 να εκτελείται στην κονσόλα 8 ώστε να γίνει αυτή που θα εμφανιστεί από την αρχή και να μην χρειαστούμε εναλλαγή.
Η θύρα 3128 που ακούει ο spice proxy ίσως δεν είναι δυνατό να γίνει προώθηση. Για να την αλλάξουμε την τροποποιούμε τα παρακάτω αρχεία.
/usr/share/perl5/PVE/Service/spiceproxy.pm: my $socket = $self->create_reusable_socket(3128, undef, $family); /usr/share/perl5/PVE/API2Tools.pm: my $port = $uri->port || 3128; /usr/share/perl5/PVE/APIServer/AnyEvent.pm: my $remport = $remip ? 3128 : $spiceport; /usr/share/perl5/PVE/AccessControl.pm: proxy => "http://$proxy:3128", /usr/share/perl5/AnyEvent/HTTP.pm: $PROXY = [$2, $3 || 3128, $1]
O ltsp client θα πρέπει να εκτελείται σε 24bit graphics, οπότε στο lts.conf, ορίζουμε X_COLOR_DEPTH=24
Τροποποιούμε το αρχείο /etc/hosts στον 1ο κόμβο εισάγοντας τις ip διευθύνσεις όλων των κόμβων π.χ.
192.168.100.10 node1.mycompany.local node1 pvelocalhost 192.168.100.20 node2.mycompany.local node2
και αντίστοιχα στον 2ο κόμβο
192.168.100.20 node2.mycompany.local node2 pvelocalhost 192.168.100.10 node1.mycompany.local node1
Στον 1ο κόμβο εκτελούμε
pvecm create myclustername
Ελέγχουμε με
pvecm status
και
pvecm nodes
Στον 2ο κόμβο εκτελούμε
pvecm add node1
Ελέγχουμε με
pvecm status
και
pvecm nodes
Προσοχή! Εάν θέλουμε να προσθέσουμε και 3ο κόμβο ή να κάνουμε ρυθμίσεις που αφορούν το cluster (όπως προσθήκη backup schedule) θα πρέπει και οι 2 υπάρχοντες κόμβοι να είναι ανοιχτοί. Αλλιώς με προσοχή εκτελούμε
pvecm expected 1
Θα πρέπει όμως να ξεκινήσουμε κάποια στιγμή και τον 2ο να συγχρονιστεί πριν κάνουμε αλλαγές σε αυτόν.
Επίσης βασικές αλλαγές όπως τροποποίηση εικονικών μηχανών, αλλά ακόμα και εκτέλεση προγραμματισμένων backup δεν θα γίνονται εάν είναι ανοικτός μόνο ο ένας. Εάν είναι ανοικτός μόνιμα μόνο ο ένας κόμβος ας πούμε ο βασικός και ο 2ος είναι μόνο για ώρα ανάγκης (κάτι έξω από την λογική του clustering) τότε μπορούμε να κάνουμε τα εξής στον βασικό κόμβο. Προσθέτουμε στο /etc/rc.local
pvecm expected 1
Επίσης δημιουργούμε το αρχείο /etc/cron.hourly/expected με περιεχόμενο
#!/bin/bash pvecm expected 1
το ορίζουμε ως εκτελέσιμο και επανεκκινούμε το cron
chmod +x /etc/cron.hourly/expected service cron restart
Η παρακάτω διαδικασία δεν είναι η ενδεδειγμένη καθώς το proxmox στήνεται κανονικά με HA ρυθμίσεις και με ανάλογο hardware για fencing.
Εάν θέλουμε μια απλή κατάσταση στην οποία εάν ο ένας από τους 2 hosts παρουσιάσει απότομο πρόβλημα (π.χ. χαλάσει μητρική) να μπορούμε χειροκίνητα σε λίγα λεπτά να ξεκινήσουμε την εικονική μηχανή στον άλλο host κάνουμε τα εξής.
scp /etc/pve/nodes/hosta/qemu-server/100.conf hostb:/etc/pve/nodes/hostb/qemu-server/110.conf service pve-cluster restart
Όταν δημιουργηθεί το cluster σε περίπτωση που ο ένας host είναι εκτός δεν έχουμε δικαιώματα εγγραφής στις ρυθμίσεις για λόγους ασφαλείας ώστε να μην δημιουργηθεί ασυμβατότητα.
Μπορούμε να παρακάμψουμε την ασφάλεια αυτή και να κάνουμε αλλαγές στον έναν από τους δύο host. Θα πρέπει να όμως να προσέχουμε όταν εκκινηθούν και οι 2 να ξεκινήσει πρώτος αυτός στον οποίο κάναμε τις αλλαγές.
Με την παρακάτω εντολή ορίζουμε τα expected votes σε 1 μέχρι την επανεκκίνηση
pvecm expected 1
Η χρήση Δυναμικά Καταχωρούμενης Μνήμης σε εικονική μηχανή Linux δεν συστήνεται καθώς ρίχνει αρκετά (ίσως και 50%) την ταχύτητα.
Το ΛΣ Linux χρησιμοποιεί όλη την μνήμη που του παρέχεται και ο έλεγχος για απελευθέρωση μη αναγκαίας μνήμης έχει αρνητική επίδραση.
Σε εικονική μηχανή Windows έχει μεγαλύτερο νόημα αρκεί να εγκατασταθούν οι drivers και για την υπηρεσία
Δοκιμή backup εικονικής μηχανής με δίσκο 30GB, 8GB ως qcow2, διάβασμα από ssd, εγγραφή σε nfs μέσω gigabit
συμπίεση | χρόνος | ταχύτητα | μέγεθος |
---|---|---|---|
lzo | 236s | 181 MB/s | 4.2 GB |
gzip | 840s | 51 MB/s | 3.2.GB |
Πιθανόν χρησιμοποιείται πιο γρήγορη συμπίεση και στα 2 formats (βλ. συγκριση Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO)
Με wrapper script μπορεί να χρησιμοποιηθεί και το pigz που εκτελείται παράλληλα
Πολλές φορές δημιουργώντας μια εικονική μηχανή είμαστε αρκετά γενναιόδωροι στο μέγεθος, δεδομένου ότι ο δίσκος μεγαλώνει δυναμικά. Όμως μετά από αρκετό καιρό π.χ. ένα χρόνο εάν γίνονται συνεχώς εγγραφές και διαγραφές στον δίσκο, ο δυναμικός δίσκος qcow2 είναι πλέον πάνω από 80% σε σχέση με το στατικό μέγεθος ακόμα και αν έχει μέσα του δεδομένα στο 40%
Αυτό δημιουργεί επιπλέον τεράστια backup καθώς αυτά συσχετίζονται με το αρχείο qcow2 κυρίως και λιγότερο με τα δεδομένα μέσα του
Σε linux μπορεί να γίνει ακόμα και online αλλά καλύτερα να τερματίσουμε πρώτα την εικονική μηχανή, Εκτελούμε π.χ.
qm resize 100 virtio5 +12G
Για ext4 online κάνουμε πρώτα τα εξής
disk=/dev/vdf part=$disk""1 umount $part parted $disk parted> print parted> resizepart 1 100% parted> quit umount $part # just in case fdisk -l $disk | grep ^/dev umount $part # it was remounted here! e2fsck -f $part #or for s2 reiserfsck -f $part umount $part # just in case resize2fs $part mount $part
Αρχικά θα πάρουμε οπωσδήποτε ένα backup της εικονικής μηχανής, αφού την τερματίσουμε, διότι η παρακάτω διαδικασία είναι πάντα επίφοβη.
Αν έχουμε lvm partitions τότε η διαδικασία είναι εντελώς διαφορετική (βλ. lvm - migration to smaller disk. (καλή τύχη!)
Έστω ότι έχουμε πολλούς δίσκους στην εγκατάστασή μας. Αρχικά θέλουμε να μειώσουμε το μέγεθος σε έναν από αυτούς έστω /mnt/data.
umount /mnt/data
. Λογικά θα αποτύχει
lsof /mnt/data
για να δούμε τις υπηρεσίες που το χρησιμοποιούν. Τις τερματίζουμε και δοκιμάζουμε να κάνουμε πάλι unmount.
dd if=/dev/zero of=/mnt/data/tmpfile
rm /mnt/data/tmpfile
και τερματίζουμε την εικονική μηχανή.
Δοκιμάστηκε σε Windows XP, 7, 10
cd /mnt/pve/nas/images/100/ disk=vm-100-disk-2 mv $disk.qcow2 $disk.qcow2.bak qemu-img convert -p -O raw $disk.qcow2.bak $disk.raw
decrease="-18G" qemu-img resize -f raw $disk.raw --shrink $decrease
qemu-img convert -p -O qcow2 $disk.raw $disk.qcow2
qemu-img info $disk.qcow2
και τροποποιούμε το αρχείο /etc/pve/qemu-server/100.conf ώστε να έχει το σωστό μέγεθος.
rm $disk.raw $disk.qcow2.bak
Βλ. και εδώ εδώ
Συνδεόμαστε
qm monitor 803
Εκτελούμε
qm>drive_add 0 if=none,id=usbdisk1,file=/mnt/pve/nas3251tb/images/804/vm-804-disk-0.qcow2,snapshot=on qm>device_add usb-storage,id=usbdisk1,drive=usbdisk1,removable=on
Έάν κάνουμε unmount τον δίσκο μέσα από την vm για να ξαναγίνει mount εκτελούμε
qm>device_del usbdisk1
και πάλι
qm>drive_add 0 if=none,id=usbdisk1,file=/mnt/pve/nas3251tb/images/804/vm-804-disk-0.qcow2,snapshot=on qm>device_add usb-storage,id=usbdisk1,drive=usbdisk1,removable=on
Για την αφαίρεση του μηνύματος συνδρομής κατά την σύνδεση : http://www.jamescoyle.net/how-to/614-remove-the-proxmox-no-subscription-message
Εάν για κάποιο λόγο κάποια κάρτα δικτύου στον proxmox χρειαστεί να απενεργοποιηθεί και να ενεργοποιηθεί πάλι π·χ. με
ifdown vmbr3 ifupvmbr3
όλες οι vms που την χρησιμοποιούν θα χάσουν την σύνδεση.
Με την παρακάτω εντολή βλέπουμε τις υπάρχοντες bridge συνδέσεις από τις vms
brctl show
Για να επανασυνδέσουμε τις tap συνδέσεις που χαθήκαν εκτελούμε
iface=vmbr3; grep -FH bridge= /etc/pve/nodes/*/qemu-server/*.conf | perl -nle 'print "tap$1i$2 master $3" if /\/(\d+).conf:net(\d+):.*?bridge=(vmbr\d+)/' | grep $iface | xargs -l1 echo ip link set
Εάν δούμε σωστές εντολές π.χ.
ip link set tap101i2 master vmbr3
τις εκτελούμε βγάζωντας το echo και επιβεβαιώνουμε με
brctl show
Εάν έχουμε κάποιο πρόβλημα με το cluster και θέλουμε να το φτιάξουμε από την αρχή ακολουθούμε τα παρακάτω βήματα για την διαγραφή του.
Τερματίζουμε όλους τους κόμβους εκτός από έναν και συνδεόμαστε σε αυτόν.
Εκτελούμε
cp -a /etc/pve /root/pve_backup service pve-cluster stop umount /etc/pve service cman stop rm /etc/cluster/cluster.conf rm -rf /var/lib/pve-cluster/*
και τερματίζουμε
shutdown -h 0
Εκκινούμε τον 2ο κόμβο (ο 1ος παραμένει κλειστός), εκτελούμε τις ίδιες εντολές και τερματίζουμε.
Δημιουργούμε από την αρχή το cluster.
Επαναφέρουμε τις ρυθμίσεις για τις εικονικές μηχανές στον 1ο κόμβο από το backup : /root/pve_backup
cp /root/pve_backup/storage.cfg /etc/pve/ cp /root/pve_backup/qemu-server/*.conf /etc/pve/qemu-server/ cp /root/pve_backup/openvz/* /etc/pve/openvz/
Εάν οι εικονικές μηχανές εκτελούνται αλλά από το web interface φαίνονται να είναι offline δοκιμάζουμε επανεκκίνηση τον pvestatd
service pvestatd restart
Εάν το vnc console δεν αποκρίνεται μπορούμε να δοκιμάσουμε να στείλουμε από το Monitor του web interface συνδυασμούς πλήκτρων. Π.χ. sendkey alt-sysrq-s
.. (βλ.Συνδυασμοί πλήκτρων) ή sendkey alt-f3
κτλ
Εάν δεν έχουμε πρόσβαση στο γραφικό τότε από την κονσόλα του host βρίσκουμε το id της εικονικής μηχανής με
qm list
Π.χ. βρήκαμε ότι είναι το 110. Στέλνουμε τον συνδυασμό πλήκτρων με
qm sendkey 110 alt-sysrq-s
Ή εάν μετά από μη ομαλό τερματισμό έχει ξεκινήσει quota check για να μην περιμένουμε βλ.διακοπή quota check σε εκκίνηση
Πρόβλημα με τον firefox >51 και proxmox webgui (βλ. bug https://bugzilla.proxmox.com/show_bug.cgi?id=1223)
Ως προσωρινή λύση (βλ. post #7 https://forum.proxmox.com/threads/gui-issues-with-firefox-after-upgrade.32621/) ορίζουμε dom.w3c_touch_events.enabled σε 0 (από default 2)