Was ist OpenVZ?
OpenVZ ist ein softwarebasiertes OS-Virtualisierungstool, das die Bereitstellung, Verwaltung und Änderung isolierter virtueller Linux-Umgebungen innerhalb einer Host-Linux-Distribution ermöglicht. Eine umfangreiche Palette vorgefertigter Betriebssystemvorlagen in einer Vielzahl von Linux-Distributionen ermöglicht es Benutzern, virtuelle Umgebungen schnell und einfach herunterzuladen und bereitzustellen.
Bevor Sie beginnen
-
Das Durcharbeiten dieses Lernprogramms erfordert ein Root-Benutzerkonto und ist so geschrieben, als ob Befehle als Root-Benutzer ausgegeben würden. Leser, die sich für die Verwendung eines eingeschränkten Benutzerkontos entscheiden, müssen Befehlen
sudo
voranstellen wo erforderlich. Wenn Sie noch kein eingeschränktes Benutzerkonto erstellen müssen, befolgen Sie die Schritte im Leitfaden zum Einrichten und Sichern einer Compute-Instanz. -
Die Anweisungen in diesem Handbuch wurden nur für Debian 9 geschrieben und getestet. Es ist unwahrscheinlich, dass sie für andere Debian- oder Ubuntu-Distributionen funktionieren.
-
Bestimmte wesentliche Änderungen an Ihrem Debian 9-System sind erforderlich, um OpenVZ auszuführen, einschließlich des Entfernens und Ersetzens von Systemd durch SystemV und die Verwendung eines benutzerdefinierten Linux-Kernels. Bevor Sie fortfahren, vergewissern Sie sich, dass die gesamte derzeit auf dem Computer installierte Software mit diesen Änderungen kompatibel ist.
Hinweis Obwohl es nicht erforderlich ist, wird empfohlen, eine separate Ext4-Dateisystempartition für OpenVZ-Vorlagen zu erstellen. Standardmäßig formatieren sowohl der Debian 9 Installer als auch der Linode Manager neu erstellte Partitionen mit Ext4. Für Informationen, wie Sie diese Konfiguration durchführen, befolgen Sie die Schritte zum Erstellen eines Datenträgers im Handbuch Verwalten von Datenträgern und Speicher auf einem Linode.
Optional:Erstellen Sie eine separate Partition für OpenVZ-Vorlagen
Wenn Sie beabsichtigen, einen gesamten Linode VPS für die Ausführung von OpenVZ und keinen anderen Diensten zu verwenden, wird empfohlen, separate Partitionen für den Hostserver und seine Prozesse sowie alle virtuellen Servervorlagen von OpenVZ zu erstellen. Die folgende Tabelle veranschaulicht das empfohlene Partitionierungsschema:
Partition | Beschreibung | Typische Größe |
---|---|---|
/ | Root-Partition | 4–12 GB |
tauschen | Paging-Partition | 2 mal RAM oder RAM + 2 GB (abhängig vom verfügbaren Festplattenspeicher) |
/vz | Partition zum Hosten von OpenVZ-Vorlagen | Gesamter verbleibender Festplattenspeicher |
-
Loggen Sie sich in Ihren Linode Manager ein und wählen Sie Ihren Linode aus. Schalten Sie das Gerät aus und überprüfen Sie, ob der Auftrag abgeschlossen ist, indem Sie die Host-Auftragswarteschlange anzeigen Sektion. Unter Festplatten Klicken Sie auf der Registerkarte Neuen Datenträger erstellen . Fügen Sie ein Etikett Ihrer Wahl hinzu, wählen Sie „ext4“ als Typ Drop-down-Menü und weisen Sie so viel Platz wie möglich in der Größe zu Feld. Klicken Sie auf Änderungen speichern; eine optimale Konfiguration ähnelt dem Bild unten.
-
Unter dem Dashboard Klicken Sie auf der Registerkarte auf Ihr Hauptkonfigurationsprofil. Unter Gerätezuweisung blockieren Weisen Sie Ihre neue Partition einem geöffneten Gerät zu. Klicken Sie auf Änderungen speichern wenn fertig.
-
Booten Sie Linode und melden Sie sich über SSH an. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die neue Festplatte ordnungsgemäß erstellt wurde. Die Ausgabe zeigt Ihre neu erstellte Festplatte an.
fdisk -l
-
Erstellen Sie einen Einhängepunkt für das neue Gerät:
mkdir /vztemp
-
Mounten Sie die neue Festplatte. Stellen Sie sicher, dass Sie /dev/sdc ersetzen mit Ihrem Gerätenamen:
mount /dev/sdc /vztemp
Entfernen Sie das Metadata_csum-Feature von Ext4-Volumes
Bevor OpenVZ installiert werden kann, muss das System auf Kompatibilität konfiguriert werden. Debian 9 unterstützt eine neue Prüfsummenfunktion, die mit benutzerdefinierten OpenVZ-Kerneln nicht kompatibel ist. Je nach Ihren Vorlieben können Sie entweder metadata_csum von einer gemounteten Partition entfernen oder die betroffene Partition auf ein kompatibles Ext4-Volume neu formatieren. Wählen Sie eine der beiden Methoden und befolgen Sie die Anweisungen im entsprechenden Abschnitt weiter unten.
-
Verfügbare Festplattenpartitionen auflisten.
lsblk
-
Überprüfen Sie, ob „metadata_csum“ in einer der in Schritt 1 gezeigten gemounteten Festplattenpartitionen installiert ist (ohne die SWAP-Partition). Befolgen Sie das folgende Format für jede Partition und ersetzen Sie
/dev/sda1
mit dem entsprechenden Datenträgernamen. Wenn der folgende Befehl keine Ausgabe für gemountete Datenträger liefert, können Sie diesen Abschnitt überspringen.dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Entferne Metadata_csum von gemounteten Partitionen
-
Führen Sie die folgenden Befehle aus, um Code zu
fsck
hinzuzufügen Datei: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
-
Erstellen Sie eine neue Datei in dem unten angegebenen Verzeichnis und nennen Sie sie tune . Kopieren Sie den folgenden Text, fügen Sie ihn in diese neue Datei ein und speichern Sie ihn:
- Datei:/ 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
-
Dateieigenschaften und vorhandenes initramfs-Image aktualisieren, um tune zu laden Skript:
chmod 755 /etc/initramfs-tools/scripts/local-premount/tune update-initramfs -u -k all
-
Starten Sie Ihr System neu und führen Sie den folgenden Befehl aus, um zu überprüfen, ob metadata_csum von allen betroffenen Partitionen deaktiviert wurde. Ersetzen Sie erneut „/dev/sda1“ durch die korrekten Volume-Namen.
dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Formatieren Sie ein kompatibles Ext4-Volume
-
Wählen Sie das Ext4-Volume, das Sie formatieren möchten, und führen Sie den folgenden Befehl aus, wobei Sie
/dev/sda3
ersetzen mit Ihrer ausgewählten Lautstärke. Eine Ausgabe von „0“ zeigt den Erfolg an.Achtung Formatieren eines Volumes mit dem
mkfs
Befehl kann zu Datenverlust führen.mkfs -t ext4 -O -metadata_csum /dev/sda3
Systemd durch SystemV ersetzen
-
SystemV-Dienstprogramme installieren.
apt install sysvinit-core sysvinit-utils
-
Starten Sie vom Linode Manager aus Ihren Rechner neu, um Systemd freizugeben.
-
Systemd von Ihrem Rechner entfernen:
apt --auto-remove remove systemd
-
Erstellen Sie die Datei
avoid-systemd
und fügen Sie den Inhalt unten ein:- Datei:/ etc/apt/preferences.d/avoid-systemd
1 2 3
Package: *systemd* Pin: release * Pin-Priority: -1
OpenVZ-Repository hinzufügen
-
Erstellen Sie eine neue Repository-Quelldatei und fügen Sie den folgenden Inhalt ein:
- Datei:/ etc/apt/sources.list.d/openvz.list
deb http://download.openvz.org/debian jessie main deb http://download.openvz.org/debian wheezy main
-
Fügen Sie den Repository-Schlüssel zu Ihrem System hinzu:
wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
-
Zum Veröffentlichungsdatum dieses Handbuchs ist der OpenVZ-Repository-Schlüssel ungültig und gibt das
apt update
aus Der Befehl generiert eine Warnung vom System. Der Befehl sollte erfolgreich sein. Wenn dies nicht der Fall ist, aktualisieren Sie das System mit dem folgenden Argument:apt --allow-unauthenticated update
Installieren Sie OpenVZ-Pakete
-
Installieren Sie OpenVZ mit den erforderlichen Paketen.
KPackage="linux-image-openvz-$(dpkg --print-architecture)" sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
-
Die Installation sollte ein neues Verzeichnis erstellen,
/vz
. Wenn dieses Verzeichnis nach der Installation nicht existiert, erstellen Sie einen symbolischen Link mit dem folgenden Befehl:ln -s /var/lib/vz/ /vz
-
Erstellen Sie die Datei
vznet.conf
und fügen Sie die folgende Zeile ein:- Datei:/ etc/vz/vznet.conf
1
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
-
Dieser Schritt ist optional und bewirkt, dass virtuelle OpenVZ-Instanzen angehalten werden, wenn der OpenVZ-Dienst angehalten wird. Wenn dieses Verhalten gewünscht wird, geben Sie den folgenden Befehl ein.
echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf
In den OpenVZ-Kernel booten
Das System muss so konfiguriert werden, dass der OpenVZ-Kernel bei jedem Neustart des Servers gestartet wird.
-
Öffnen Sie die
grub.cfg
Datei inless
, oder Ihren bevorzugten Texteditor:less /boot/grub/grub.cfg
-
Innerhalb der
grub.cfg
suchen Sie nach einem Abschnitt, der dem folgenden ähnelt:- Datei:/ 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**.
-
Innerhalb der
grub.cfg
unterhalb der Zeile „submenu“ sehen Sie mehrere eingerückte „menuentry“-Abschnitte. Diese stellen die verfügbaren Kernel dar. Von diesen müssen Sie den neu installierten OpenVZ-Kernel-Menüeintrag finden. Es sollte ähnlich wie der Inhalt unten aussehen. Beachten Sie, dass einige Wiederherstellungskernel sind und ignoriert werden sollten:- Datei:/ 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**.
-
Schließen Sie die grub.cfg Datei und öffnen Sie /etc/default/grub in Ihrem bevorzugten Texteditor. Suchen Sie die Zeile, die mit
GRUB_DEFAULT=
beginnt . Löschen Sie den Standardwert für diesen Parameter und geben Sie den Text ein, den Sie in den vorherigen Schritten kopiert haben, und folgen Sie dabei dem unten stehenden Format. Im obigen Beispiel wäre der Wert wie folgt:GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64"
Beachten Sie, dass beide kopierten Zeichenfolgen mit dem Karottenzeichen „>“ getrennt werden.
-
Speichern und schließen Sie grub Datei und führen Sie den folgenden Befehl aus, um den Grub-Bootloader mit dem neuen Kernel-Wert neu zu laden:
update-grub
-
Standardmäßig wird das Laden des Kernels nicht von Grub, sondern vom Linode Manager übernommen. Melden Sie sich bei Ihrem Linode Manager an und wählen Sie Ihren Linode aus. Klicken Sie auf Ihr Konfigurationsprofil. Wählen Sie im Abschnitt „Starteinstellungen“ „GRUB 2“ aus der Kernel-Dropdown-Liste (siehe Abbildung unten). Speichern Sie Ihre Änderungen und beenden Sie.
-
Starten Sie Ihren Server neu und führen Sie den folgenden Befehl aus, um zu überprüfen, ob der OpenVZ-Kernel geladen wurde:
uname -r
Wenn der OpenVZ-Kernel nicht geladen wurde, ist es höchstwahrscheinlich der grub Datei, die falsch konfiguriert ist. Überprüfen Sie und stellen Sie sicher, dass der richtige Kernel ausgewählt und richtig eingegeben wurde.
Eine Betriebssystemvorlage herunterladen und bereitstellen
-
Starten Sie den OpenVZ-Dienst:
service vz start service vz status
-
Registrieren Sie sich beim offiziellen OpenVZ-Vorlagen-Repository:
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 ',')
-
Bearbeiten Sie
/etc/vz/vz.conf
und ändern Sie die folgende Zeile, umsimfs
zu verwenden stattploop
:- Datei:/ etc/vz/vz.conf
1
VE_LAYOUT=simfs
-
Verfügbare OS-Vorlagen zum Download auflisten:
vztmpl-dl --list-remote
-
Wählen Sie aus der Liste der verfügbaren Vorlagen eine zum Herunterladen aus. Geben Sie unter Verwendung des folgenden Formats den folgenden Befehl aus und ersetzen Sie centos7-x86_64 mit der ausgewählten Vorlage:
vztmpl-dl --gpg-check centos7-x86_64
-
OpenVZ bezeichnet jede installierte Betriebssystemvorlage als „Container“. Sie müssen für jede heruntergeladene Vorlage eine Container-ID (CTID) erstellen. Führen Sie den folgenden Befehl aus und ersetzen Sie dabei [CTID] durch eine beliebige Zahl (101 wird empfohlen) und den CentOS 7-Vorlagennamen durch Ihre heruntergeladene Vorlage.
vzctl create [CTID] --ostemplate centos7-x86_64
-
Wenn Sie eine separate Festplattenpartition für OpenVZ-Vorlagen einrichten, verwenden Sie den folgenden Befehl, um den Container auf der neuen Festplatte zu erstellen. Ersetzen Sie –ostemplate mit Ihrem Vorlagennamen und –name mit einem aussagekräftigen Namen Ihrer Wahl:
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
-
Für Ihre OS-Vorlage wurde nun eine Konfigurationsdatei erstellt. Der Speicherort dieser Datei wird als Teil der Ausgabe des vorherigen Befehls angegeben. Öffnen Sie diese Datei jetzt, um die folgenden Änderungen unten vorzunehmen. Die Konfigurationsdatei wird im Format [CTID].conf benannt.
- Geben Sie Ihrer virtuellen Umgebung eine IP-Adresse. Das empfohlene Format ist 192.168.0.[CTID]. In diesem Fall wäre es 192.168.0.101.
- Geben Sie einen Nameserver an. Der Nameserver von Google (8.8.8.8) sollte ausreichen.
- Wenn Sie Probleme beim Booten in Ihre virtuelle Umgebung haben, können Sie versuchen, VE_LAYOUT zu ändern zurück zu
ploop
vonsimfs
.
Sie können auch andere Optionen nach eigenem Ermessen konfigurieren, z. B. SWAP und RAM-Zuweisung. Speichern und schließen Sie, wenn Sie fertig sind.
- Datei:/ 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"
-
Booten Sie mit den folgenden Befehlen in Ihren neu erstellten Container. Ersetzen Sie [CTID] durch die CTID-Nummer Ihres Containers. Geben Sie
exit
ein, um eine Containersitzung zu beenden, während die virtuelle Umgebung weiterhin ausgeführt wird in der Befehlszeile.vzctl start [CTID] vzctl enter [CTID]
Internetzugriff auf Container konfigurieren
Container haben keine Möglichkeit, auf das Internet zuzugreifen oder über das Internet zugegriffen zu werden. Der Hostserver muss so konfiguriert werden, dass er Anforderungen an und von jeder installierten virtuellen Umgebung weiterleitet.
Zugriff vom Container zum Internet konfigurieren
Hinweis Möglicherweise müssen Sie sich mit su -
als root anmelden um die iptables-save-Befehle in diesem Abschnitt auszuführen.
-
Geben Sie auf dem Hostserver den folgenden Befehl mit Iptables aus. Ersetzen Sie die Klammern und den Inhalt durch die entsprechenden Informationen. Stellen Sie für die Container-IP-Adresse sicher, dass Sie sie in CIDR-Notation auflisten. Fügen Sie IP-Adresse und Subnetz hinzu oder
xxx.xxx.xxx.xxx/xx
, um einen Bereich von IP-Adressen zu umfassen, der den Zugriff auf alle zukünftig hinzugefügten Container ermöglicht. Wenn Sie beispielsweise 192.168.0.0/24 eingeben, wird das Routing für die IP-Adressen 192.168.0.0 bis 192.168.0.255 eingerichtet:iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
-
Wenn Sie
iptables-persistent
haben installiert haben, überspringen Sie diesen Schritt. Speichern Sie die neuen Iptables-Regeln:iptables-save > /etc/iptables.conf
-
Konfigurieren Sie Ihre Firewall so, dass weitergeleitete Anfragen zugelassen werden. Wenn Sie
iptables-persistent
nicht verwenden Speichern Sie die Regel:iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT iptables-save > /etc/iptables.conf
-
Sie sollten jetzt von Ihrer Containerumgebung aus Zugriff auf das Internet haben. Versuchen Sie, Pakete aus Ihrem Container zu aktualisieren, um die Verbindung zu überprüfen.
Zugriff vom Internet zum Container konfigurieren
-
Wenn Sie über das Internet auf einen bestimmten Dienst auf Ihrem Container zugreifen müssen, müssen Sie einen Port auf dem Hostcomputer reservieren und den Zugriff darüber leiten. Geben Sie den folgenden Befehl aus und ersetzen Sie alle eingeklammerten Werte durch die entsprechenden Informationen:
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]
-
Speichern Sie Ihre neue Regel. Überspringen Sie diesen Schritt, wenn Sie
iptables-persistent
haben installiert:iptables-save > /etc/iptables.conf
Weitere Informationen von hier
Nach der Installation von OpenVZ, dem Herunterladen einer Vorlage, dem Erstellen eines Containers und dem Konfigurieren des Internetzugangs funktioniert Ihre virtuelle Umgebung genau wie jede normale Linux-Umgebung:Sie erfordert regelmäßige Updates, Sicherheitskonfigurationen usw. Die meisten Konfigurationen können vom Hostserver über OpenVZ-Befehle vorgenommen werden .
Siehe den Link „OpenVZ Basic Operations“ in den External Resources Abschnitt, um sich mit grundlegenden Verwaltungsbefehlen vertraut zu machen. Es können auch zusätzliche vom Benutzer erstellte Vorlagen heruntergeladen werden, die nicht in der Hauptvorlagenliste enthalten sind. Sie finden diese, indem Sie dem Link „OpenVZ User Contributed Templates“ folgen.
Weitere Informationen
Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachten Sie bitte, dass wir nicht für die Genauigkeit oder Aktualität extern gehosteter Materialien garantieren können.
- Grundlegende OpenVZ-Operationen
- Von OpenVZ-Benutzern beigesteuerte Vorlagen