Co je OpenVZ?
OpenVZ je softwarový nástroj pro virtualizaci OS, který umožňuje nasazení, správu a úpravy izolovaných virtuálních prostředí Linuxu z hostitelské distribuce Linuxu. Rozsáhlá řada předpřipravených šablon OS v různých distribucích Linuxu umožňuje uživatelům snadno rychle stahovat a nasazovat virtuální prostředí.
Než začnete
-
Práce s tímto výukovým programem vyžaduje účet uživatele root a je zapsána tak, jako by byly příkazy zadávány jako uživatel root. Čtenáři, kteří se rozhodnou používat omezený uživatelský účet, budou muset před příkazy zadat
sudo
kde je to požadováno. Pokud jste si ještě nevytvořili omezený uživatelský účet, postupujte podle kroků v příručce Nastavení a zabezpečení výpočetní instance. -
Pokyny v této příručce byly napsány a testovány pouze pro Debian 9. Je nepravděpodobné, že budou fungovat pro jiné distribuce Debian nebo Ubuntu.
-
Ke spuštění OpenVZ jsou vyžadovány určité zásadní úpravy vašeho systému Debian 9, včetně odstranění a nahrazení Systemd SystemV a použití vlastního linuxového jádra. Než budete pokračovat, ujistěte se, že veškerý software aktuálně nainstalovaný v počítači bude kompatibilní s těmito změnami.
Poznámka Ačkoli to není nutné, doporučuje se vytvořit samostatný oddíl souborového systému Ext4 pro šablony OpenVZ. Instalační program Debianu 9 i Linode Manager standardně formátují nově vytvořené oddíly pomocí Ext4. Chcete-li získat informace o tom, jak provést tuto konfiguraci, postupujte podle kroků k vytvoření disku v příručce Správa disků a úložiště na Linode.
Volitelné:Vytvořte samostatný oddíl pro šablony OpenVZ
Pokud máte v úmyslu věnovat celý Linode VPS provozování OpenVZ a žádné další služby, doporučuje se vytvořit samostatné oddíly pro hostitelský server a jeho procesy a jakékoli šablony virtuálního serveru OpenVZ. Následující tabulka ilustruje doporučené schéma rozdělení:
Oddíl | Popis | Typická velikost |
---|---|---|
/ | Kořenový oddíl | 4–12 GB |
swap | Oddíl stránkování | 2 krát RAM nebo RAM + 2 GB (v závislosti na dostupném místě na pevném disku) |
/vz | Oddíl pro hostování šablon OpenVZ | Veškerý zbývající prostor na pevném disku |
-
Přihlaste se do svého Linode Manager a vyberte svůj Linode. Vypněte počítač a ověřte dokončení úlohy zobrazením Fronty hostitelských úloh sekce. V části Disky klikněte na Vytvořit nový disk . Přidejte štítek dle vlastního výběru, v Typ vyberte „ext4“. rozbalovací nabídce a v části Velikost přidělte co nejvíce místa pole. Klikněte na Uložit změny; optimální konfigurace bude připomínat obrázek níže.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Pod Hlavním panelem klepněte na svůj hlavní konfigurační profil. V části Blokovat přiřazení zařízení přiřaďte svůj nový oddíl k otevřenému zařízení. Klikněte na Uložit změny až skončí.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Spusťte Linode a přihlaste se přes SSH. Vydáním příkazu níže ověřte, zda byl nový disk vytvořen správně. Výstup zobrazí váš nově vytvořený disk.
fdisk -l
-
Vytvořte přípojný bod pro nové zařízení:
mkdir /vztemp
-
Namontujte nový disk. Nezapomeňte nahradit /dev/sdc s názvem vašeho zařízení:
mount /dev/sdc /vztemp
Odebrání funkce Metadata_csum ze svazků Ext4
Před instalací OpenVZ musí být systém nakonfigurován na kompatibilitu. Debian 9 podporuje novou funkci kontrolního součtu, která není kompatibilní s vlastními jádry OpenVZ. V závislosti na vašich preferencích se můžete rozhodnout buď odstranit metadata_csum z připojeného oddílu, nebo přeformátovat postižený oddíl na kompatibilní svazek Ext4. Vyberte si kteroukoli metodu a postupujte podle pokynů v příslušné části níže.
-
Seznam dostupných diskových oddílů.
lsblk
-
Zkontrolujte, zda je „metadata_csum“ nainstalováno v jakémkoli připojeném diskovém oddílu zobrazeném v kroku 1 (nezahrnuje oddíl SWAP). Postupujte podle níže uvedeného formátu pro každý oddíl a nahraďte
/dev/sda1
s příslušným názvem svazku. Pokud níže uvedený příkaz neposkytuje žádný výstup pro připojené diskové svazky, můžete tuto část přeskočit.dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Odebrat metadata_csum z připojených oddílů
-
Chcete-li přidat kód do
fsck
, zadejte níže uvedené příkazy soubor:echo "copy_exec /sbin/e2fsck" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck echo "copy_exec /sbin/tune2fs" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
-
Vytvořte nový soubor v níže uvedeném adresáři a pojmenujte jej tune . Zkopírujte a vložte níže uvedený text do tohoto nového souboru a uložte:
- Soubor:/ etc/initramfs-tools/scripts/local-premount/tune
1 2 3 4 5 6 7 8 9
#!/bin/sh if [ "$readonly" != "y" ] ; then exit 0 ; fi e2fsck -f $Volume tune2fs -O -metadata_csum $Volume e2fsck -f $Volume
-
Aktualizujte vlastnosti souboru a existující obraz initramfs, aby se načetla tune skript:
chmod 755 /etc/initramfs-tools/scripts/local-premount/tune update-initramfs -u -k all
-
Restartujte systém a spusťte níže uvedený příkaz, abyste ověřili, že metadata_csum byla zakázána ze všech dotčených oddílů. Znovu nahraďte „/dev/sda1“ správnými názvy svazků.
dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Formátování kompatibilního svazku Ext4
-
Vyberte svazek Ext4, který chcete naformátovat, a zadejte níže uvedený příkaz, kterým nahraďte
/dev/sda3
s vámi zvolenou hlasitostí. Výstup „0“ znamená úspěch.Pozor Formátování svazku pomocí
mkfs
může vést ke ztrátě dat.mkfs -t ext4 -O -metadata_csum /dev/sda3
Nahradit Systemd za SystemV
-
Nainstalujte nástroje SystemV.
apt install sysvinit-core sysvinit-utils
-
Ze Správce Linode restartujte počítač a uvolněte Systemd.
-
Odeberte Systemd z vašeho počítače:
apt --auto-remove remove systemd
-
Vytvořte soubor
avoid-systemd
a vložte obsah níže:- Soubor:/ etc/apt/preferences.d/avoid-systemd
1 2 3
Package: *systemd* Pin: release * Pin-Priority: -1
Přidat úložiště OpenVZ
-
Vytvořte nový zdrojový soubor úložiště a vložte obsah níže:
- Soubor:/ etc/apt/sources.list.d/openvz.list
deb http://download.openvz.org/debian jessie main deb http://download.openvz.org/debian wheezy main
-
Přidejte klíč úložiště do systému:
wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
-
K datu vydání této příručky je klíč úložiště OpenVZ neplatný a vydává
apt update
příkaz vygeneruje varování ze systému. Příkaz by měl být úspěšný. Pokud ne, aktualizujte systém pomocí následujícího argumentu:apt --allow-unauthenticated update
Instalovat balíčky OpenVZ
-
Nainstalujte OpenVZ s požadovanými balíčky.
KPackage="linux-image-openvz-$(dpkg --print-architecture)" sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
-
Instalace by měla vytvořit nový adresář
/vz
. Pokud tento adresář po instalaci neexistuje, vytvořte symbolický odkaz pomocí příkazu níže:ln -s /var/lib/vz/ /vz
-
Vytvořte soubor
vznet.conf
a vložte do řádku níže:- Soubor:/ etc/vz/vznet.conf
1
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
-
Tento krok je volitelný a způsobí zastavení virtuálních instancí OpenVZ při zastavení služby OpenVZ. Pokud je toto chování žádoucí, zadejte níže uvedený příkaz.
echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf
Zavedení do jádra OpenVZ
Systém musí být nakonfigurován tak, aby bootoval jádro OpenVZ při každém restartu serveru.
-
Otevřete soubor
grub.cfg
soubor vless
nebo váš preferovaný textový editor:less /boot/grub/grub.cfg
-
V rámci
grub.cfg
vyhledejte sekci podobnou následujícímu:- Soubor:/ boot/grub/grub.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
. . . menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 4.9.0-3-amd64 ...' linux /boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.9.0-3-amd64 } submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' . . .
Copy the text entry preceeding `submenu`, in this example the text would be: **Advanced options for Debian GNU/Linux**.
-
V rámci
grub.cfg
pod řádkem „submenu“, uvidíte několik odsazených sekcí „menuentry“. Ty představují dostupná jádra. V nich musíte najít nově nainstalovanou položku nabídky jádra OpenVZ. Mělo by to vypadat podobně jako obsah níže. Všimněte si, že některá budou obnovovací jádra a měli byste je ignorovat:- Soubor:/ boot/grub/grub.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
. . . menuentry 'Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-2.6.32-openvz-042stab123.9-amd64-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 2.6.32-openvz-042stab123.9-amd64 ...' linux /boot/vmlinuz-2.6.32-openvz-042stab123.9-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-2.6.32-openvz-042stab123.9-amd64 } . . .
Again, write down the text directly after "menuentry" in single quotes. Here, the text to copy is **Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64**.
-
Zavřete grub.cfg soubor a otevřete /etc/default/grub ve vašem preferovaném textovém editoru. Najděte řádek, který začíná
GRUB_DEFAULT=
. Odstraňte výchozí hodnotu tohoto parametru a zadejte text, který jste zkopírovali v předchozích krocích, ve formátu níže. Ve výše uvedeném příkladu by hodnota byla následující:GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64"
Všimněte si, že oba zkopírované řetězce jsou odděleny znakem mrkve „>“.
-
Uložte a zavřete grub a zadejte níže uvedený příkaz k opětovnému načtení zavaděče grub s novou hodnotou jádra:
update-grub
-
Ve výchozím nastavení načítání jádra nezpracovává Grub, ale Linode Manager. Přihlaste se do svého Linode Manager a vyberte svůj Linode. Klikněte na svůj konfigurační profil. V části „Nastavení spouštění“ vyberte z rozevíracího seznamu jádra „GRUB 2“ (viz obrázek níže). Uložte změny a ukončete.
-
Restartujte server a zadáním příkazu níže ověřte, že bylo načteno jádro OpenVZ:
uname -r
Pokud nebylo načteno jádro OpenVZ, je to s největší pravděpodobností grub soubor, který je špatně nakonfigurovaný. Zkontrolujte a ujistěte se, že bylo vybráno a správně zadáno správné jádro.
Stáhnout a nasadit šablonu OS
-
Spusťte službu OpenVZ:
service vz start service vz status
-
Zaregistrujte se v oficiálním úložišti šablon OpenVZ:
sudo gpg --recv-keys $(echo $(sudo gpg --batch --search-keys [email protected] 2>&1 | grep -ie ' key.*created' | sed -e 's|key|@|g' | cut -f 2 -d '@') | cut -f 1 -d ' ' | cut -f 1 -d ',')
-
Upravte
/etc/vz/vz.conf
a změňte následující řádek nasimfs
místoploop
:- Soubor:/ etc/vz/vz.conf
1
VE_LAYOUT=simfs
-
Seznam dostupných šablon OS ke stažení:
vztmpl-dl --list-remote
-
Z dostupného seznamu šablon vyberte jednu, kterou chcete stáhnout. Pomocí níže uvedeného formátu zadejte následující příkaz, kterým nahradíte centos7-x86_64 se šablonou, kterou jste vybrali:
vztmpl-dl --gpg-check centos7-x86_64
-
OpenVZ označuje každou nainstalovanou šablonu OS jako „kontejner“. Pro každou staženou šablonu musíte vytvořit ID kontejneru (CTID). Zadejte níže uvedený příkaz a nahraďte [CTID] libovolným číslem (doporučuje se 101) a název šablony CentOS 7 staženou šablonou.
vzctl create [CTID] --ostemplate centos7-x86_64
-
Pokud nastavíte samostatný oddíl disku pro šablony OpenVZ, vytvořte kontejner na novém disku pomocí příkazu níže. Nahraďte –stemplate s názvem vaší šablony a –název s popisným názvem dle vašeho výběru:
vzctl create [CTID] --ostemplate debian-8.0-x86_64 --layout simfs --name centos7 --private /vztemp/vz/private/$VEID --root /vztemp/vz/root/$VEID --config basic
-
Nyní bude vytvořen konfigurační soubor pro vaši šablonu operačního systému. Umístění tohoto souboru je zadáno jako součást výstupu předchozího příkazu. Otevřete tento soubor nyní a proveďte níže uvedené změny. Konfigurační soubor bude pojmenován ve formátu [CTID].conf.
- Přidělte svému virtuálnímu prostředí IP adresu. Doporučený formát je 192.168.0.[CTID]. V tomto případě by to bylo 192.168.0.101.
- Poskytněte jmenný server. Jmenný server Google (8.8.8.8) by měl stačit.
- Pokud máte potíže se zaváděním do virtuálního prostředí, můžete zkusit změnit VE_LAYOUT zpět na
ploop
zsimfs
.
Můžete také nakonfigurovat další možnosti podle svého uvážení, jako je SWAP a přidělení RAM. Uložte a po dokončení zavřete.
- Soubor:/ etc/vz/conf/101.conf
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
. . . # RAM PHYSPAGES="0:256M" # Swap SWAPPAGES="0:512M" # Disk quota parameters (in form of softlimit:hardlimit) DISKSPACE="2G:2.2G" DISKINODES="131072:144179" QUOTATIME="0" # CPU fair scheduler parameter CPUUNITS="1000" NETFILTER="stateless" VE_ROOT="/var/lib/vz/root/$VEID" VE_PRIVATE="/var/lib/vz/private/$VEID" VE_LAYOUT="simfs" OSTEMPLATE="centos7-x86_64" ORIGIN_SAMPLE="vswap-256m" NAMESERVER="8.8.8.8" IP_ADDRESS="192.168.0.101/24" HOSTNAME="centos-7"
-
Spusťte svůj nově vytvořený kontejner pomocí příkazů níže. Nahraďte [CTID] číslem CTID vašeho kontejneru. Chcete-li ukončit libovolnou relaci kontejneru a zároveň nechat virtuální prostředí spuštěné, zadejte
exit
v příkazovém řádku.vzctl start [CTID] vzctl enter [CTID]
Konfigurace internetového přístupu ke kontejnerům
Kontejnery nemají žádný způsob, jak se dostat na internet nebo být přístupné z internetu. Hostitelský server musí být nakonfigurován tak, aby předával požadavky do az každého nainstalovaného virtuálního prostředí.
Konfigurace přístupu z kontejneru k internetu
Poznámka Možná se budete muset přihlásit jako root pomocí su -
za účelem spuštění příkazů iptables-save v této sekci.
-
Na hostitelském serveru zadejte následující příkaz pomocí Iptables. Nahraďte závorky a obsah příslušnými informacemi. U adresy IP kontejneru ji nezapomeňte uvést v notaci CIDR. Zahrnout IP adresu a podsíť nebo
xxx.xxx.xxx.xxx/xx
s cílem obsáhnout řadu IP adres, které umožní přístup ke všem kontejnerům přidaným v budoucnu. Například zadání 192.168.0.0/24 nastaví směrování pro IP adresy 192.168.0.0 až 192.168.0.255:iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
-
Pokud máte
iptables-persistent
nainstalován, tento krok přeskočte. Uložte nová pravidla Iptables:iptables-save > /etc/iptables.conf
-
Nakonfigurujte bránu firewall tak, aby umožňovala předávané požadavky. Pokud nepoužíváte
iptables-persistent
uložte pravidlo:iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT iptables-save > /etc/iptables.conf
-
Nyní byste měli mít přístup k internetu z prostředí vašeho kontejneru. Zkuste aktualizovat balíčky z vašeho kontejneru a ověřit připojení.
Konfigurace přístupu z internetu do kontejneru
-
Pokud potřebujete přistupovat ke konkrétní službě na vašem kontejneru z internetu, budete si muset vyhradit port na hostitelském počítači a směrovat přístup přes něj. Zadejte následující příkaz a nahraďte všechny hodnoty v hranatých závorkách příslušnými informacemi:
iptables -t nat -A PREROUTING -p tcp -d [host_ip] --dport [host_port_number] -i eth0 -j DNAT --to-destination [container_ip:container_port_number]
-
Uložte nové pravidlo. Pokud máte
iptables-persistent
, tento krok přeskočte nainstalováno:iptables-save > /etc/iptables.conf
Kam jít odtud
Po instalaci OpenVZ, stažení šablony, vytvoření kontejneru a konfiguraci přístupu k internetu bude vaše virtuální prostředí fungovat přesně jako každé normální prostředí Linuxu:vyžaduje pravidelné aktualizace, konfiguraci zabezpečení atd. Většinu konfigurace lze provést z hostitelského serveru pomocí příkazů OpenVZ .
Viz odkaz „Základní operace OpenVZ“ v Externích zdrojích sekce, abyste se seznámili se základními příkazy administrace. Lze si také stáhnout další šablony vytvořené uživatelem, které nejsou zahrnuty v hlavním seznamu šablon. Můžete je najít kliknutím na odkaz „Šablony přidané uživatelem OpenVZ“.
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Základní operace OpenVZ
- Šablony přidané uživatelem OpenVZ