Server/Proxmox Virtual Environment: Unterschied zwischen den Versionen
K (PaulRiegel verschob die Seite Server/Proxmox nach Server/Proxmox Virtual Environment) |
|||
(50 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
Standardmäßig ist das web user interface per https auf Port ''8006'' zu erreichen.<sup>[https://pve.proxmox.com/wiki/Ports]</sup> | Standardmäßig ist das web user interface per https auf Port ''8006'' zu erreichen.<sup>[https://pve.proxmox.com/wiki/Ports]</sup> | ||
=== sources.list === | === Aktualisierung === | ||
==== Aktualisierung innerhalb von Hauptversionen ==== | |||
(''Server View'') | |||
: (''Dataceenter'') | |||
:: (jeweiliger) Server | |||
::: Reiter ''Updates'' | |||
:::: Reiter ''Refresh'' | |||
:::: Reiter ''Upgrade'' | |||
* https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_system_software_updates | |||
* https://pve.proxmox.com/pve-docs/pve-admin-guide.html#ha_manager_package_updates | |||
==== Aktualisierung zwischen Hauptversionen ==== | |||
=== Quellen für Pakete === | |||
==== sources.list ==== | |||
: Proxmox Version 6 | |||
: in Anlehnung an [https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Busterh#Adapt_your_sources.list Proxmox:Wiki ''Install Proxmox VE on Debian Buster#Adapt your sources.list''] | |||
Wahrnehmen des Fehlers (401) bei Beziehen der Quelle ''enterprise.proxmox.com'' | |||
:: Für die Quelle ''enterprise.proxmox.com'' bedarf es Zugangsdaten (die entsprechend zu vergüten sind). Ohne Zugangsdaten wird der Code (für den Fehler) 401 (fehlerhafte Autorisierung) ausgeliefert. | |||
: <code>apt update</code> | |||
<pre> | |||
Hit:1 http://security.debian.org/debian-security buster/updates InRelease | |||
Hit:2 http://deb.debian.org/debian buster InRelease | |||
Hit:3 http://deb.debian.org/debian buster-updates InRelease | |||
Hit:4 http://download.proxmox.com/debian/ceph-nautilus buster InRelease | |||
Hit:5 http://download.proxmox.com/debian/pve buster InRelease | |||
Err:6 https://enterprise.proxmox.com/debian/pve buster InRelease | |||
401 Unauthorized [IP: 2a01:7e0:0:424::249 443] | |||
Reading package lists... Done | |||
E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/buster/InRelease 401 Unauthorized [IP: 2a01:7e0:0:424::249 443] | |||
E: The repository 'https://enterprise.proxmox.com/debian/pve buster InRelease' is not signed. | |||
N: Updating from such a repository can't be done securely, and is therefore disabled by default. | |||
N: See apt-secure(8) manpage for repository creation and user configuration details. | |||
</pre> | |||
Anzeigen des Datei mit dem Eintrag für diese Quelle | |||
: <code>cat /etc/apt/sources.list.d/pve-enterprise.list</code> | |||
<pre> | |||
deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise | |||
</pre> | |||
Hinzufügen einer (vergleichbaren) alternativen Quelle ohne sich registrieren zu müssen | |||
: <code>echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list</code> | |||
: <code>wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg</code> | |||
<pre></pre> | |||
<pre> | |||
Resolving download.proxmox.com (download.proxmox.com)... 2a01:7e0:0:424::249, 212.224.123.70 | |||
Connecting to download.proxmox.com (download.proxmox.com)|2a01:7e0:0:424::249|:80... connected. | |||
HTTP request sent, awaiting response... 200 OK | |||
Length: 1202 (1.2K) [application/octet-stream] | |||
Saving to: '/etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg' | |||
/etc/apt/trusted.gpg.d/proxmo 100%[===============================================>] 1.17K --.-KB/s in 0s | |||
</pre> | |||
<pre></pre> | |||
: <code>cat /etc/apt/sources.list.d/pve-install-repo.list</code> | |||
<pre> | |||
deb http://download.proxmox.com/debian/pve buster pve-no-subscription | |||
</pre> | |||
: <code>mv /etc/apt/sources.list.d/pve-enterprise.list /root/pve-enterprise.list</code> | |||
: <code>mv /etc/apt/sources.list.d/pve-install-repo.list /root/pve-install-repo.list</code> | |||
: <code>apt update</code> | |||
<pre> | |||
Hit:1 http://security.debian.org/debian-security buster/updates InRelease | |||
Hit:2 http://deb.debian.org/debian buster InRelease | |||
Hit:3 http://deb.debian.org/debian buster-updates InRelease | |||
Hit:4 http://download.proxmox.com/debian/ceph-nautilus buster InRelease | |||
Reading package lists... Done | |||
Building dependency tree | |||
Reading state information... Done | |||
10 packages can be upgraded. Run 'apt list --upgradable' to see them. | |||
</pre> | |||
: <code>apt upgrade</code> | |||
<pre> | |||
</pre> | |||
---- | |||
: Proxmox Version 5 | : Proxmox Version 5 | ||
; versteckt: | |||
<!-- | |||
: in Anlehnung an [https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch#Adapt_your_sources.list Proxmox:Wiki ''Install Proxmox VE on Debian Stretch#Adapt your sources.list''] | : in Anlehnung an [https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch#Adapt_your_sources.list Proxmox:Wiki ''Install Proxmox VE on Debian Stretch#Adapt your sources.list''] | ||
Zeile 72: | Zeile 154: | ||
<pre> | <pre> | ||
</pre> | </pre> | ||
!--> | |||
=== ZFS === | === ZFS === | ||
Zeile 87: | Zeile 170: | ||
* ''zfs rollback'' | * ''zfs rollback'' | ||
* (möglichst unverzüglich) System neu starten lassen | * (möglichst unverzüglich) System neu starten lassen | ||
== Proxmox Storage == | |||
=== Proxmox Storage Content === | |||
==== Proxmox Storage Content ''Disk image'' ==== | |||
==== Proxmox Storage Content ''ISO image'' ==== | |||
==== Proxmox Storage Content ''Container template'' ==== | |||
==== Proxmox Storage Content ''VZDump backup file'' ==== | |||
==== Proxmox Storage Content ''Container'' ==== | |||
==== Proxmox Storage Content ''Snippets'' ==== | |||
=== Proxmox Storage Type === | |||
==== Proxmox Storage Type ''Directory'' ==== | |||
==== Proxmox Storage Type ''LVM'' ==== | |||
==== Proxmox Storage Type ''LVM-thin'' ==== | |||
==== Proxmox Storage Type ''CephFS'' ==== | |||
: <code>ls /mnt/pve/</code> | |||
<pre> | |||
cephfs | |||
</pre> | |||
: <code>ls /mnt/pve/cephfs/</code> | |||
==== Proxmox Storage Type ''RDB'' ==== | |||
<code>ls /dev/rbd/</code> | |||
<pre> | |||
storage | |||
</pre> | |||
<code>ls /dev/rbd/storage/</code> | |||
==== Proxmox Storage Type ''ZFS'' ==== | |||
== Proxmox Ceph == | |||
[[c3d2:Proxmox#Proxmox Ceph]] | |||
=== Ceph === | |||
==== Ceph Dashboard ==== | |||
[[c3d2:Proxmox#Ceph Dashboard]] | |||
=== Ceph rebalance === | |||
=== Ceph recovery === | |||
https://docs.ceph.com/en/latest/dev/osd_internals/backfill_reservation/ | |||
https://www.suse.com/support/kb/doc/?id=000019693 | |||
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/#backfilling | |||
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/#backfilling | |||
=== Proxmox Ceph Verwaltung von Geräten === | |||
===== Ersetzen von Geräten für Massenspeicher bei Proxmox Ceph ===== | |||
https://pro.stura.htw-dresden.de/issues/839 | |||
===== Erweiterung mit Geräten für Massenspeicher bei Proxmox Ceph ===== | |||
* Gerät für Massenspeicher (Festplatte) in einen freien Schacht einschieben | |||
* Verfügbarkeit (Ist das Gerät beim Server so angebunden, dass darauf zugegriffen werden kann?) prüfen | |||
*: Beim entsprechenden Node bei <tt>Disks</tt> sollte ein neues Gerät als fortlaufender Buchstabe in der Spalte <tt>Device</tt> beispielsweise als <tt>/dev/sd''x''</tt> angezeigt werden. | |||
* Bereinigung aller möglichen Partitionen | |||
*: <code>fdisk <tt>/dev/sd''x''</tt></code> | |||
*:* Entfernen aller möglichen Partitionen mit <code>d</code> | |||
*:* (nach der Entfernung aller möglichen Partitionen) Erstellen einer neuen Tabelle für die Partitionierung (GPT) mit <code>g</code> | |||
*:* (nach der Erstellung einer neuen Tabelle für die Partitionierung (GPT)) Anwendung der gemachten Änderungen durch das Schreiben mit <code>w</code> | |||
* (um die Änderung für das System richtig zu erkennen) Neustarten des Systems, etwa mit <code>reboot</code> | |||
* Verfügbarkeit (Ist das Gerät beim Server vielleicht anders angebunden, um darauf zugegriffen zu können?) prüfen | |||
*: Beim entsprechenden Node bei <tt>Disks</tt> sollte ein das neue Gerät als fortlaufender Buchstabe nach den Geräten des Systems (vor den Geräten für Ceph) in der Spalte ''Device'' beispielsweise als <tt>/dev/sd''c''</tt> angezeigt werden. | |||
* beim entsprechenden Node bei <tt>Ceph</tt> und <tt>OSD</tt> die Schaltfläche <tt>Create: OSD</tt> anwählen | |||
** beim Feld für die Auswahl <tt>Disks:</tt> das neue Gerät beispielsweise <tt>/dev/sd''c''</tt> anwählen | |||
** (beim Feld für die Auswahl <tt>DB Disks:</tt> nichts anwählen (das Feld leer lassen) | |||
** die Schaltfläche <tt>Create</tt> anwählen | |||
* bei <tt>Ceph</tt> und <tt>OSD</tt> die Schaltfläche <tt>Reload</tt> anwählen | |||
* Verfügbarkeit (Ist das Gerät als OSD bei Ceph angebunden?) prüfen | |||
* (beim <tt>Datacenter</tt> bei <tt>Ceph</tt> den Vorgang zum Ausgleichen <tt>Recovery/ Rebalance:</tt> (bis zum Ende) verfolgen) | |||
* … | |||
== Containerisierung == | == Containerisierung == | ||
Zeile 95: | Zeile 268: | ||
: <code>pveam available</code> | : <code>pveam available</code> | ||
Bei [[{{PAGENAME}}]] wird nach [[#Container für bestimmte Betriebssysteme]] ''system'' (also ohne einen konkreten Zweck der Anwendung angedacht zu haben) und [[#Container für bestimmte Anwendungen]] ''turnkeylinux''. | Bei [[{{PAGENAME}}]] wird nach [[#Container für bestimmte Betriebssysteme]] ''system'' (also ohne einen konkreten Zweck der Anwendung angedacht zu haben) und [[#Container für bestimmte Anwendungen]] ''turnkeylinux''. (Genau genommen gibt es noch ''mail'', für die [[#Containerisierung für Proxmox Mail Gateway]].) | ||
=== Erstellung von Instanzen der Containerisierung === | |||
=== Konfiguration von Instanzen der Containerisierung === | |||
==== Änderung der Konfiguration von Instanzen der Containerisierung ==== | |||
===== Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert ===== | |||
====== Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert durch backup and restore ====== | |||
Test durchgeführt von goeranh -> Container und VMs können restored werden, indem man auf den Server(n1-3) klickt und dort auf den Storrage b1 -> aus dieser liste kann dann selbst ein gelöschter Container wiederhergestellt werden. Es wurde das Bedenken geäußert, dass VM-IDs kollidieren, wenn ein Container gelöscht wird, ein neuer erstellt und dann der alte Container wieder restored wird. In dieser Situation wird einfach eine neue ID vergeben. | |||
Ungetestet! | |||
* https://pve.proxmox.com/wiki/Unprivileged_LXC_containers#Creation | |||
: <code>pct restore 321 /mnt/pve/cephfs/dump/vzdump-lxc-321-2020_10_11-00_14_05.tar.zst -ignore-unpack-errors 1 -unprivileged</code> | |||
====== Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert durch chown ====== | |||
Der Test (2020-10-10 -11) schlug fehl! | |||
Der Test der Änderung fand bei einem Container nach der [[{{ns:100}}:Server/TurnKey#Aktualisierung von TurnKey 15 auf TurnKey 16]] ([[{{ns:100}}:Server/Nextcloud#TurnKey 15]]) statt. | |||
---- | |||
; leidiges Ergebnis: | |||
: <code>systemctl</code> | |||
<pre></pre> | |||
<pre> | |||
● sys-kernel-config.mount loaded failed failed Kernel Configuration File System | |||
● sys-kernel-debug.mount loaded failed failed Kernel Debug File System | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● mariadb.service loaded failed failed MariaDB 10.3.23 database server | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● systemd-update-utmp.service loaded failed failed Update UTMP about System Boot/Shutdown | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● systemd-journald-audit.socket loaded failed failed Journal Audit Socket | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● systemd-update-utmp.service loaded failed failed Update UTMP about System Boot/Shutdown | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● systemd-journald-audit.socket loaded failed failed Journal Audit Socket | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● sys-kernel-config.mount loaded failed failed Kernel Configuration File System | |||
● sys-kernel-debug.mount loaded failed failed Kernel Debug File System | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
● mariadb.service loaded failed failed MariaDB 10.3.23 database server | |||
</pre> | |||
<pre></pre> | |||
: <code>systemctl status mariadb.service</code> | |||
<pre> | |||
● mariadb.service - MariaDB 10.3.23 database server | |||
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) | |||
Active: failed (Result: exit-code) since Sun 2020-10-11 08:59:26 CEST; 47s ago | |||
Docs: man:mysqld(8) | |||
https://mariadb.com/kb/en/library/systemd/ | |||
Process: 217 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) | |||
Process: 235 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) | |||
Process: 247 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/ | |||
Process: 427 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=7) | |||
Main PID: 427 (code=exited, status=7) | |||
Status: "MariaDB server is down" | |||
Oct 11 08:59:22 nextcloud systemd[1]: Starting MariaDB 10.3.23 database server... | |||
Oct 11 08:59:23 nextcloud mysqld[427]: 2020-10-11 8:59:23 0 [Note] /usr/sbin/mysqld (mysqld 10.3.23-MariaDB-0+deb10u1) starting as process 427 ... | |||
Oct 11 08:59:26 nextcloud systemd[1]: mariadb.service: Main process exited, code=exited, status=7/NOTRUNNING | |||
Oct 11 08:59:26 nextcloud systemd[1]: mariadb.service: Failed with result 'exit-code'. | |||
Oct 11 08:59:26 nextcloud systemd[1]: Failed to start MariaDB 10.3.23 database server. | |||
</pre> | |||
---- | |||
* https://forum.proxmox.com/threads/31066/#post-261883 (https://forum.proxmox.com/threads/convert-privileged-to-unprivileged-container.31066/#post-261883) | |||
Stoppen vom bisherigen Container, der geändert werden soll | |||
: <code>pct stop 321</code> | |||
(optionales) Erstellen von einem Snapshot vom bisherigen Container, der geändert werden soll, um im Fall von eines Fehlschlages der Änderung den Container zurücksetzen zu können | |||
(optionales) Erstellen von einer Datensicherung vom bisherigen Container, der geändert werden soll, um im Fall von eines Fehlschlages der Wiederherstellung von einem Snapshot den Container wiederherstellen zu können | |||
Ersrellen von einem zeitweisen Verzeichnis (in dem die Änderung abgearbeitet werden soll) | |||
: <code>mkdir /tmp/321</code> | |||
Einhängen vom Speicher vom bisherigen Container, der geändert werden soll, ohne den Container zu starten, um die Dateien ändern zu können (Der Ablageort - im Beispiel ''/dev/rbd/storage/vm-321-disk-0'' - muss ermittelt werden. Im Beispiel ist der [[#Proxmox Storage Content Container]] im [[#Proxmox Storage Type RDB]] ''storage'' abgelegt. Im Beispiel ist die ID von der [[#Erstellung von Instanzen der Containerisierung]] ''321''.) | |||
: <code>mount -o loop /dev/rbd/storage/vm-321-disk-0 /tmp/321</code> | |||
(massenhaftes) Ändern vom Recht fürs Eigentum von Dateien beim bisherigen Container | |||
Achtung! | |||
Die Ausführung dauert über 1 Stunde! | |||
: <code>find /tmp/321 -type f | while read S; do U="$(ls -ln "${S}" | awk '{print$3}')"; G="$(ls -ln "${S}" | awk '{print$4}')"; F=100000; chown "${F:0: -${#U}}${U}:${F:0: -${#G}}${G}" "${S}"; done</code> | |||
(massenhaftes) Ändern vom Recht fürs Eigentum von Dateien beim bisherigen Container | |||
Achtung! | |||
Die Ausführung dauert über 1 Stunde! | |||
: <code>find /tmp/321 -type d | while read S; do U="$(ls -lnd "${S}" | awk '{print$3}')"; G="$(ls -lnd "${S}" | awk '{print$4}')"; F=100000; chown "${F:0: -${#U}}${U}:${F:0: -${#G}}${G}" "${S}"; done</code> | |||
Löschen von <code>/tmp/321/var/spool/postfix/dev/-random</code> beim bisherigen Container | |||
: <code>[ -e /tmp/321/var/spool/postfix/dev/-random ] && rm -ri /tmp/321/var/spool/postfix/dev/-random</code> | |||
Löschen von <code>/var/spool/postfix/dev/-urandom</code> beim bisherigen Container | |||
: <code>[ -e /tmp/321/var/spool/postfix/dev/-urandom ] && rm -ri /tmp/321/var/spool/postfix/dev/-urandom</code> | |||
wenn das Paket <code>sudo</code> installiert ist, Ändern vom Modus von der Datei <code>/usr/bin/sudo</code> beim bisherigen Container | |||
: <code>[ -e /tmp/321/usr/bin/sudo ] && chmod u+s /tmp/321/usr/bin/sudo</code> | |||
Aushängen vom Speicher vom bisherigen Container, der geändert wurde, um den Container geändert in Betrieb nehmen zu können | |||
: <code>umount /tmp/321</code> | |||
Änderung der | |||
Achtung! | |||
Das ist ein wenig spooky. | |||
Einfach unten drunter schreiben? | |||
Es gibt (auch) verschiedene Abschnitte für jeden Snapshot. | |||
: <code>echo -e "\nunprivileged: 1" >> /etc/pve/lxc/321.conf</code> | |||
:: <code>nano /etc/pve/lxc/321.conf</code> | |||
Starten vom bisherigen Container, der geändert wurde | |||
: <code>pct start 321</code> | |||
(bei Problemen beim) Starten vom bisherigen Container, der geändert wurde, mit Aufzeichnung von möglichen Problemen | |||
:: <code>pct start --debug=1 321</code> | |||
=== Problembehebung bei der Containerisierung === | |||
: aka Troubleshooting pct | |||
==== Probĺemerkennung bei der Containerisierung ==== | |||
Starten von einem Container (LXC) im Modus für die Fehlerbehehung | |||
: <code>lxc-start -n <Containernummer> -F -l DEBUG</code> | |||
==== Problem, dass ein Container lange nicht startet ==== | |||
; Problem zur (falschen) Konfiguration zur Verwendung von IPv6: | |||
: Wenn versehentlich bei der Erstellung von einem Container bei ''Network'' was zu IPv6 (beispielsweise DHCP) konfiguriert und damit aktiviert wurde, dann wird beim Starten vom Container mehrere (etwa 5) Minuten versucht IPv6 zu verwenden. Leider gibt es in unserer Umgebung ([[Server HTW Dresden]]) kein IPv6. | |||
: Das Problem lässt sich beheben in dem bei der Konfiguration bei <tt>IPv6</tt> die voreingestellte Option <tt>Static</tt> ausgewählt wird und Einträge zu IPv6 (beispielsweise bei <tt>IPv6/CIDR</tt>) bestehen. | |||
: Im Übrigen kann dazu auch die Datei für die Konfiguration vom Container (beispielsweise mit der Nummer ''1337'') gesichtet und womöglich angepasst werden. | |||
:: <code>less /etc/pve/lxc/1337.conf</code> | |||
:: <code>nano /etc/pve/lxc/1337.conf</code> | |||
=== unterschiedliche Container === | |||
==== Containerisierung für bestimmte Betriebssysteme ==== | ==== Containerisierung für bestimmte Betriebssysteme ==== | ||
Zeile 105: | Zeile 435: | ||
: <code>pveam download</code> | : <code>pveam download</code> | ||
:: <code>pveam download cephfs debian-10-standard_10.5-1_amd64.tar.gz</code> | |||
==== Containerisierung für nicht bestimmte Betriebssysteme ==== | ==== Containerisierung für nicht bestimmte Betriebssysteme ==== | ||
==== Containerisierung für [[NixOS]] ==== | ==== Containerisierung für [[NixOS]] ==== | ||
===== Erstellung von Instanzen der Containerisierung für [[NixOS]] ===== | |||
Aktuell (2020-03) gibt es keine für [[Server/Proxmox]] angebotene Vorlage für das Betriebssystem [[NixOS]]. | Aktuell (2020-03) gibt es keine für [[Server/Proxmox]] angebotene Vorlage für das Betriebssystem [[NixOS]]. | ||
* https://nixos.wiki/wiki/Proxmox_Linux_Container | * <s>https://nixos.wiki/wiki/Proxmox_Linux_Container</s> | ||
* https://nixos.wiki/wiki/Proxmox_Virtual_Environment#LXC | |||
* https://wiki.c3d2.de/Proxmox#Proxmox_CT_NixOS | * https://wiki.c3d2.de/Proxmox#Proxmox_CT_NixOS | ||
Nachfolgend (2021-10) wurde sich damit dennoch weiter auseinandergesetzt, um zukünftig auch [[NixOS]] (mit der Vielzahl von Vorteilen) verwenden zu können. Seit 2021-10 wurde auch das PVE 7 verwendet, weswegen es zuvor vermieden wurde noch etwas für PVE 6 gangbar zu machen, was nachfolgend vielleicht nicht mehr funktioniert und viel Aufwand für die Überwindung von Hindernissen zur Nutzung und Weiternutzung entsteht. | |||
* https://pro.stura.htw-dresden.de/issues/856 | |||
* https://nixos.wiki/wiki/Talk:Proxmox_Linux_Container | |||
<s> | |||
(2022-06) NixOS 22.05 wurde zunächst auf dem Testserver als Container installiert. Dabei muss man beachten, dass der Container nicht in der Web-GUI erstellt werden darf, sondern mittels folgendem Command: | |||
<code>pct create $CTID$ cephfs:vztmpl/nixos-22.05.tar.xz --ostype unmanaged --net0 name=eth0,firewall=1,ip=dhcp,bridge=vmbr0 --storage $STORRAGE$ --unprivileged 1 --features nesting=1</code> | |||
Dabei sollte natürlich $CTID$ durch eine im Proxmox noch freie Container-ID ersetzt werden und $STORRAGE$ durch den gewünschten speicherort für den neuen Container (der Container-Template Name kann sich auch ändern). | |||
* https://pve.proxmox.com/pve-docs/pct.1.html | |||
</s> | |||
https://hydra.nixos.org/job/nixos/release-22.05/nixos.proxmoxLXC.x86_64-linux | |||
====== Besonderheiten Erstellung von Instanzen der Containerisierung für [[NixOS]] ====== | |||
* Enter Nixos Konsole wenn tty ausgewählt ist ". /etc/profile" | |||
; Options: | |||
:; Console mode: <tt>console</tt> (statt <tt>Default (tty)</tt>) | |||
===== Containerisierung für [[NixOS]] Aktualisierung ===== | |||
====== Containerisierung für [[NixOS]] Aktualisierung 21.11 ====== | |||
(optionales) Auflisten aller verfügbaren Kanäle (für Software) für [[NixOS]] | |||
: <code>nix-channel --list | grep nixos</code> | |||
<pre> | |||
nixos https://nixos.org/channels/nixos-21.05 | |||
</pre> | |||
Hinzufügen des neuen (nachfolgenden) Kanals (für Software) für [[NixOS]] (beispielhaft ''21.11'') | |||
: <code>nix-channel --add https://nixos.org/channels/nixos-21.11 nixos</code> | |||
: <code>nixos-rebuild switch --upgrade</code> | |||
<pre> | |||
unpacking channels... | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
==================== Results =================== | |||
No issues found. | |||
==================== Summary =================== | |||
Total issues: | |||
Unspecified: 0 | |||
Low: 0 | |||
Medium: 0 | |||
High: 0 | |||
</pre> | |||
<pre></pre> | |||
<pre> | |||
ln: failed to create symbolic link '/sbin/init': No such file or directory | |||
Activation script snippet 'installInitScript' failed (1) | |||
restarting systemd... | |||
setting up tmpfiles | |||
reloading the following units: dbus.service, dev-mqueue.mount, firewall.service, sys-fs-fuse-connections.mount | |||
Job failed. See "journalctl -xe" for details. | |||
restarting the following units: dhcpcd.service, network-addresses-eth0.service, nginx.service, systemd-journald.service | |||
starting the following units: acme-fixperms.service, acme-pro.stura.htw-dresden.de.timer, network-local-commands.service, network-setup.service, nix-daemon.socket, nscd.service, resolvconf.service, systemd-sysctl.service, systemd-tmpfiles-clean.timer, systemd-tmpfiles-setup-dev.service | |||
warning: error(s) occurred while switching to the new configuration | |||
</pre> | |||
: <code>nixos-rebuild switch --upgrade</code> | |||
<pre> | |||
unpacking channels... | |||
created 1 symlinks in user environment | |||
building Nix... | |||
building the system configuration... | |||
activating the configuration... | |||
setting up /etc... | |||
ln: failed to create symbolic link '/sbin/init': No such file or directory | |||
Activation script snippet 'installInitScript' failed (1) | |||
setting up tmpfiles | |||
warning: error(s) occurred while switching to the new configuration | |||
</pre> | |||
: <code>mkdir /sbin/</code> | |||
: <code>nixos-rebuild switch --upgrade</code> | |||
<pre></pre> | |||
==== Containerisierung für bestimmte Anwendungen ==== | ==== Containerisierung für bestimmte Anwendungen ==== | ||
==== Containerisierung für TurnKey ==== | |||
[[{{PAGENAME}}]] bietet verschiedene (übliche) Anwendungen als Container. Dazu werden vorbereitete Container von [[TurnKey]] ([[wikipedia:en:TurnKey Linux Virtual Appliance Library]]) verwendet. (Systeme von TurnKey verwenden auch (wie [[{{PAGENAME}}]] selbst [[Debian]] als Grundlage ([[Betriebssystem]].) | [[{{PAGENAME}}]] bietet verschiedene (übliche) Anwendungen als Container. Dazu werden vorbereitete Container von [[TurnKey]] ([[wikipedia:en:TurnKey Linux Virtual Appliance Library]]) verwendet. (Systeme von TurnKey verwenden auch (wie [[{{PAGENAME}}]] selbst [[Debian]] als Grundlage ([[Betriebssystem]].) | ||
: <code>pveam update</code> | : <code>pveam update</code> | ||
Zeile 125: | Zeile 539: | ||
: <code>pveam download</code> | : <code>pveam download</code> | ||
:: <code>pveam download cephfs debian-10-turnkey-core_16.0-1_amd64.tar.gz</code> | |||
===== Containerisierung für TurnKey ab Version 16 ===== | |||
[[#Containerisierung mit Debian 10]] | |||
===== Containerisierung für TurnKey bis Version 15 ===== | |||
Leider scheint (2020-02) für [[TurnKey]] die Möglichkeit für ''unprivileged LXC container'' nicht zu funktionieren. | |||
Mit der Version 16, also auch dem Wechsel von Version 9 zu Version 10 bei [[Debian]] als Grundlage, scheint sich das geändert zu haben. | |||
==== Containerisierung für Docker ==== | ==== Containerisierung für Docker ==== | ||
Zeile 142: | Zeile 567: | ||
* [[#Virtualisierung CoreOS]] | * [[#Virtualisierung CoreOS]] | ||
==== Containerisierung mit Debian | ==== Containerisierung für Kubernetes ==== | ||
* https://kvaps.medium.com/run-kubernetes-in-lxc-container-f04aa94b6c9c | |||
* https://gist.github.com/kvaps/25f730e0ec39dd2e5749fb6b020e71fc | |||
==== Containerisierung mit Debian 10 ==== | |||
* Jede [[#Containerisierung für bestimmte Anwendungen]] (also mit [[TurnKey]]) ist eine [[#Containerisierung mit Debian 10]]. | * Jede [[#Containerisierung für bestimmte Anwendungen]] (also mit [[TurnKey]]) ist eine [[#Containerisierung mit Debian 10]]. | ||
===== Containerisierung mit Debian 10 nesting ===== | |||
* Einschalten der [https://pve.proxmox.com/wiki/Linux_Container#pct_options Funktionalität (für Container bei [[{{PAGENAME}}]])] ''nesting'' | * Einschalten der [https://pve.proxmox.com/wiki/Linux_Container#pct_options Funktionalität (für Container bei [[{{PAGENAME}}]])] ''nesting'' | ||
*: Um bespielsweise MariaDB innerhalb von einem Container mit Debian 10 betreiben zu können, scheint Debian jedoch ein Problem mit AppAmor zu haben.[https://bugzilla.proxmox.com/show_bug.cgi?id=2281] Im Übrigen ist das bei sowohl nicht privilegierten Containern als auch privilegierten Containern. Mit dem Einschalten der standardmäßigen Option ''nesting'' für einen Container bei [[{{PAGENAME}}]] kann das Problem behoben werden. | *: Um bespielsweise MariaDB innerhalb von einem Container mit Debian 10 betreiben zu können, scheint Debian jedoch ein Problem mit AppAmor zu haben.[https://bugzilla.proxmox.com/show_bug.cgi?id=2281] Im Übrigen ist das bei sowohl nicht privilegierten Containern als auch privilegierten Containern. Mit dem Einschalten der standardmäßigen Option ''nesting'' für einen Container bei [[{{PAGENAME}}]] kann das Problem behoben werden. | ||
; beispielhaftes Problem (ohne ''nesting''): | |||
:; Umgebung: | |||
:* (2020-09) | |||
:* [[{{PAGENAME}}]] Version x.y | |||
:* [[Server/Ghost#TurnKey auf Proxmox]] ([[#Containerisierung für TurnKey ab Version 16]]) | |||
Die Anwendung startet nicht. | |||
Anzeigen vom Status (dem Problem) der Anwendung MariaDB | |||
: <code>systemctl status mariadb.service</code> | |||
<pre> | |||
* mariadb.service - MariaDB 10.3.23 database server | |||
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) | |||
Active: failed (Result: exit-code) since Wed 2020-09-16 20:35:41 CEST; 23s ago | |||
Docs: man:mysqld(8) | |||
https://mariadb.com/kb/en/library/systemd/ | |||
Sep 16 20:35:41 test-ghost systemd[1]: Starting MariaDB 10.3.23 database server... | |||
Sep 16 20:35:41 test-ghost systemd[17751]: mariadb.service: Failed to set up mount namespacin | |||
Sep 16 20:35:41 test-ghost systemd[17751]: mariadb.service: Failed at step NAMESPACE spawning | |||
Sep 16 20:35:41 test-ghost systemd[1]: mariadb.service: Control process exited, code=exited, | |||
Sep 16 20:35:41 test-ghost systemd[1]: mariadb.service: Failed with result 'exit-code'. | |||
Sep 16 20:35:41 test-ghost systemd[1]: Failed to start MariaDB 10.3.23 database server. | |||
</pre> | |||
==== Containerisierung für Proxmox Mail Gateway ==== | |||
Ein [[{{PAGENAME}}]] bietet die [https://www.proxmox.com/de/proxmox-mail-gateway spezielle Anwendung für Mail von Proxmox]: http://download.proxmox.com/images/mail/ | |||
: <code>pveam update</code> | |||
: <code>pveam available --section mail</code> | |||
: <code>pveam download</code> | |||
:: <code>pveam download cephfs proxmox-mailgateway-6.2-standard_6.2-1_amd64.tar.gz</code> | |||
=== Sicherung und Wiederherstellung von Instanzen der Containerisierung === | === Sicherung und Wiederherstellung von Instanzen der Containerisierung === | ||
Zeile 221: | Zeile 689: | ||
: <code> qmrestore VMACHINE_BACKUP NEW_VM_ID -storage STORAGENAME </code> | : <code> qmrestore VMACHINE_BACKUP NEW_VM_ID -storage STORAGENAME </code> | ||
== Erweiterbarkeit == | |||
==== Tailscale ==== | |||
Tailscale meets PVE | |||
* https://tailscale.com/kb/1133/proxmox/ | |||
* https://tailscale.com/kb/1130/lxc-unprivileged | |||
== Siehe auch == | == Siehe auch == |
Aktuelle Version vom 22. Dezember 2023, 14:06 Uhr
Administration[Bearbeiten]
web user interface[Bearbeiten]
Browser für das web user interface[Bearbeiten]
Es kann nur zu Chromium (notfalls Chrome) geraten werden. Firefox scheint nicht (ideal) geeignet zu sein.
Erreichbarkeit vom web user interface[Bearbeiten]
Standardmäßig ist das web user interface per https auf Port 8006 zu erreichen.[1]
Aktualisierung[Bearbeiten]
Aktualisierung innerhalb von Hauptversionen[Bearbeiten]
(Server View)
- (Dataceenter)
- (jeweiliger) Server
- Reiter Updates
- Reiter Refresh
- Reiter Upgrade
- Reiter Updates
- (jeweiliger) Server
- https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_system_software_updates
- https://pve.proxmox.com/pve-docs/pve-admin-guide.html#ha_manager_package_updates
Aktualisierung zwischen Hauptversionen[Bearbeiten]
Quellen für Pakete[Bearbeiten]
sources.list[Bearbeiten]
- Proxmox Version 6
- in Anlehnung an Proxmox:Wiki Install Proxmox VE on Debian Buster#Adapt your sources.list
Wahrnehmen des Fehlers (401) bei Beziehen der Quelle enterprise.proxmox.com
- Für die Quelle enterprise.proxmox.com bedarf es Zugangsdaten (die entsprechend zu vergüten sind). Ohne Zugangsdaten wird der Code (für den Fehler) 401 (fehlerhafte Autorisierung) ausgeliefert.
apt update
Hit:1 http://security.debian.org/debian-security buster/updates InRelease Hit:2 http://deb.debian.org/debian buster InRelease Hit:3 http://deb.debian.org/debian buster-updates InRelease Hit:4 http://download.proxmox.com/debian/ceph-nautilus buster InRelease Hit:5 http://download.proxmox.com/debian/pve buster InRelease Err:6 https://enterprise.proxmox.com/debian/pve buster InRelease 401 Unauthorized [IP: 2a01:7e0:0:424::249 443] Reading package lists... Done E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/buster/InRelease 401 Unauthorized [IP: 2a01:7e0:0:424::249 443] E: The repository 'https://enterprise.proxmox.com/debian/pve buster InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
Anzeigen des Datei mit dem Eintrag für diese Quelle
cat /etc/apt/sources.list.d/pve-enterprise.list
deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
Hinzufügen einer (vergleichbaren) alternativen Quelle ohne sich registrieren zu müssen
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
Resolving download.proxmox.com (download.proxmox.com)... 2a01:7e0:0:424::249, 212.224.123.70 Connecting to download.proxmox.com (download.proxmox.com)|2a01:7e0:0:424::249|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1202 (1.2K) [application/octet-stream] Saving to: '/etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg' /etc/apt/trusted.gpg.d/proxmo 100%[===============================================>] 1.17K --.-KB/s in 0s
cat /etc/apt/sources.list.d/pve-install-repo.list
deb http://download.proxmox.com/debian/pve buster pve-no-subscription
mv /etc/apt/sources.list.d/pve-enterprise.list /root/pve-enterprise.list
mv /etc/apt/sources.list.d/pve-install-repo.list /root/pve-install-repo.list
apt update
Hit:1 http://security.debian.org/debian-security buster/updates InRelease Hit:2 http://deb.debian.org/debian buster InRelease Hit:3 http://deb.debian.org/debian buster-updates InRelease Hit:4 http://download.proxmox.com/debian/ceph-nautilus buster InRelease Reading package lists... Done Building dependency tree Reading state information... Done 10 packages can be upgraded. Run 'apt list --upgradable' to see them.
apt upgrade
- Proxmox Version 5
- versteckt
ZFS[Bearbeiten]
Bei Server/Proxmox Virtual Environment gibt es keine direkte (integrierte) Verwaltung von ZFS. Es wird (größtenteils) verwendet wie alle anderen Dateisysteme. Auf der Kommandozeile geht aber alles.
Zurücksetzen der Konfiguration vom Betriebssystem auf einen vorherigen Schnappschuss von ZFS[Bearbeiten]
Auch wenn es (seitens ZFS) möglich ist das Dateisystem "unter dem Arsch" vom Betriebssystem zurückzusetzen, so sei davon abgeraten, denn laufende Dienste können damit schlecht umgehen.
- möglichst alle relevanten Dienste stoppen
- (Es ist leider unklar welche Dienste relevant sind.)
- Anzeigen lassen aller laufender Dienste
systemctl list-units --type=service --state=running
- zfs rollback
- (möglichst unverzüglich) System neu starten lassen
Proxmox Storage[Bearbeiten]
Proxmox Storage Content[Bearbeiten]
Proxmox Storage Content Disk image[Bearbeiten]
Proxmox Storage Content ISO image[Bearbeiten]
Proxmox Storage Content Container template[Bearbeiten]
Proxmox Storage Content VZDump backup file[Bearbeiten]
Proxmox Storage Content Container[Bearbeiten]
Proxmox Storage Content Snippets[Bearbeiten]
Proxmox Storage Type[Bearbeiten]
Proxmox Storage Type Directory[Bearbeiten]
Proxmox Storage Type LVM[Bearbeiten]
Proxmox Storage Type LVM-thin[Bearbeiten]
Proxmox Storage Type CephFS[Bearbeiten]
ls /mnt/pve/
cephfs
ls /mnt/pve/cephfs/
Proxmox Storage Type RDB[Bearbeiten]
ls /dev/rbd/
storage
ls /dev/rbd/storage/
Proxmox Storage Type ZFS[Bearbeiten]
Proxmox Ceph[Bearbeiten]
Ceph[Bearbeiten]
Ceph Dashboard[Bearbeiten]
Ceph rebalance[Bearbeiten]
Ceph recovery[Bearbeiten]
https://docs.ceph.com/en/latest/dev/osd_internals/backfill_reservation/ https://www.suse.com/support/kb/doc/?id=000019693
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/#backfilling https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/#backfilling
Proxmox Ceph Verwaltung von Geräten[Bearbeiten]
Ersetzen von Geräten für Massenspeicher bei Proxmox Ceph[Bearbeiten]
https://pro.stura.htw-dresden.de/issues/839
Erweiterung mit Geräten für Massenspeicher bei Proxmox Ceph[Bearbeiten]
- Gerät für Massenspeicher (Festplatte) in einen freien Schacht einschieben
- Verfügbarkeit (Ist das Gerät beim Server so angebunden, dass darauf zugegriffen werden kann?) prüfen
- Beim entsprechenden Node bei Disks sollte ein neues Gerät als fortlaufender Buchstabe in der Spalte Device beispielsweise als /dev/sdx angezeigt werden.
- Bereinigung aller möglichen Partitionen
fdisk /dev/sdx
- Entfernen aller möglichen Partitionen mit
d
- (nach der Entfernung aller möglichen Partitionen) Erstellen einer neuen Tabelle für die Partitionierung (GPT) mit
g
- (nach der Erstellung einer neuen Tabelle für die Partitionierung (GPT)) Anwendung der gemachten Änderungen durch das Schreiben mit
w
- Entfernen aller möglichen Partitionen mit
- (um die Änderung für das System richtig zu erkennen) Neustarten des Systems, etwa mit
reboot
- Verfügbarkeit (Ist das Gerät beim Server vielleicht anders angebunden, um darauf zugegriffen zu können?) prüfen
- Beim entsprechenden Node bei Disks sollte ein das neue Gerät als fortlaufender Buchstabe nach den Geräten des Systems (vor den Geräten für Ceph) in der Spalte Device beispielsweise als /dev/sdc angezeigt werden.
- beim entsprechenden Node bei Ceph und OSD die Schaltfläche Create: OSD anwählen
- beim Feld für die Auswahl Disks: das neue Gerät beispielsweise /dev/sdc anwählen
- (beim Feld für die Auswahl DB Disks: nichts anwählen (das Feld leer lassen)
- die Schaltfläche Create anwählen
- bei Ceph und OSD die Schaltfläche Reload anwählen
- Verfügbarkeit (Ist das Gerät als OSD bei Ceph angebunden?) prüfen
- (beim Datacenter bei Ceph den Vorgang zum Ausgleichen Recovery/ Rebalance: (bis zum Ende) verfolgen)
- …
Containerisierung[Bearbeiten]
Für die Containerisierung bei Server/Proxmox Virtual Environment wird LXC verwendet.
Auflisten aller bereitgestellten Container
pveam available
Bei Server/Proxmox Virtual Environment wird nach #Container für bestimmte Betriebssysteme system (also ohne einen konkreten Zweck der Anwendung angedacht zu haben) und #Container für bestimmte Anwendungen turnkeylinux. (Genau genommen gibt es noch mail, für die #Containerisierung für Proxmox Mail Gateway.)
Erstellung von Instanzen der Containerisierung[Bearbeiten]
Konfiguration von Instanzen der Containerisierung[Bearbeiten]
Änderung der Konfiguration von Instanzen der Containerisierung[Bearbeiten]
Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert[Bearbeiten]
Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert durch backup and restore[Bearbeiten]
Test durchgeführt von goeranh -> Container und VMs können restored werden, indem man auf den Server(n1-3) klickt und dort auf den Storrage b1 -> aus dieser liste kann dann selbst ein gelöschter Container wiederhergestellt werden. Es wurde das Bedenken geäußert, dass VM-IDs kollidieren, wenn ein Container gelöscht wird, ein neuer erstellt und dann der alte Container wieder restored wird. In dieser Situation wird einfach eine neue ID vergeben.
Ungetestet!
pct restore 321 /mnt/pve/cephfs/dump/vzdump-lxc-321-2020_10_11-00_14_05.tar.zst -ignore-unpack-errors 1 -unprivileged
Änderung der Konfiguration von Instanzen der Containerisierung von privilegiert zu unprivilegiert durch chown[Bearbeiten]
Der Test (2020-10-10 -11) schlug fehl! Der Test der Änderung fand bei einem Container nach der StuRa:Server/TurnKey#Aktualisierung von TurnKey 15 auf TurnKey 16 (StuRa:Server/Nextcloud#TurnKey 15) statt.
- leidiges Ergebnis
systemctl
● sys-kernel-config.mount loaded failed failed Kernel Configuration File System ● sys-kernel-debug.mount loaded failed failed Kernel Debug File System
● mariadb.service loaded failed failed MariaDB 10.3.23 database server
● systemd-update-utmp.service loaded failed failed Update UTMP about System Boot/Shutdown
● systemd-journald-audit.socket loaded failed failed Journal Audit Socket
● systemd-update-utmp.service loaded failed failed Update UTMP about System Boot/Shutdown
● systemd-journald-audit.socket loaded failed failed Journal Audit Socket
● sys-kernel-config.mount loaded failed failed Kernel Configuration File System ● sys-kernel-debug.mount loaded failed failed Kernel Debug File System
● mariadb.service loaded failed failed MariaDB 10.3.23 database server
systemctl status mariadb.service
● mariadb.service - MariaDB 10.3.23 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2020-10-11 08:59:26 CEST; 47s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 217 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 235 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 247 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/ Process: 427 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=7) Main PID: 427 (code=exited, status=7) Status: "MariaDB server is down" Oct 11 08:59:22 nextcloud systemd[1]: Starting MariaDB 10.3.23 database server... Oct 11 08:59:23 nextcloud mysqld[427]: 2020-10-11 8:59:23 0 [Note] /usr/sbin/mysqld (mysqld 10.3.23-MariaDB-0+deb10u1) starting as process 427 ... Oct 11 08:59:26 nextcloud systemd[1]: mariadb.service: Main process exited, code=exited, status=7/NOTRUNNING Oct 11 08:59:26 nextcloud systemd[1]: mariadb.service: Failed with result 'exit-code'. Oct 11 08:59:26 nextcloud systemd[1]: Failed to start MariaDB 10.3.23 database server.
- https://forum.proxmox.com/threads/31066/#post-261883 (https://forum.proxmox.com/threads/convert-privileged-to-unprivileged-container.31066/#post-261883)
Stoppen vom bisherigen Container, der geändert werden soll
pct stop 321
(optionales) Erstellen von einem Snapshot vom bisherigen Container, der geändert werden soll, um im Fall von eines Fehlschlages der Änderung den Container zurücksetzen zu können
(optionales) Erstellen von einer Datensicherung vom bisherigen Container, der geändert werden soll, um im Fall von eines Fehlschlages der Wiederherstellung von einem Snapshot den Container wiederherstellen zu können
Ersrellen von einem zeitweisen Verzeichnis (in dem die Änderung abgearbeitet werden soll)
mkdir /tmp/321
Einhängen vom Speicher vom bisherigen Container, der geändert werden soll, ohne den Container zu starten, um die Dateien ändern zu können (Der Ablageort - im Beispiel /dev/rbd/storage/vm-321-disk-0 - muss ermittelt werden. Im Beispiel ist der #Proxmox Storage Content Container im #Proxmox Storage Type RDB storage abgelegt. Im Beispiel ist die ID von der #Erstellung von Instanzen der Containerisierung 321.)
mount -o loop /dev/rbd/storage/vm-321-disk-0 /tmp/321
(massenhaftes) Ändern vom Recht fürs Eigentum von Dateien beim bisherigen Container
Achtung! Die Ausführung dauert über 1 Stunde!
find /tmp/321 -type f | while read S; do U="$(ls -ln "${S}" | awk '{print$3}')"; G="$(ls -ln "${S}" | awk '{print$4}')"; F=100000; chown "${F:0: -${#U}}${U}:${F:0: -${#G}}${G}" "${S}"; done
(massenhaftes) Ändern vom Recht fürs Eigentum von Dateien beim bisherigen Container
Achtung! Die Ausführung dauert über 1 Stunde!
find /tmp/321 -type d | while read S; do U="$(ls -lnd "${S}" | awk '{print$3}')"; G="$(ls -lnd "${S}" | awk '{print$4}')"; F=100000; chown "${F:0: -${#U}}${U}:${F:0: -${#G}}${G}" "${S}"; done
Löschen von /tmp/321/var/spool/postfix/dev/-random
beim bisherigen Container
[ -e /tmp/321/var/spool/postfix/dev/-random ] && rm -ri /tmp/321/var/spool/postfix/dev/-random
Löschen von /var/spool/postfix/dev/-urandom
beim bisherigen Container
[ -e /tmp/321/var/spool/postfix/dev/-urandom ] && rm -ri /tmp/321/var/spool/postfix/dev/-urandom
wenn das Paket sudo
installiert ist, Ändern vom Modus von der Datei /usr/bin/sudo
beim bisherigen Container
[ -e /tmp/321/usr/bin/sudo ] && chmod u+s /tmp/321/usr/bin/sudo
Aushängen vom Speicher vom bisherigen Container, der geändert wurde, um den Container geändert in Betrieb nehmen zu können
umount /tmp/321
Änderung der
Achtung! Das ist ein wenig spooky. Einfach unten drunter schreiben? Es gibt (auch) verschiedene Abschnitte für jeden Snapshot.
echo -e "\nunprivileged: 1" >> /etc/pve/lxc/321.conf
nano /etc/pve/lxc/321.conf
Starten vom bisherigen Container, der geändert wurde
pct start 321
(bei Problemen beim) Starten vom bisherigen Container, der geändert wurde, mit Aufzeichnung von möglichen Problemen
pct start --debug=1 321
Problembehebung bei der Containerisierung[Bearbeiten]
- aka Troubleshooting pct
Probĺemerkennung bei der Containerisierung[Bearbeiten]
Starten von einem Container (LXC) im Modus für die Fehlerbehehung
lxc-start -n <Containernummer> -F -l DEBUG
Problem, dass ein Container lange nicht startet[Bearbeiten]
- Problem zur (falschen) Konfiguration zur Verwendung von IPv6
- Wenn versehentlich bei der Erstellung von einem Container bei Network was zu IPv6 (beispielsweise DHCP) konfiguriert und damit aktiviert wurde, dann wird beim Starten vom Container mehrere (etwa 5) Minuten versucht IPv6 zu verwenden. Leider gibt es in unserer Umgebung (Server HTW Dresden) kein IPv6.
- Das Problem lässt sich beheben in dem bei der Konfiguration bei IPv6 die voreingestellte Option Static ausgewählt wird und Einträge zu IPv6 (beispielsweise bei IPv6/CIDR) bestehen.
- Im Übrigen kann dazu auch die Datei für die Konfiguration vom Container (beispielsweise mit der Nummer 1337) gesichtet und womöglich angepasst werden.
less /etc/pve/lxc/1337.conf
nano /etc/pve/lxc/1337.conf
unterschiedliche Container[Bearbeiten]
Containerisierung für bestimmte Betriebssysteme[Bearbeiten]
Ein Server/Proxmox Virtual Environment bietet eine Vielzahl von üblichen Varianten an Linux: http://download.proxmox.com/images/system/
pveam update
pveam available --section system
pveam download
pveam download cephfs debian-10-standard_10.5-1_amd64.tar.gz
Containerisierung für nicht bestimmte Betriebssysteme[Bearbeiten]
Containerisierung für NixOS[Bearbeiten]
Erstellung von Instanzen der Containerisierung für NixOS[Bearbeiten]
Aktuell (2020-03) gibt es keine für Server/Proxmox angebotene Vorlage für das Betriebssystem NixOS.
https://nixos.wiki/wiki/Proxmox_Linux_Container- https://nixos.wiki/wiki/Proxmox_Virtual_Environment#LXC
- https://wiki.c3d2.de/Proxmox#Proxmox_CT_NixOS
Nachfolgend (2021-10) wurde sich damit dennoch weiter auseinandergesetzt, um zukünftig auch NixOS (mit der Vielzahl von Vorteilen) verwenden zu können. Seit 2021-10 wurde auch das PVE 7 verwendet, weswegen es zuvor vermieden wurde noch etwas für PVE 6 gangbar zu machen, was nachfolgend vielleicht nicht mehr funktioniert und viel Aufwand für die Überwindung von Hindernissen zur Nutzung und Weiternutzung entsteht.
(2022-06) NixOS 22.05 wurde zunächst auf dem Testserver als Container installiert. Dabei muss man beachten, dass der Container nicht in der Web-GUI erstellt werden darf, sondern mittels folgendem Command:
pct create $CTID$ cephfs:vztmpl/nixos-22.05.tar.xz --ostype unmanaged --net0 name=eth0,firewall=1,ip=dhcp,bridge=vmbr0 --storage $STORRAGE$ --unprivileged 1 --features nesting=1
Dabei sollte natürlich $CTID$ durch eine im Proxmox noch freie Container-ID ersetzt werden und $STORRAGE$ durch den gewünschten speicherort für den neuen Container (der Container-Template Name kann sich auch ändern).
https://hydra.nixos.org/job/nixos/release-22.05/nixos.proxmoxLXC.x86_64-linux
Besonderheiten Erstellung von Instanzen der Containerisierung für NixOS[Bearbeiten]
- Enter Nixos Konsole wenn tty ausgewählt ist ". /etc/profile"
- Options
-
- Console mode
- console (statt Default (tty))
Containerisierung für NixOS Aktualisierung[Bearbeiten]
Containerisierung für NixOS Aktualisierung 21.11[Bearbeiten]
(optionales) Auflisten aller verfügbaren Kanäle (für Software) für NixOS
nix-channel --list | grep nixos
nixos https://nixos.org/channels/nixos-21.05
Hinzufügen des neuen (nachfolgenden) Kanals (für Software) für NixOS (beispielhaft 21.11)
nix-channel --add https://nixos.org/channels/nixos-21.11 nixos
nixos-rebuild switch --upgrade
unpacking channels...
==================== Results =================== No issues found. ==================== Summary =================== Total issues: Unspecified: 0 Low: 0 Medium: 0 High: 0
ln: failed to create symbolic link '/sbin/init': No such file or directory Activation script snippet 'installInitScript' failed (1) restarting systemd... setting up tmpfiles reloading the following units: dbus.service, dev-mqueue.mount, firewall.service, sys-fs-fuse-connections.mount Job failed. See "journalctl -xe" for details. restarting the following units: dhcpcd.service, network-addresses-eth0.service, nginx.service, systemd-journald.service starting the following units: acme-fixperms.service, acme-pro.stura.htw-dresden.de.timer, network-local-commands.service, network-setup.service, nix-daemon.socket, nscd.service, resolvconf.service, systemd-sysctl.service, systemd-tmpfiles-clean.timer, systemd-tmpfiles-setup-dev.service warning: error(s) occurred while switching to the new configuration
nixos-rebuild switch --upgrade
unpacking channels... created 1 symlinks in user environment building Nix... building the system configuration... activating the configuration... setting up /etc... ln: failed to create symbolic link '/sbin/init': No such file or directory Activation script snippet 'installInitScript' failed (1) setting up tmpfiles warning: error(s) occurred while switching to the new configuration
mkdir /sbin/
nixos-rebuild switch --upgrade
Containerisierung für bestimmte Anwendungen[Bearbeiten]
Containerisierung für TurnKey[Bearbeiten]
Server/Proxmox Virtual Environment bietet verschiedene (übliche) Anwendungen als Container. Dazu werden vorbereitete Container von TurnKey (wikipedia:en:TurnKey Linux Virtual Appliance Library) verwendet. (Systeme von TurnKey verwenden auch (wie Server/Proxmox Virtual Environment selbst Debian als Grundlage (Betriebssystem.)
pveam update
pveam available --section turnkeylinux
pveam download
pveam download cephfs debian-10-turnkey-core_16.0-1_amd64.tar.gz
Containerisierung für TurnKey ab Version 16[Bearbeiten]
#Containerisierung mit Debian 10
Containerisierung für TurnKey bis Version 15[Bearbeiten]
Leider scheint (2020-02) für TurnKey die Möglichkeit für unprivileged LXC container nicht zu funktionieren.
Mit der Version 16, also auch dem Wechsel von Version 9 zu Version 10 bei Debian als Grundlage, scheint sich das geändert zu haben.
Containerisierung für Docker[Bearbeiten]
Für den Betrieb von Instanzen mit Docker kann Server/Proxmox Virtual Environment, neben der dazu empfohlenen Technik der #Virtualisierung, auch Container entsprechend konfigurieren. Dazu werden unprivileged LXC container erstellt und mit zusätzlichen Berechtigungen (auf das Gesamtsystem) ausgestattet, um die von Docker erforderlichen Funktionalitäten bereitstellen zu können.
- nicht privilegierter Container
- Anscheinend kann Docker nur innerhalb von einem nicht privilegierten Container betreiben werden. (Eigentlich ist das ja sogar sehr schön, denn es erscheint schöner einen Container mit möglichst wenigen Privilegien (Berechtigungen) zu benutzen.)
- Einschalten der Funktionalität (für Container bei Server/Proxmox Virtual Environment) keyctl
- Um Docker innerhalb von einem Container betreiben zu können, scheint Docker jedoch den Systemaufruf keyctl zu benötigen. In einem standardmäßigen nicht privilegierten Container wird dieser aber als non-existent nicht gesehen, wodurch Docker nicht richtig funktionieren kann. Mit dem Einschalten der standardmäßigen Option keyctl für einen nicht privilegierten Container bei Server/Proxmox Virtual Environment kann das Problem behoben werden.
- Einschalten der Funktionalität (für Container bei Server/Proxmox Virtual Environment) nesting
- Um Docker innerhalb von einem Container betreiben zu können, scheint Docker jedoch Zugriff auf
procfs
undsysfs
zu benötigen. In einem standardmäßigen nicht privilegierten Container wird dieser aber nicht zugelassen (nicht bereitgestellt), wodurch Docker nicht richtig funktionieren kann. Mit dem Einschalten der standardmäßigen Option nesting für einen nicht privilegierten Container bei Server/Proxmox Virtual Environment kann das Problem behoben werden.
- Um Docker innerhalb von einem Container betreiben zu können, scheint Docker jedoch Zugriff auf
- #Virtualisierung als Alternative zur Containerisierung für Docker
Containerisierung für Kubernetes[Bearbeiten]
- https://kvaps.medium.com/run-kubernetes-in-lxc-container-f04aa94b6c9c
- https://gist.github.com/kvaps/25f730e0ec39dd2e5749fb6b020e71fc
Containerisierung mit Debian 10[Bearbeiten]
- Jede #Containerisierung für bestimmte Anwendungen (also mit TurnKey) ist eine #Containerisierung mit Debian 10.
Containerisierung mit Debian 10 nesting[Bearbeiten]
- Einschalten der Funktionalität (für Container bei Server/Proxmox Virtual Environment) nesting
- Um bespielsweise MariaDB innerhalb von einem Container mit Debian 10 betreiben zu können, scheint Debian jedoch ein Problem mit AppAmor zu haben.[2] Im Übrigen ist das bei sowohl nicht privilegierten Containern als auch privilegierten Containern. Mit dem Einschalten der standardmäßigen Option nesting für einen Container bei Server/Proxmox Virtual Environment kann das Problem behoben werden.
- beispielhaftes Problem (ohne nesting)
-
- Umgebung
Die Anwendung startet nicht.
Anzeigen vom Status (dem Problem) der Anwendung MariaDB
systemctl status mariadb.service
* mariadb.service - MariaDB 10.3.23 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2020-09-16 20:35:41 CEST; 23s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Sep 16 20:35:41 test-ghost systemd[1]: Starting MariaDB 10.3.23 database server... Sep 16 20:35:41 test-ghost systemd[17751]: mariadb.service: Failed to set up mount namespacin Sep 16 20:35:41 test-ghost systemd[17751]: mariadb.service: Failed at step NAMESPACE spawning Sep 16 20:35:41 test-ghost systemd[1]: mariadb.service: Control process exited, code=exited, Sep 16 20:35:41 test-ghost systemd[1]: mariadb.service: Failed with result 'exit-code'. Sep 16 20:35:41 test-ghost systemd[1]: Failed to start MariaDB 10.3.23 database server.
Containerisierung für Proxmox Mail Gateway[Bearbeiten]
Ein Server/Proxmox Virtual Environment bietet die spezielle Anwendung für Mail von Proxmox: http://download.proxmox.com/images/mail/
pveam update
pveam available --section mail
pveam download
pveam download cephfs proxmox-mailgateway-6.2-standard_6.2-1_amd64.tar.gz
Sicherung und Wiederherstellung von Instanzen der Containerisierung[Bearbeiten]
Sicherung von Instanzen der Containerisierung[Bearbeiten]
Wiederherstellung von Instanzen der Containerisierung[Bearbeiten]
Wiederherstellung von Instanzen der Containerisierung über die grafische Oberfläche[Bearbeiten]
Wiederherstellung von Instanzen der Containerisierung über die Kommandozeile[Bearbeiten]
Backups werden momentan (Version 5.2) in /var/lib/vz/dump
gespeichert.
pct restore NEW_CONTAINER_ID CONTAINER_BACKUP
Für den Fall, dass es den vorherigen Storage nicht gibt, kann mit den Storage angeben:
pct restore NEW_CONTAINER_ID CONTAINER_BACKUP -storage STORAGENAME
Virtualisierung[Bearbeiten]
Konfiguration der Virtualisierung[Bearbeiten]
Benutzung der Funktionalität der Unterstützung der Hardware zur Virtualisierung[Bearbeiten]
https://pve.proxmox.com/wiki/Nested_Virtualization#Enable_Nested_Hardware-assisted_Virtualization
Standardmäßig benutzt Server/Proxmox Virtual Environment nicht die Funktionalität der Unterstützung der Hardware zur Virtualisierung. Standardmäßig ist aber die Benutzung der Funktionalität möglich, wozu die Konfiguration von Server/Proxmox Virtual Environment einfach geändert werden kann.
Es kann Gründe für und gegen die Benutzung der Funktionalität der Unterstützung der Hardware zur Virtualisierung geben.
- dagegen
- Es ist nicht möglich eine Migration von Instanzen durch Virtualisierung im laufenden Betrieb vorzunehmen.
- dafür
- Es ist eine höhere Leistungsfähigkeit bei Instanzen durch Virtualisierung gegeben.
Virtualisierung Debian[Bearbeiten]
Es sollte einen unabdingbaren Grund geben warum nicht die #Containerisierung Debian genutzt wird.
Bei der Virtualisierung von Debian ab 2020 geht es ausschließlich um Debian (Version) 10 oder was tagesaktuell gerade stable ist und tagesaktuell die Basis für Server/Proxmox Virtual Environment ist.
Virtualisierung CentOS[Bearbeiten]
Es sollte einen unabdingbaren Grund geben warum nicht die #Containerisierung CentOS genutzt wird.
Bei der Virtualisierung von CentOS ab 2020 geht es ausschließlich um CentOS (Version) 8.
Virtualisierung OpenBSD[Bearbeiten]
Virtualisierung FreeBSD[Bearbeiten]
Virtualisierung CoreOS[Bearbeiten]
Virtualisierung RancherOS[Bearbeiten]
Der Betrieb von RancherOS kommt eigentlich nur in Frage, wenn wegen Docker eine Basis virtualisiert werden muss und die Vorteile gegenüber der #Virtualisierung Debian erkennbar gemacht werden können.
- https://rancher.com/docs/os/v1.x/en/installation/workstation/boot-from-iso/
https://rancher.com/docs/os/v1.x/en/installation/workstation/docker-machine/#using-docker-machine-with-proxmox-ve
Sicherung und Wiederherstellung von Instanzen der Virtualisierung[Bearbeiten]
Sicherung von Instanzen der Virtualisierung[Bearbeiten]
Wiederherstellung von Instanzen der Virtualisierung[Bearbeiten]
Wiederherstellung von Instanzen der Virtualisierung über die grafische Oberfläche[Bearbeiten]
Wiederherstellung von Instanzen der Virtualisierung über die Kommandozeile[Bearbeiten]
qmrestore VMACHINE_BACKUP NEW_VM_ID -storage STORAGENAME
Erweiterbarkeit[Bearbeiten]
Tailscale[Bearbeiten]
Tailscale meets PVE