StuRa:Server/srs1337: Unterschied zwischen den Versionen

Aus Wiki StuRa HTW Dresden
Zur Navigation springen Zur Suche springen
 
(64 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
== Betriebssystem ==
== Betriebssystem ==


[[FreeNAS]]
[[FreeNAS]] 9.3


Die Entscheidung für [[FreeNAS]] als Betriebssystem fiel bei der [[Intern:Server/Aktualisierung/2015]].
Die Entscheidung für [[FreeNAS]] als Betriebssystem fiel bei der [[Intern:Server/Aktualisierung/2015]].
Zeile 43: Zeile 43:


==== Durchführung der Installation von FreeNAS ====
==== Durchführung der Installation von FreeNAS ====
2015-03-12 22:31
; First Boot
* SWAP hinzufügen
*: <code>gpart add -t freebsd-swap -i 3 -s 8g da0</code>
*: <code>gpart add -t freebsd-swap -i 3 -s 8g da1</code>
*: <code>gpart add -t freebsd-swap -i 3 -s 8g da2</code>
* ZFS Partitionen für Daten erstellen (Rest der Festplatten)
*: <code>gpart add -t freebsd-zfs -i 4 -a 4k da0</code>
*: <code>gpart add -t freebsd-zfs -i 4 -a 4k da1</code>
*: <code>gpart add -t freebsd-zfs -i 4 -a 4k da2</code>
* Systemupdate
* Reboot
; FreeNAS Einstellungen
* System/Informationen
*: Enable powerd (Power Saving Daemon):
*: Show console messages in the footer:
*: MOTD banner: StuRa DickeBerta
* Root CA und CA erstellt
* Zpool für Daten erstellen
*: <code>zpool create zroot raidz /dev/da0p4 /dev/da1p4 /dev/da2p4</code>
*: <code>zfs set checksum=sha256 zroot</code>
*: <code>zfs set compression=lz4 zroot</code>
*: <code>zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/zroot/jails zroot/jails</code>
* zpool struktur<!-- ?!? -->
** <small>nicht <code>zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/mnt freebsd-boot/mnt</code></small>
* zpool export<!-- ?!? -->
*: <code>zpool export zroot</code>
* per GUI jetzt importieren<!-- "Importieren vom zpool über die Oberfläche von FreeNAS"? -->
*: ''Storage'' -> ''Import Volume''
* Smartmontools Hack
*: <code>$EDITOR /usr/local/etc/smartd.conf</code>
<pre>
DEVICESCAN
</pre>
* Logfiles umlinken
*: ''System'' -> ''Systemdatasets'' -> ''zroot/ für Syslog/Database''
* SSH auf FreeNAS
** ssh logon<!-- ?!? -->
*: <code>chmod 0700 /root/.ssh</code>
*: <code>$EDITOR /root/.ssh/authorized_keys</code>
*:* keys einfügen
*: <code>chmod 0600 /root/.ssh/authorized_keys</code>
*: (per Web GUI) ''Services'' -> ''SSH'' -> ''Einstellung''
*:: ''Advanced Mode''
*::: Feld ''Extra options''
<pre>
PubkeyAuthentication yes
</pre>
** SSH Neustarten


==== Anpassungen nach der Installation von FreeNAS ====
==== Anpassungen nach der Installation von FreeNAS ====
===== /etc/sysctl.conf =====
<pre>
# SysV Interprozesskommunikation
security.jail.sysvipc_allowed=1
</pre>
===== Versand von Mails von FreeNAS =====
* System
** Email
*** From email:
***: ''srs1337@stura''…
*** Outgoing mail server:
***: ''mail.stura''…
**: …
* Account
** Users
*** View Users
**** root
***** E-mail:
*****: ''srs1337@stura''…
===== zsh als übliche Shell für root =====
* Account
** Users
*** View Users
**** root
***** Shell:
*****: zsh
=== Dokumentation FreeNAS ===
http://doc.freenas.org/9.3/
==== besonders Nennenswertes zu FreeNAS ====
Dieser Abschnitt dient zur Benennung, gar Erklärung, von Belangen, die sich durch [[FreeNAS]] ergeben und auf [[Server/srs1337]] nennenswert eingesetzt werden. Praktisch soll das auch eine kleine Einführung werden.
; virtuelle Instanzen:
* spezielle Jails als Plugin (für [[FreeNAS]])
** Für das [[FreeNAS]] wie wir es betreiben gibt es eine eine Vielzahl von sogenannten Plugins.
*** http://download.freenas.org/plugins/9/x64/
** Jedoch haben wir bisher nur für den Fall vom Plugin [[ownCloud]] Anwendung.
* klassische einfach Jails (als [[FreeBSD]])
* Instanzen bei der einzigen Jail mit [[VirtualBox]]
; Paketverwaltung:
* pkg
** http://pkg.freebsd.org/freebsd:9:x86:64/latest/All/
* pbi
** http://download.freenas.org/plugins/9/x64/
==== Anpassungen ====
===== Berichtigung vom Fehler wegen der fehlenden Datei ''/usr/local/www/freenasUI/static/favicon.ico'' =====
Beim Durchsehen vom Log (''/var/log/*'') gab es die ''open() "/usr/local/www/freenasUI/static/favicon.ico" failed (2: No such file or directory)''. Dieser "Schönheitsfehler" wurde sich gleich angenommen.
: <code>cd /usr/local/www/freenasUI/static/</code>
: <code>ln -s freenas_favicon.ico favicon.ico</code>
=== Bedienung ===
==== Beobachtung vom Gerät ====
Anzeigen der Temperatur aller einzelnen Prozessoren
: <code>sysctl dev.cpu.{0..$(expr $(sysctl -n hw.ncpu) - 1)}.temperature</code>
<pre>
dev.cpu.0.temperature: 49.0C
dev.cpu.1.temperature: 45.0C
dev.cpu.2.temperature: 47.0C
dev.cpu.3.temperature: 43.0C
</pre>
== Administration ==
=== Administration per http ===
Viele Dienste zur Administration sind per http bzw. https verfügbar. Zum Schutz vor unerlaubten Zugriff sollen die Dienst nicht einfach erreichbar sein.
{|
|-
|+ Dienste zur [[#Andministration per http]]
|-
! Dienst
! interne Adresse
! Zugangsdaten
|-
| [[dicke Berta#Integrated Management Module]]
| 192.168.100.12:80
| ?!?<!-- @PLITC -->
|-
| [[#Administration FreeNAS]]
| 192.168.100.112:443
| ?!?<!-- @PLITC -->
|-
| [[Server/srs1337/VirtualBox]]
| 192.168.100.212:80
| ?!?<!-- @PLITC -->
|-
|}
Zum Erreichen der [[w:de:private IP-Adresse#Adressbereiche | privaten Adressen für IPv4]] (''192.168.''….…) muss eine entsprechende Verbindung zum [[Server/srs1337]] hergestellt sein.
; bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen:
: <code>ssh -p ''<port-for-ssh-on-server>'' -L 10012:192.168.100.12:80 -L 10112:192.168.100.112:443 -L 10212:192.168.100.212:80 -i ''~/.ssh/<id_srs1337>'' root@srs1337.stura.htw-dresden.de</code>
:* http://localhost:10012
:* https://localhost:10112
:* http://localhost:10212
; Eintragen der Konfigurationen (in ''~/.ssh/config'') für das übliche Verbindung per ssh mit [[Server/srs1337]]
: <code>$EDITOR [[man:ssh_config|~/.ssh/config]]</code>
<pre>
    Host srs1337
        HostName <host>
        Port <port>
        User root
        IdentityFile ~/.ssh/<id_srs1337>
        LocalForward 10012 192.168.100.012:80
        LocalForward 10112 192.168.100.112:443
        LocalForward 10212 192.168.100.212:80
</pre>
; einen (dynamische) Verbindung an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen lokalen Socket knüpfen:
: <code>ssh -D ''<port-for-local-socket>'' -p ''<port-for-ssh-on-server>'' -i ''.ssh/<id_srs1337>'' root@''<host>''</code>
:* ''port-for-local-socket'' ist die (nahezu) frei wählbare Nummer für einen Port, der für einen Socket auf der lokale Maschine (von der sich auf den [[Server/srs1337]] verbunden wird) für das Adressieren zum Eingang der Verbindung dienen soll.
:*: Verbindung per ssh wird mit [[wikipedia:de:SOCKS]] als Proxy verwendet.
:* ''port-for-ssh-on-server'' ist die Nummer vom Port, der beim [[Server/srs1337]] für ssh festgelegt wurde. Standardmäßig ist das Port 22.<!-- Der standardmäßig sollte "auch ausreichend sein". -->
:*: Wer ohnehin drauf ist, kann sich <code>grep Port /etc/sshd_config</code> kann sich die Konfiguration anschauen.
:* ''.ssh/id_srs1337'' ist der (nahezu) frei gewählte Ort der eigenen Datei mit dem ssh-key, dessen öffentlicher key auf dem [[Server/srs1337]] abgelegt wurde.
:* ''host'' ist die Adresse für IPv4 oder der hostname für den es einen entsprechenden Eintrag für DNS gibt.
; per ''~/.ssh/config'' automatisiert bei jeder Verbindung (ssh srs1337)
    Host srs1337
        HostName ''<host>''
        Port    ''<port>''
        User    root
        IdentityFile ''~/.ssh/<id_srs1337>''
        DynamicForwarding ''<port-for-local-socket>''
; web browser zum Nutzen der Verbindung mit dem lokal verknüpften Socket als Proxy per SOCKS anpassen
: Beispiel Mozilla Firefox
* Bei der [https://support.mozilla.org/de/kb/Einstellungen-Fenster--Erweitert-Abschnitt#w_verbindungseinstellungen Verbindungseinstellungen]<small>[https://support.mozilla.org/en-US/kb/advanced-panel-accessibility-browsing-network-upda#w_connection-settings-dialog english]</small> Anpassungen vornehmen.
** ''Manuelle Proxy-Konfiguration:'' auswählen
*** bei ''SOCKS-Host:'' ''localhost'' eintragen; auf der gleichen Zeile bei ''Port:'' die Nummer von ''$port-for-local-socket'' eintragen
** ''OK'' bestätigen
=== Administration per [[wikipedia:de:Virtual Network Computing | vnc]] ===
Mit einem Programm für vnc, z. B. [[wikipedia:en:krdc]], kann der Bildschirm (,die Tastatur, usw.) der virtuellen Maschine über erreicht und genutzt werden.
{|
|-
|+ Dienste zur [[#Andministration per vpn]]
|-
| [[Server/srs1337/VirtualBox]]/[[Server/srs29|srs29]]
| 192.168.100.212:9000
| ?!?<!-- @PLITC -->
|-
|}
; bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen:
: <code>ssh -p ''<port-for-ssh-on-server>'' -L 19212:192.168.100.212:9000 -i ''~/.ssh/<id_srs1337>'' root@''<host>''</code>
:* vnc://localhost:19212
=== Administration FreeNAS ===
* [[#Andministration per http]]
** http://192.168.100.112
==== Aktualisierung ====
{| class="wikitable"
|-
| colspan="4" |
Es sollten der Prozess des Aktualisierens immer nach folgender Reihenfolge erfolgen:
* Zuerst sollten die mit virtuellen Maschinen gestoppt (gern auch noch vorher aktualisiert) werden.
* Dann sollten die Jails gestoppt (gern auch noch vorher aktualisiert) werden.
* Letztlich sollte der Host (hier [[Server/srs1337]]) aktualisiert und entsprechende (der Notwendigkeit) neu gestartet werden.
|-
| colspan="4" |
===== Aktualisierung Jails =====
|-
! colspan="2" | Jail mit VirtualBox
! rowspan="2" | Jail für ein plugin von FreeNAS
! rowspan="2" |standardmäßige Jail
|-
! <!-- womöglich weitere Betriebssystem neben Debian, als virtuelle Maschine -->
! Debian als virtuelle Maschine
|-
|
|
; Anmelden:
Verbinden per ssh
<!--
auf srs29 per ssh einloggen
-->
: <code>ssh -p $port-for-ssh-on-server -i ~/.ssh/$id_srs$ root@$host</code>
; ("optional") prüfend umschauen:
spuckt kernel fehler (aka kernelmonitoring)
: <code>dmesg</code>
schauen, ob irgendwelche dienste, die laufen sollten nicht mehr laufen
: <code>systemctl --stat=failed</code>
<pre>
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
</pre>
zum live-debugging:
: <code>journalctl -f</code>
alte schule (statt journalctl)
: <code>cat /var/log/syslogc</code>
<!--
: <code>cat /etc/source…?!?</code>
-->
; Aktualisieren:
: <code>apt-get update</code>
: <code>apt-get upgrade</code>
: <code>apt-get dist-upgrade</code>
: <code>apt-get autoremove</code>
; Herunterfahren:
: <code>poweroff</code>
oder
: <code>shutdown -h now</code>
; VirtualBox:
Kontrolle des Zustandes (''power off'') bei VirtualBox
: http://localhost:10212/
; Stoppen der Jail von VirtualBox:
: https://localhost:10112/
:: Jails -> stop
|
* Jails als pluginjail nach updates prüfen
*: Plugin ->
* Stoppen der Jails als pluginjail
*: Jails -> stop
|
; weitere ("standard") Jails nach Aktualisierungen prüfen und auf den aktuellen Stand bringen:
: prüfen, ob es wichtige (sicherheitsrelevante) Aktualisierungen gibt
:: davon kann abhängig gemacht werden, ob es wichtig ist zu aktualisieren
:: <code>pkg audit -F</code>
: mindestens bei wichtigen Aktualisierungen sollte die Aktualisierungen vorgenommen werden
:: <code>pkg update</code>
:: <code>pkg upgrade</code>
; bei Jails mit Datenbanken mit SQL (nicht SQL-Lite):
:; Anmelden:
:: Verbinden per ssh
::: <code>ssh</code>
::: <code>service mysql-server stop</code>
; Stoppen der standardmäßige Jails:
: https://localhost:10112/
:: Jails -> stop
|-
| colspan="4" |
===== Aktualisierung FreeNAS =====
|-
| colspan="4" |
System -> Update -> Update
Neustart erfolgt automatisch nach dem Aktualisieren
|-
| colspan="4" |
===== nach der Aktualisierung =====
|-
|
|
ISPConfig
* Schauen, ob aktuell log files geschrieben werden
*: z.B. bei ''Überwachung'' -> ''iptables'' schauen
*:* Nicht verwundert sein, dass nur alle 5&nbsp;Minuten neue Daten bereitgestellt werden.
*: ''Überwachung'' (-> ''Übersicht zeigen'') -> ''mehr Infos''
*:* Nicht verwundert sein, dass hinsichtlich Aktualisierungen des Systems nur alle 1&nbsp;Stunde neue Daten bereitgestellt werden.
*:*: Daher wird eingangs die Anzeige noch blau unterlegt sein (was für ''Hinweis'' steht). Später sollte die Anzeige dann grün (was für ''alles bestens'' steht) unterlegt sein.
|
|
|-
|}
{| class="wikitable"
|-
| colspan="4" |
Genau genommen sollten vor der Aktualisierung einer jeden Instanz eine Datensicherung gemacht werden. Das sollte mindestens mit einer geeignete Art zum Festhalten des letzten Standes (vor der Aktualisierung) geschehen. Die bequeme Möglichkeit zur Erstellung von einem Snapshot mit ZFS sollte genutzt werden.
|-
| colspan="4" |
===== Dienste in Ruhe versetzen =====
|-
! colspan="2" | Jail mit VirtualBox
! rowspan="2" | Jail für ein plugin von FreeNAS
! rowspan="2" |standardmäßige Jail
|-
! <!-- womöglich weitere Betriebssystem neben Debian, als virtuelle Maschine -->
! Debian als virtuelle Maschine
|-
|
|
|
* Dienst per GUI (FreeNAS style) abschalten
*: Plugins -> Installed -> "Schalter" auf ''Off' "bringen"
* Stoppen der Jails als pluginjail
*: Jails -> stop
|
|-
| colspan="4" |
===== aktuellen (ruhenden) Stand festhalten =====
|-
| colspan="4" |
===== [[#Aktualisierung Jails]] =====
|-
| colspan="4" |
===== Dienst wieder in Bewegung setzen =====
|-
| colspan="4" |
Eigentlich ist ein erneutes in Bewegung setzen überflüssig, denn im Szenario ist davon auszugehen, dass auch die [[#Aktualisierung FreeNAS]] vorgenommen wird. Zum Abschluss der [[#Aktualisierung FreeNAS]] wird ohnehin das (gesamte) System neu gestartet. Beim Neustart vom gesamten (System) werden folglich auch alle Jails neu gestartet. Für das Starten der einzelnen Jails ist der jeweilige Eintrag (welcher auch über die GUI vorgenommen werden kann) der Option ''autostart'' entscheidend. Ist die Option ''autostart'' angewählt, so wird die Jail auch nach dem Neustart vom (gesamten) System neu gestartet.
Dennoch kann nachfolgend in diesem Abschnitt beschrieben werden, wie die einzelnen Jails und ihre Dienste nach dem [[#aktuellen (ruhenden) Stand festhalten]] wieder in Bewegung gesetzt werden (können).
|-
|}
== Jails ==
==== Bezeichnung von Jails ====
; Siehe auch: [[Diskussion:Server/srs1337#Bezeichnung von Jails]]
* Auch wenn es bei der Eingabe so scheint, dass dies möglich wäre, so sollte die Bezeichnung einer Jail (bei [[#FreeNAS]]&nbsp;9.3 nie 88&nbsp;Zeichen überschreiten. Warden, das Tool für das Management von Jails kann damit nicht umgehen. Es wird eine unnütze Jail (samt Dataset usw.) erstellt. (Im Übrigen ist aktuell noch fragwürdig wie solcher Schmutz wieder entfernt werden kann.)
==== Jail einrichten ====
; Siehe auch: [[freebsd-handbuch:jails-tuning]]&nbsp;<small>([[freebsd-handbook:jails-tuning]])</small>
===== Jail mit [[#Andministration per http]] einrichten =====
; Siehe auch: [http://doc.freenas.org/9.3/freenas_jails.html#adding-jails FreeNAS:9.3:Adding Jails]
; IPv4 default gateway:
: <tt>141.56.50.254</tt>
; IPv6 Autoconfigure:
: angewählt
; sysctl:
Bei ''Sysctls:'' können verschiedene Optionen für [[freebsd:SystemTuning#SYSCTL_TUNING|besonderes zu ''sysctl'']] hinzugefügt werden. Bei der Verwendung von mehreren Optionen sind sie hintereinander weg ausschließlich mit <code>,</code> (Komma) trennt einzutragen.
: <code>[[freebsd-man:jail | allow.raw_sockets]]=true</code>
: <code>[[freebsd-man:jail | allow.sysvipc]]=1</code>
=== Jails außerhalb vom web user interface von [[FreeNAS]] verwalten ===
Achtung!
Dieser Abschnitt beinhaltet ausschließlich "Hacks".
Beim [[#Betriebssystem]] FreeNAS (9) ist die Verwaltung von Jails über die das web user interface vorgesehen. Es ist (aber) bekannt, dass [[#Betriebssystem]] FreeNAS (9) <code>warden</code> als Werkzeug zur Verwaltung von Jails benutzt. Praktisch kann auch <code>warden</code> ohne das web user interface von FreeNAS benutzt werden. Dabei wird aber schnell über den Funktionsumfang von FreeNAS hinaus gearbeitet. Praktisch kann die Verwendung von <code>warden</code> (als Werkzeug ohne die Benutzung vom web user interface von FreeNAS), dazu führen, dass die Jails nicht ordentlich in FreeNAS verwaltet (und demnach auch betrieben) werden können. (Etwa das Importieren und Exportieren, gar das Klonen, ist von FreeNAS so nicht vom Umfang an Funktionalitäten nicht angedacht. Etwa Einträge in der Datenbank von FreeNAS werden durch <code>warden</code> nicht vorgenommen. Demnach gibt es Fehler beim web user interface. So können "manipulierte" Jails nicht über das web user interface verwaltet werden.)
Letztlich können die Jails nicht ordentlich über das web user interface verwendet werden. Alle Änderungen der Konfiguration der Jail muss über <code>warden</code> erfolgen.
: <code>warden help</code>
: <code>warden help get</code>
==== Jail klonen ====
* zu klonende Jail stoppen
* zu klonende Jail exportieren
*: [[#Jail exportieren]]
* Zum Klonen ist der der erstellte Export der zu klonenden Jail zu importieren.
*: [[#Jail importieren]]
** Es ist zwangsläufig eine andere Adresse für IPv4 anzugeben.
**: Anderenfalls erfolgt eine Fehlermeldung.
**:: (In diesem Fall wir angenommen das die zu klonende Jail die Adresse für IPv4 ''141.56.50.123'' hat (beziehungsweise hatte).)
<pre>
ERROR: A Jail already exists with IP: 141.56.50.123/24
</pre>
* (zu klonende Jail (für den weiteren Betrieb wieder) starten)
* geklonte Jail anpassen
** IP-Adresse?
** (usw.)?
* geklonte Jail starten (und Funktionalität testen)
* Einstellungen, die für die Funktion in der zu klonende Jail vorgenommen wurden, für den Betrieb der geklonte Jail anpassen (und Funktionalität testen)
* (die geklonten Jail nutzen, als ob es eine normale eigenständige Jail wäre)
==== Jail exportieren ====
Für das Exportieren von Jails wurde ein Ordner neuer Ordner erstellt. (Eigentlich wäre es clever gewesen ein eigenständiges Dataset (mit ZFS) zu erstellen).
: <code>mkdir zroot/export</code>
Exportieren der Jail ''jail'' in das dafür vorgesehene Verzeichnis
: Achtung! Das Exportieren einer Jail kann längere Zeit dauern. (Praktisch wird auch die gesamte Jail gepackt. Allein das Packen dauert längere Zeit.)
: <code>warden export ''jail'' --dir=''/zroot/export''</code>
<pre>
Creating compressed archive of jail... Please Wait...
</pre>
==== Jail importieren ====
Exportieren der Jail aus der Datei 'jail.wdn'' (Export der zu klonenden Jail) in eine geklonte Jail ''jail_clone''
: <code>warden import ''jail.wdn'' --host=''jail_clone''</code>
: oder mit der Bestimmung einer (nicht verwendeten) Adresse für IPv4
:: <code>warden import ''jail''.wdn --host=''jail_clone'' --ipv4=141.56.50.115/24</code>
===== importierte Jail zum Laufen bringen =====
Achtung!
Dieser Abschnitt ist nicht ordentlich dokumentiert.
Er ist die Zusammensuchen nach dem erfolgreichen Rumgehacke!
(erster - wohl erfolgloser - Versuch für das) Starten der geklonte Jail ''jail_clone''
: <code>warden start ''jail_clone''</code>
<pre>
warden start jail_clone
Mounting user-supplied file-systems
ifconfig: AUTOCONF: bad value
jail -c path=/mnt/zroot/jails/jail_clone ip4.addr=141.56.50.123/24 ip6.addr=AUTOCONF/ host.hostname=jail_jail allow.raw_sockets=true persist
jail: ip6.addr: not an IPv6 address: AUTOCONF
ERROR: Failed starting jail with above command...
Unmounting /mnt/zroot/jails/jail_clone/proc
</pre>
(optionales) Starten einer beliebigen anderen (nicht geklonten) Jail (zum Lernen)
: <code>warden start ''uncloned-jail''</code>
<pre>
warden start uncloned-jail     
Mounting user-supplied file-systems
jail -c path=/mnt/zroot/jails/uncloned-jail name=uncloned-jail host.hostname=uncloned-jail allow.raw_sockets=true persist vnet=new
Setting IPv4 address: 141.56.50.123/24
inet6_enable: YES -> YES
ip6addrctl_enable: YES -> YES
rtsold_enable: YES -> YES
ifconfig_epair12b_ipv6: inet6 accept_rtadv auto_linklocal -> inet6 accept_rtadv auto_linklocal
add net default: gateway 141.56.50.254
route: writing to routing socket: File exists
add net default: gateway 141.56.50.254 fib 0: route already in table
Starting jail with: /etc/rc
rtsold not running? (check /var/run/rtsold.pid).
Starting rtsold.
</pre>
Abgefrickelt!
: <code>jail -c path=/mnt/zroot/jails/jail_clone name=jail_clone host.hostname=jail_clone allow.raw_sockets=true persist vnet=new</code>
: <code>warden set vnet-enable jail_clone</code>
: <code>warden set ipv4 jail_clone 141.56.50.123</code>
(erneuter Versuch für das) Starten der geklonte Jail ''jail_clone''
: <code>warden import start ''jail_clone''</code>
== Plugins ==
==== Plugins einrichten ====
Plugins werden grundsätzlich als eigenständige Jail erstellt. Somit können sie auch als solche "normal" verwaltet werden. Zusätzlich haben Plugins die Funktionalität, dass der angebotene Dienst direkt über die Oberfläche von FreeNAS an- und abgeschaltet werden kann.
===== Probleme bei und durch das Einrichten von einem neuen Plugin =====
; Konflikt zu IP-Adressen durch die Verwendung der von FreeNAS automatisch vergebene IP-Adresse
Bei der Erstellung der Jail für das Plugin gibt es keine Möglichkeit die IP-Adresse festzulegen. Es wird die bei FreeNAS "fortlaufende" IP-Adresse verwendet. Das ist für die Verwendung beim StuRa nicht geeignet.
So kann es dazu kommen, dass bei der Erstellung von einem Plugin (auch wenn dieses nur getestet werden soll) eine feste IP-Adresse verwendet (vergeben) wird, die bereits von einer anderen Instanz verwendet wird. Beispielsweise folgt nach der IP-Adresse von [[srs2]] ''141.56.50.2'' (auf dem [[Server/srs1337]]) direkt die IP-Adresse von [[srd2]] ''141.56.50.3''. Demnach kommt es zu einem Konflikt bei der Erstellung eines neuen Plugins. Es muss der Jail vom Plugin eine freie IP-Adresse zugewiesen werden.
; Konflikt zu IP-Adressen wegen möglicher nicht direkt freier IP-Adressen
Leider ist nicht genau bekannt welche Bereiche es an IP-Adressen gibt, welchen Zweck sie haben und welche IP-Adressen sie umfassen. Daher: Obacht!
== Storage ==
===== Trennung der Daten nach Zweck =====
; Hintergrund:
Wünschenswert ist eine Trennung zwischen
* den Daten, die verwaltet werden und
*: Daten der Benutzerinnen und Benutzer
*:: "Nutzdaten"
* den Daten mit denen verwaltet wird
*: Daten für das Programm der
*:: "Systemdaten"
. Insbesondere im Zusammenhang mit der Anwendung ''snapshot'' "will mensch das ja haben". Angenommen es muss, wegen Fehlern in Software, auf einen alten Stand der Version der Software zurückgegangen werden, sollten ja aber die Daten von den Benutzerinnen und Benutzern seit dem alten Stand nicht einfach verloren sein. Da nicht üblich ist, dass mit einer nachfolgenden Version der Software die Daten der Benutzerinnen und Benutzer wesentlich anderes verwaltet werden (vielleicht gar einen neues Prinzip des Verwalten der Daten angewendet wird), können sie nahezu unabhängig betrachtet werden. Demnach können (sollten) sie in unterschiedlichen Datensätzen verwaltet werden.
; Erstellen eines eigenen Datensatzes (für ZFS) für die Daten des [[StuRa]]
{{Achtung|
: Die nachfolgend benannte Art und Weise gilt nicht als Ideal.
:: Es sollte die grafische Oberfläche (siehe [[#Administration per http]]) verwendet werden.
}}
: ''zroot'' ist die Bezeichnung des Pools (ZFS)
: <code>zfs create -o checksum=sha256 -o compression=lz4 zroot/data</code>
===== Trennung der Daten für innerhalb von [[Server/Cloud]] =====
; Erstellen von zwei Datensätzen für die Instanz [[ownCloud]] ([[Server/Cloud]])
: Beim Pool (ZFS) ''zroot'' wurde bereits ein Datensatz ''data'' erstellt, wo nun weitere spezielle Datensätze erstellt werden können.
: <code>zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud</code>
: <code>zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud/media</code>
* ''owncloud_1'' ist die Bezeichnung der Jail für die Jail als Plugin owncloud für FreeNAS.
<!-- Erklären was hier passiert. -->
: <code>mv /mnt/zroot/jails/owncloud_1/media /mnt/zroot/jails/owncloud_1/media_DATEN_15.05.2015</code>
: <code>mkdir /mnt/zroot/jails/owncloud_1/media</code>
: <code>chown www:www /mnt/zroot/jails/owncloud_1/media</code>
: <code>chmod 0770 /mnt/zroot/jails/owncloud_1/media</code>
* <!-- "Ausformulieren" -->per WebGUI dann zroot/data/owncloud/media nach /mnt/zroot/jails/owncloud_1/media, mit nullfs, mounten lassen
==== Datasets ====
{{Achtung|
: Es gibt eine Vielzahl von Datasets, die in diesem Abschnitt bisher noch nicht benannt und erklärt wurde.
:: Gern kann das geändert werden. Dazu sollen (mindestens grob) die Datasets benannt und ihr Dasein und der Umgang mit ihnen erklärt werden.
}}
===== Dataset ''zroot/lpreserver'' =====
''lpreserver'' dient als Dataset für die Replikation für von Datasets (auch gesamten Pools) mit ZFS. Die Bezeichnung orientiert sich am Befehl <code>lpreserver</code>, womit die Replikation einfach möglich ist.
Exemplarisch und zur Kontrolle der Funktionalität findet dort die Replikation eines Pools regelmäßig statt. Auch andere Menschen, die ZFS verwenden mögen sich gern an der stetigen Kontrolle aktiv beteiligen.
Die dazugehörigen Datasets mögen nach den Bezeichnungen der Accounts von den einzelnen Benutzerinnen und Benutzern von [[srs2]] bezeichnet werden.
Längerfristig wäre das Verbinden mit einer Jail (Verwendung eines Datasets in einer Jail) wünschenswert.
===== <s>Dataset ''zroot/mig''</s> =====
[[{{ns:102}}:Server/cluster#ZFS TrueNAS offline]]
===== <s>Dataset ''zroot/MIGRATION''</s> =====
[[{{ns:102}}:Server/cluster#ZFS TrueNAS offline]]


== frühere Betrieb ==
== frühere Betrieb ==
Zeile 55: Zeile 616:


== Siehe auch ==
== Siehe auch ==
* [[Intern:Server/srs1337]]
* [[Server/dicke Berta]]
* [[Server/dicke Berta]]



Aktuelle Version vom 15. Januar 2022, 12:06 Uhr

srs1337 ist die Bezeichnung für das System auf dem Server dicke Berta.

Betriebssystem[Bearbeiten]

FreeNAS 9.3

Die Entscheidung für FreeNAS als Betriebssystem fiel bei der Intern:Server/Aktualisierung/2015.

Im Übrigen war eigentlich FreeBSD i. V. m. bhyve vorgesehen. Es fehlte die Unterstützung von grub2-bhyve für die Hardware vom Server dicke Berta. freebsd-port:grub2-bhyve wäre aber notwendig für den Betrieb von Debian unter bhyve gewesen. Die Möglichkeit zum (ergänzenden) Betrieb von Debian (oder anderen verbreiteten Linux für Server) war eine der eigenen Anforderungen.

Installation von FreeNAS[Bearbeiten]

Vorbereitung der Installation von FreeNAS[Bearbeiten]

sonst übliche Vorbereitung der Installation von FreeNAS[Bearbeiten]

Die (Vorbereitung der) Installation von FreeNAS[1] erfolgt eigentlich schlichtweg durch

  • das [2]Beziehen von einer iso-Datei, welche schon als startfähig vorbereitet ist,
  • das [3]Erstellen von einem Startmedium mit der iso-Datei und
  • das Starten von dem Startmedium auf der Maschine, wo FreeNAS betrieben werden soll.
besondere Vorbereitung der Installation von FreeNAS[Bearbeiten]
besondere Bedingungen für die Installation von FreeNAS bei Server/srs1337

FreeNAS muss, entgegen des üblichen Prozedere, auf der Festplatte betrieben werden. Mangels des Zugriffes auf BIOS (Das Passwort für das BIOS von Server/dicke Berta ist nicht bekannt.) ist keine Setzen der bevorzugten Priorität (etwa für einen USB-Stick, wovon FreeNAS betrieben werden würde) möglich.

Auch ist das Betreiben des Betriebssystems auf einem USB-Stick "bescheiden". Die Haltbarkeit von einem USB-Stick für eine solche Verwendung erscheint nicht gut. Eine Ausfallsicherung, etwa durch Redundanz auf einem weiteren USB-Stick, erscheint nur bedingt sinnvoll.

In Anbetracht der fehlenden Möglichkeit von einem Neustart von Server/dicke Berta mit der Priorität (festgelegt durch das BIOS) auf einen USB-Stick ist dies gar ausgeschlossen.

Ein Teil von allen Festplatten soll zum Betreiben und als Spiegel für das Betriebssystem genutzt werden. Das Prozedere beim Installieren von FreeNAS sieht aber vor ein gesamtes Gerät (Speichermedium) zu verwenden. In Anbetracht von 3 Festplatten zu je 500 GB erscheint das Verwenden einer gesamten Festplatte für das Betriebssystem unangemessen. Insbesondere gilt das beim Wunsch zum Spiegeln auf mindestens eine andere Gerät.

besondere Erstellung eines Startmediums für die Installation von FreeNAS bei Server/srs1337

16 GB sollen für FreeNAS als Speicherplatz bereitgestellt werden.

Auf jede der 3 Festplatten sollen Speicherplatz für das Betreiben von FreeNAS mit geringer Ausfallsicherheit bereitgestellt werden.

Demnach wurde sich eine selbst passende iso-Datei erstellt.

  • Zentral wurde dabei eigentlich nur die install.sh[4] modifiziert.

Durchführung der Installation von FreeNAS[Bearbeiten]

2015-03-12 22:31

First Boot
  • SWAP hinzufügen
    gpart add -t freebsd-swap -i 3 -s 8g da0
    gpart add -t freebsd-swap -i 3 -s 8g da1
    gpart add -t freebsd-swap -i 3 -s 8g da2
  • ZFS Partitionen für Daten erstellen (Rest der Festplatten)
    gpart add -t freebsd-zfs -i 4 -a 4k da0
    gpart add -t freebsd-zfs -i 4 -a 4k da1
    gpart add -t freebsd-zfs -i 4 -a 4k da2
  • Systemupdate
  • Reboot
FreeNAS Einstellungen
  • System/Informationen
    Enable powerd (Power Saving Daemon):
    Show console messages in the footer:
    MOTD banner: StuRa DickeBerta
  • Root CA und CA erstellt
  • Zpool für Daten erstellen
    zpool create zroot raidz /dev/da0p4 /dev/da1p4 /dev/da2p4
    zfs set checksum=sha256 zroot
    zfs set compression=lz4 zroot
    zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/zroot/jails zroot/jails
  • zpool struktur
    • nicht zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/mnt freebsd-boot/mnt
  • zpool export
    zpool export zroot
  • per GUI jetzt importieren
    Storage -> Import Volume
  • Smartmontools Hack
    $EDITOR /usr/local/etc/smartd.conf
DEVICESCAN
  • Logfiles umlinken
    System -> Systemdatasets -> zroot/ für Syslog/Database
  • SSH auf FreeNAS
    • ssh logon
    chmod 0700 /root/.ssh
    $EDITOR /root/.ssh/authorized_keys
    • keys einfügen
    chmod 0600 /root/.ssh/authorized_keys
    (per Web GUI) Services -> SSH -> Einstellung
    Advanced Mode
    Feld Extra options
PubkeyAuthentication yes
    • SSH Neustarten

Anpassungen nach der Installation von FreeNAS[Bearbeiten]

/etc/sysctl.conf[Bearbeiten]
# SysV Interprozesskommunikation
security.jail.sysvipc_allowed=1
Versand von Mails von FreeNAS[Bearbeiten]
  • System
    • Email
      • From email:
        srs1337@stura
      • Outgoing mail server:
        mail.stura
  • Account
    • Users
      • View Users
        • root
          • E-mail:
            srs1337@stura
zsh als übliche Shell für root[Bearbeiten]
  • Account
    • Users
      • View Users
        • root
          • Shell:
            zsh

Dokumentation FreeNAS[Bearbeiten]

http://doc.freenas.org/9.3/

besonders Nennenswertes zu FreeNAS[Bearbeiten]

Dieser Abschnitt dient zur Benennung, gar Erklärung, von Belangen, die sich durch FreeNAS ergeben und auf Server/srs1337 nennenswert eingesetzt werden. Praktisch soll das auch eine kleine Einführung werden.

virtuelle Instanzen
Paketverwaltung

Anpassungen[Bearbeiten]

Berichtigung vom Fehler wegen der fehlenden Datei /usr/local/www/freenasUI/static/favicon.ico[Bearbeiten]

Beim Durchsehen vom Log (/var/log/*) gab es die open() "/usr/local/www/freenasUI/static/favicon.ico" failed (2: No such file or directory). Dieser "Schönheitsfehler" wurde sich gleich angenommen.

cd /usr/local/www/freenasUI/static/
ln -s freenas_favicon.ico favicon.ico

Bedienung[Bearbeiten]

Beobachtung vom Gerät[Bearbeiten]

Anzeigen der Temperatur aller einzelnen Prozessoren

sysctl dev.cpu.{0..$(expr $(sysctl -n hw.ncpu) - 1)}.temperature
dev.cpu.0.temperature: 49.0C
dev.cpu.1.temperature: 45.0C
dev.cpu.2.temperature: 47.0C
dev.cpu.3.temperature: 43.0C

Administration[Bearbeiten]

Administration per http[Bearbeiten]

Viele Dienste zur Administration sind per http bzw. https verfügbar. Zum Schutz vor unerlaubten Zugriff sollen die Dienst nicht einfach erreichbar sein.

Dienste zur #Andministration per http
Dienst interne Adresse Zugangsdaten
dicke Berta#Integrated Management Module 192.168.100.12:80 ?!?
#Administration FreeNAS 192.168.100.112:443 ?!?
Server/srs1337/VirtualBox 192.168.100.212:80 ?!?

Zum Erreichen der privaten Adressen für IPv4 (192.168.….…) muss eine entsprechende Verbindung zum Server/srs1337 hergestellt sein.

bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen
ssh -p <port-for-ssh-on-server> -L 10012:192.168.100.12:80 -L 10112:192.168.100.112:443 -L 10212:192.168.100.212:80 -i ~/.ssh/<id_srs1337> root@srs1337.stura.htw-dresden.de
Eintragen der Konfigurationen (in ~/.ssh/config) für das übliche Verbindung per ssh mit Server/srs1337
$EDITOR ~/.ssh/config
    Host srs1337
        HostName <host>
        Port <port>
        User root
        IdentityFile ~/.ssh/<id_srs1337>
        LocalForward 10012 192.168.100.012:80
        LocalForward 10112 192.168.100.112:443
        LocalForward 10212 192.168.100.212:80
einen (dynamische) Verbindung an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen lokalen Socket knüpfen
ssh -D <port-for-local-socket> -p <port-for-ssh-on-server> -i .ssh/<id_srs1337> root@<host>
  • port-for-local-socket ist die (nahezu) frei wählbare Nummer für einen Port, der für einen Socket auf der lokale Maschine (von der sich auf den Server/srs1337 verbunden wird) für das Adressieren zum Eingang der Verbindung dienen soll.
    Verbindung per ssh wird mit wikipedia:de:SOCKS als Proxy verwendet.
  • port-for-ssh-on-server ist die Nummer vom Port, der beim Server/srs1337 für ssh festgelegt wurde. Standardmäßig ist das Port 22.
    Wer ohnehin drauf ist, kann sich grep Port /etc/sshd_config kann sich die Konfiguration anschauen.
  • .ssh/id_srs1337 ist der (nahezu) frei gewählte Ort der eigenen Datei mit dem ssh-key, dessen öffentlicher key auf dem Server/srs1337 abgelegt wurde.
  • host ist die Adresse für IPv4 oder der hostname für den es einen entsprechenden Eintrag für DNS gibt.
per ~/.ssh/config automatisiert bei jeder Verbindung (ssh srs1337)
   Host srs1337
       HostName <host>
       Port     <port>
       User     root
       IdentityFile ~/.ssh/<id_srs1337>
       DynamicForwarding <port-for-local-socket>
web browser zum Nutzen der Verbindung mit dem lokal verknüpften Socket als Proxy per SOCKS anpassen
Beispiel Mozilla Firefox
  • Bei der Verbindungseinstellungenenglish Anpassungen vornehmen.
    • Manuelle Proxy-Konfiguration: auswählen
      • bei SOCKS-Host: localhost eintragen; auf der gleichen Zeile bei Port: die Nummer von $port-for-local-socket eintragen
    • OK bestätigen

Administration per vnc[Bearbeiten]

Mit einem Programm für vnc, z. B. wikipedia:en:krdc, kann der Bildschirm (,die Tastatur, usw.) der virtuellen Maschine über erreicht und genutzt werden.

Dienste zur #Andministration per vpn
Server/srs1337/VirtualBox/srs29 192.168.100.212:9000 ?!?
bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen
ssh -p <port-for-ssh-on-server> -L 19212:192.168.100.212:9000 -i ~/.ssh/<id_srs1337> root@<host>
  • vnc://localhost:19212

Administration FreeNAS[Bearbeiten]

Aktualisierung[Bearbeiten]

Es sollten der Prozess des Aktualisierens immer nach folgender Reihenfolge erfolgen:

  • Zuerst sollten die mit virtuellen Maschinen gestoppt (gern auch noch vorher aktualisiert) werden.
  • Dann sollten die Jails gestoppt (gern auch noch vorher aktualisiert) werden.
  • Letztlich sollte der Host (hier Server/srs1337) aktualisiert und entsprechende (der Notwendigkeit) neu gestartet werden.
Aktualisierung Jails[Bearbeiten]
Jail mit VirtualBox Jail für ein plugin von FreeNAS standardmäßige Jail
Debian als virtuelle Maschine
Anmelden

Verbinden per ssh

ssh -p $port-for-ssh-on-server -i ~/.ssh/$id_srs$ root@$host
("optional") prüfend umschauen

spuckt kernel fehler (aka kernelmonitoring)

dmesg

schauen, ob irgendwelche dienste, die laufen sollten nicht mehr laufen

systemctl --stat=failed
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

zum live-debugging:

journalctl -f

alte schule (statt journalctl)

cat /var/log/syslogc
Aktualisieren
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove
Herunterfahren
poweroff

oder

shutdown -h now
VirtualBox

Kontrolle des Zustandes (power off) bei VirtualBox

http://localhost:10212/
Stoppen der Jail von VirtualBox
https://localhost:10112/
Jails -> stop
  • Jails als pluginjail nach updates prüfen
    Plugin ->
  • Stoppen der Jails als pluginjail
    Jails -> stop
weitere ("standard") Jails nach Aktualisierungen prüfen und auf den aktuellen Stand bringen
prüfen, ob es wichtige (sicherheitsrelevante) Aktualisierungen gibt
davon kann abhängig gemacht werden, ob es wichtig ist zu aktualisieren
pkg audit -F
mindestens bei wichtigen Aktualisierungen sollte die Aktualisierungen vorgenommen werden
pkg update
pkg upgrade
bei Jails mit Datenbanken mit SQL (nicht SQL-Lite)
Anmelden
Verbinden per ssh
ssh
service mysql-server stop
Stoppen der standardmäßige Jails
https://localhost:10112/
Jails -> stop
Aktualisierung FreeNAS[Bearbeiten]

System -> Update -> Update

Neustart erfolgt automatisch nach dem Aktualisieren

nach der Aktualisierung[Bearbeiten]

ISPConfig

  • Schauen, ob aktuell log files geschrieben werden
    z.B. bei Überwachung -> iptables schauen
    • Nicht verwundert sein, dass nur alle 5 Minuten neue Daten bereitgestellt werden.
    Überwachung (-> Übersicht zeigen) -> mehr Infos
    • Nicht verwundert sein, dass hinsichtlich Aktualisierungen des Systems nur alle 1 Stunde neue Daten bereitgestellt werden.
      Daher wird eingangs die Anzeige noch blau unterlegt sein (was für Hinweis steht). Später sollte die Anzeige dann grün (was für alles bestens steht) unterlegt sein.


Genau genommen sollten vor der Aktualisierung einer jeden Instanz eine Datensicherung gemacht werden. Das sollte mindestens mit einer geeignete Art zum Festhalten des letzten Standes (vor der Aktualisierung) geschehen. Die bequeme Möglichkeit zur Erstellung von einem Snapshot mit ZFS sollte genutzt werden.

Dienste in Ruhe versetzen[Bearbeiten]
Jail mit VirtualBox Jail für ein plugin von FreeNAS standardmäßige Jail
Debian als virtuelle Maschine
  • Dienst per GUI (FreeNAS style) abschalten
    Plugins -> Installed -> "Schalter" auf Off' "bringen"
  • Stoppen der Jails als pluginjail
    Jails -> stop
aktuellen (ruhenden) Stand festhalten[Bearbeiten]
#Aktualisierung Jails[Bearbeiten]
Dienst wieder in Bewegung setzen[Bearbeiten]

Eigentlich ist ein erneutes in Bewegung setzen überflüssig, denn im Szenario ist davon auszugehen, dass auch die #Aktualisierung FreeNAS vorgenommen wird. Zum Abschluss der #Aktualisierung FreeNAS wird ohnehin das (gesamte) System neu gestartet. Beim Neustart vom gesamten (System) werden folglich auch alle Jails neu gestartet. Für das Starten der einzelnen Jails ist der jeweilige Eintrag (welcher auch über die GUI vorgenommen werden kann) der Option autostart entscheidend. Ist die Option autostart angewählt, so wird die Jail auch nach dem Neustart vom (gesamten) System neu gestartet.

Dennoch kann nachfolgend in diesem Abschnitt beschrieben werden, wie die einzelnen Jails und ihre Dienste nach dem #aktuellen (ruhenden) Stand festhalten wieder in Bewegung gesetzt werden (können).

Jails[Bearbeiten]

Bezeichnung von Jails[Bearbeiten]

Siehe auch
Diskussion:Server/srs1337#Bezeichnung von Jails
  • Auch wenn es bei der Eingabe so scheint, dass dies möglich wäre, so sollte die Bezeichnung einer Jail (bei #FreeNAS 9.3 nie 88 Zeichen überschreiten. Warden, das Tool für das Management von Jails kann damit nicht umgehen. Es wird eine unnütze Jail (samt Dataset usw.) erstellt. (Im Übrigen ist aktuell noch fragwürdig wie solcher Schmutz wieder entfernt werden kann.)

Jail einrichten[Bearbeiten]

Siehe auch
freebsd-handbuch:jails-tuning (freebsd-handbook:jails-tuning)
Jail mit #Andministration per http einrichten[Bearbeiten]
Siehe auch
FreeNAS:9.3:Adding Jails
IPv4 default gateway
141.56.50.254
IPv6 Autoconfigure
angewählt
sysctl

Bei Sysctls: können verschiedene Optionen für besonderes zu sysctl hinzugefügt werden. Bei der Verwendung von mehreren Optionen sind sie hintereinander weg ausschließlich mit , (Komma) trennt einzutragen.

allow.raw_sockets=true
allow.sysvipc=1

Jails außerhalb vom web user interface von FreeNAS verwalten[Bearbeiten]

Achtung!
Dieser Abschnitt beinhaltet ausschließlich "Hacks".

Beim #Betriebssystem FreeNAS (9) ist die Verwaltung von Jails über die das web user interface vorgesehen. Es ist (aber) bekannt, dass #Betriebssystem FreeNAS (9) warden als Werkzeug zur Verwaltung von Jails benutzt. Praktisch kann auch warden ohne das web user interface von FreeNAS benutzt werden. Dabei wird aber schnell über den Funktionsumfang von FreeNAS hinaus gearbeitet. Praktisch kann die Verwendung von warden (als Werkzeug ohne die Benutzung vom web user interface von FreeNAS), dazu führen, dass die Jails nicht ordentlich in FreeNAS verwaltet (und demnach auch betrieben) werden können. (Etwa das Importieren und Exportieren, gar das Klonen, ist von FreeNAS so nicht vom Umfang an Funktionalitäten nicht angedacht. Etwa Einträge in der Datenbank von FreeNAS werden durch warden nicht vorgenommen. Demnach gibt es Fehler beim web user interface. So können "manipulierte" Jails nicht über das web user interface verwaltet werden.)

Letztlich können die Jails nicht ordentlich über das web user interface verwendet werden. Alle Änderungen der Konfiguration der Jail muss über warden erfolgen.

warden help
warden help get

Jail klonen[Bearbeiten]

  • zu klonende Jail stoppen
  • zu klonende Jail exportieren
    #Jail exportieren
  • Zum Klonen ist der der erstellte Export der zu klonenden Jail zu importieren.
    #Jail importieren
    • Es ist zwangsläufig eine andere Adresse für IPv4 anzugeben.
      Anderenfalls erfolgt eine Fehlermeldung.
      (In diesem Fall wir angenommen das die zu klonende Jail die Adresse für IPv4 141.56.50.123 hat (beziehungsweise hatte).)
ERROR: A Jail already exists with IP: 141.56.50.123/24
  • (zu klonende Jail (für den weiteren Betrieb wieder) starten)
  • geklonte Jail anpassen
    • IP-Adresse?
    • (usw.)?
  • geklonte Jail starten (und Funktionalität testen)
  • Einstellungen, die für die Funktion in der zu klonende Jail vorgenommen wurden, für den Betrieb der geklonte Jail anpassen (und Funktionalität testen)
  • (die geklonten Jail nutzen, als ob es eine normale eigenständige Jail wäre)

Jail exportieren[Bearbeiten]

Für das Exportieren von Jails wurde ein Ordner neuer Ordner erstellt. (Eigentlich wäre es clever gewesen ein eigenständiges Dataset (mit ZFS) zu erstellen).

mkdir zroot/export

Exportieren der Jail jail in das dafür vorgesehene Verzeichnis

Achtung! Das Exportieren einer Jail kann längere Zeit dauern. (Praktisch wird auch die gesamte Jail gepackt. Allein das Packen dauert längere Zeit.)
warden export jail --dir=/zroot/export
Creating compressed archive of jail... Please Wait...

Jail importieren[Bearbeiten]

Exportieren der Jail aus der Datei 'jail.wdn (Export der zu klonenden Jail) in eine geklonte Jail jail_clone

warden import jail.wdn --host=jail_clone
oder mit der Bestimmung einer (nicht verwendeten) Adresse für IPv4
warden import jail.wdn --host=jail_clone --ipv4=141.56.50.115/24
importierte Jail zum Laufen bringen[Bearbeiten]
Achtung!
Dieser Abschnitt ist nicht ordentlich dokumentiert.
Er ist die Zusammensuchen nach dem erfolgreichen Rumgehacke!

(erster - wohl erfolgloser - Versuch für das) Starten der geklonte Jail jail_clone

warden start jail_clone
warden start jail_clone
Mounting user-supplied file-systems
ifconfig: AUTOCONF: bad value
jail -c path=/mnt/zroot/jails/jail_clone ip4.addr=141.56.50.123/24 ip6.addr=AUTOCONF/ host.hostname=jail_jail allow.raw_sockets=true persist
jail: ip6.addr: not an IPv6 address: AUTOCONF
ERROR: Failed starting jail with above command...
Unmounting /mnt/zroot/jails/jail_clone/proc

(optionales) Starten einer beliebigen anderen (nicht geklonten) Jail (zum Lernen)

warden start uncloned-jail
warden start uncloned-jail      
Mounting user-supplied file-systems
jail -c path=/mnt/zroot/jails/uncloned-jail name=uncloned-jail host.hostname=uncloned-jail allow.raw_sockets=true persist vnet=new
Setting IPv4 address: 141.56.50.123/24
inet6_enable: YES -> YES
ip6addrctl_enable: YES -> YES
rtsold_enable: YES -> YES
ifconfig_epair12b_ipv6: inet6 accept_rtadv auto_linklocal -> inet6 accept_rtadv auto_linklocal
add net default: gateway 141.56.50.254
route: writing to routing socket: File exists
add net default: gateway 141.56.50.254 fib 0: route already in table
Starting jail with: /etc/rc
rtsold not running? (check /var/run/rtsold.pid).
Starting rtsold.

Abgefrickelt!

jail -c path=/mnt/zroot/jails/jail_clone name=jail_clone host.hostname=jail_clone allow.raw_sockets=true persist vnet=new
warden set vnet-enable jail_clone
warden set ipv4 jail_clone 141.56.50.123

(erneuter Versuch für das) Starten der geklonte Jail jail_clone

warden import start jail_clone

Plugins[Bearbeiten]

Plugins einrichten[Bearbeiten]

Plugins werden grundsätzlich als eigenständige Jail erstellt. Somit können sie auch als solche "normal" verwaltet werden. Zusätzlich haben Plugins die Funktionalität, dass der angebotene Dienst direkt über die Oberfläche von FreeNAS an- und abgeschaltet werden kann.

Probleme bei und durch das Einrichten von einem neuen Plugin[Bearbeiten]
Konflikt zu IP-Adressen durch die Verwendung der von FreeNAS automatisch vergebene IP-Adresse

Bei der Erstellung der Jail für das Plugin gibt es keine Möglichkeit die IP-Adresse festzulegen. Es wird die bei FreeNAS "fortlaufende" IP-Adresse verwendet. Das ist für die Verwendung beim StuRa nicht geeignet.

So kann es dazu kommen, dass bei der Erstellung von einem Plugin (auch wenn dieses nur getestet werden soll) eine feste IP-Adresse verwendet (vergeben) wird, die bereits von einer anderen Instanz verwendet wird. Beispielsweise folgt nach der IP-Adresse von srs2 141.56.50.2 (auf dem Server/srs1337) direkt die IP-Adresse von srd2 141.56.50.3. Demnach kommt es zu einem Konflikt bei der Erstellung eines neuen Plugins. Es muss der Jail vom Plugin eine freie IP-Adresse zugewiesen werden.

Konflikt zu IP-Adressen wegen möglicher nicht direkt freier IP-Adressen

Leider ist nicht genau bekannt welche Bereiche es an IP-Adressen gibt, welchen Zweck sie haben und welche IP-Adressen sie umfassen. Daher: Obacht!

Storage[Bearbeiten]

Trennung der Daten nach Zweck[Bearbeiten]
Hintergrund

Wünschenswert ist eine Trennung zwischen

  • den Daten, die verwaltet werden und
    Daten der Benutzerinnen und Benutzer
    "Nutzdaten"
  • den Daten mit denen verwaltet wird
    Daten für das Programm der
    "Systemdaten"

. Insbesondere im Zusammenhang mit der Anwendung snapshot "will mensch das ja haben". Angenommen es muss, wegen Fehlern in Software, auf einen alten Stand der Version der Software zurückgegangen werden, sollten ja aber die Daten von den Benutzerinnen und Benutzern seit dem alten Stand nicht einfach verloren sein. Da nicht üblich ist, dass mit einer nachfolgenden Version der Software die Daten der Benutzerinnen und Benutzer wesentlich anderes verwaltet werden (vielleicht gar einen neues Prinzip des Verwalten der Daten angewendet wird), können sie nahezu unabhängig betrachtet werden. Demnach können (sollten) sie in unterschiedlichen Datensätzen verwaltet werden.

Erstellen eines eigenen Datensatzes (für ZFS) für die Daten des StuRa
Achtung
Die nachfolgend benannte Art und Weise gilt nicht als Ideal.
Es sollte die grafische Oberfläche (siehe #Administration per http) verwendet werden.
zroot ist die Bezeichnung des Pools (ZFS)
zfs create -o checksum=sha256 -o compression=lz4 zroot/data
Trennung der Daten für innerhalb von Server/Cloud[Bearbeiten]
Erstellen von zwei Datensätzen für die Instanz ownCloud (Server/Cloud)
Beim Pool (ZFS) zroot wurde bereits ein Datensatz data erstellt, wo nun weitere spezielle Datensätze erstellt werden können.
zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud
zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud/media
  • owncloud_1 ist die Bezeichnung der Jail für die Jail als Plugin owncloud für FreeNAS.
mv /mnt/zroot/jails/owncloud_1/media /mnt/zroot/jails/owncloud_1/media_DATEN_15.05.2015
mkdir /mnt/zroot/jails/owncloud_1/media
chown www:www /mnt/zroot/jails/owncloud_1/media
chmod 0770 /mnt/zroot/jails/owncloud_1/media
  • per WebGUI dann zroot/data/owncloud/media nach /mnt/zroot/jails/owncloud_1/media, mit nullfs, mounten lassen

Datasets[Bearbeiten]

Achtung
Es gibt eine Vielzahl von Datasets, die in diesem Abschnitt bisher noch nicht benannt und erklärt wurde.
Gern kann das geändert werden. Dazu sollen (mindestens grob) die Datasets benannt und ihr Dasein und der Umgang mit ihnen erklärt werden.
Dataset zroot/lpreserver[Bearbeiten]

lpreserver dient als Dataset für die Replikation für von Datasets (auch gesamten Pools) mit ZFS. Die Bezeichnung orientiert sich am Befehl lpreserver, womit die Replikation einfach möglich ist.

Exemplarisch und zur Kontrolle der Funktionalität findet dort die Replikation eines Pools regelmäßig statt. Auch andere Menschen, die ZFS verwenden mögen sich gern an der stetigen Kontrolle aktiv beteiligen.

Die dazugehörigen Datasets mögen nach den Bezeichnungen der Accounts von den einzelnen Benutzerinnen und Benutzern von srs2 bezeichnet werden.

Längerfristig wäre das Verbinden mit einer Jail (Verwendung eines Datasets in einer Jail) wünschenswert.

Dataset zroot/mig[Bearbeiten]

Intern:Server/cluster#ZFS TrueNAS offline

Dataset zroot/MIGRATION[Bearbeiten]

Intern:Server/cluster#ZFS TrueNAS offline

frühere Betrieb[Bearbeiten]

Betrieb bis 2015-03-09[Bearbeiten]

Siehe auch[Bearbeiten]