Bearbeiten von „Geschichte/Server/top3/Storagekonzept“

Aus UUGRN

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
 +
== ZFS ==
 +
[[ZFS]] soll (mindestens) in der Version 28 zum Einsatz kommen.
  
 +
== Datasets ==
 +
Pro Dataset lassen sich zahlreiche Parameter einstellen, die die Datensicherheit, die Geschwindigkeit, Kompression, Deduplikation etc beinhalten. Dazu gehören auch sicherheitsrelevante Properties, etwa noexec.
 +
 +
=== Layout 1 ===
 +
Alle Jails bestehen aus mehreren ZFS Datasets, die jeweils zu kompletten Jails zusammen gemountet werden:
 +
<pre>
 +
Dataset                        Mountpoint              Properties
 +
rpool/ROOT/top3-current        /                      ...
 +
rpool/ROOT/top3-previous        /                      ...
 +
rpool/usr                      /usr                    ...
 +
rpool/var                      /var                    ...
 +
rpool/var/crash                /var/crash              ...
 +
rpool/usr/ports                /usr/ports              ...
 +
rpool/jails                    /jails                  ...
 +
rpool/jails/root                /jails                  ...
 +
rpool/jails/root/foo.uugrn.org  /jails/foo.uugrn.org    ...
 +
rpool/jails/root/bar.uugrn.org  /jails/bar.uugrn.org    ...
 +
...
 +
rpool/jails/var/foo.uugrn.org  /jails/foo.uugrn.org/var        ...
 +
...
 +
rpool/jails/log/foo.uugrn.org  /jails/foo.uugrn.org/var/log    ...
 +
...
 +
rpool/jails/tmp/foo.uugrn.org  /jails/foo.uugrn.org/tmp        ...
 +
...
 +
rpool/jails/local/foo.uugrn.org /jails/foo.uugrn.org/usr/local  ...
 +
...
 +
rpool/jails/etc/foo.uugrn.org  /jails/foo.uugrn.org/etc        ...
 +
...
 +
rpool/jails/data/foo.uugrn.org  /jails/foo.uugrn.org/data      ...
 +
...
 +
rpool/jails/distfiles/foo.uugrn.org    /jails/foo.uugrn.org/var/ports/distfiles        ...
 +
...
 +
rpool/jails/packages/foo.uugrn.org      /jails/foo.uugrn.org/var/ports/packages        ...
 +
...
 +
rpool/shared/ports              /shared/usr/ports              ...
 +
rpool/shared/ports/distfiles    /shared/usr/ports/distfiles    ...
 +
rpool/shared/ports/packages-8.2-release /shared/usr/ports/packages ...
 +
</pre>
 +
 +
 +
=== Layout 2 ===
 +
Ähnlich wie Layout 1 bestehen Jails aus mehrere ZFS-Volumens, allerdings werden die Jails beim Starten erst durch Nullmounts tatsächlich in die Zielstruktur gemountet. Das bedeutet weniger ZFS-Datasets, dafür aber pro Jail eine eigene /etc/fstab. Außerdem können gemeinsam genutzte Verzeichnisse read-only in allen jails reingemountet werden, insbesondere /usr/ports/* innerhalb aller Jails.
 +
 +
<pre>
 +
ZFS Dataset                    ZFS Mountpoint          Properties      Jail-Mount
 +
rpool/ROOT/top3-current        /                      ...            -
 +
rpool/ROOT/top3-old            /                      ...            -
 +
rpool/usr                      /usr                    ...            -
 +
rpool/var                      /var                    ...            -
 +
rpool/var/crash                /var/crash              ...            -
 +
rpool/usr/ports                /usr/ports              ...            -
 +
rpool/jails/root                /data/jails/root        ...            /jails/<jailname>
 +
        +-- foo.uugrn.org      /data/jails/root/foo.uugrn.org          /jails/foo.uugrn.org/
 +
        +-- bar.uugrn.org      /data/jails/root/bar.uugrn.org          /jails/bar.uugrn.org/
 +
rpool/jails/var                /data/jails/var        ...            /jails/<jailname>/var
 +
        +-- foo.uugrn.org      /data/jails/var/foo.uugrn.org          /jails/foo.uugrn.org/var
 +
        +-- bar.uugrn.org      /data/jails/var/bar.uugrn.org          /jails/bar.uugrn.org/var
 +
rpool/jails/log                /data/jails/var/log    ...            /jails/<jailname>/var/log
 +
rpool/jails/local              /data/jails/usr/local  ...            /jails/<jailname>/usr/local
 +
rpool/jails/data                /data/jails/data        ...            /jails/<jailname>/data
 +
rpool/jails/tmp                /data/jails/tmp        ...            /jails/<jailname>/tmp
 +
rpool/jails/etc                /data/jails/etc        ...            /jails/<jailname>/etc
 +
rpool/jails/ports              /data/jails/distfiles  ...            /jails/<jailname>/var/ports
 +
rpool/jails/ports/distfiles    /data/jails/distfiles  ...            /jails/<jailname>/var/ports/distfiles
 +
rpool/jails/ports/packages      /data/jails/packages    ...            /jails/<jailname>/var/ports/packages
 +
rpool/shared                    /data/jails/shared              ...    -
 +
rpool/shared/ports              /data/jails/shared/ports (!)    ...    /jails/<jailname>/usr/ports            (r/o)
 +
                                /data/jails/shared/ports (!)            /jails/foo.uugrn.org/usr/ports          (r/o)
 +
                                /data/jails/shared/ports (!)            /jails/bar.uugrn.org/usr/ports          (r/o) 
 +
rpool/shared/distfiles          /data/jails/shared/distfiles    ...    /jails/<jailname>/usr/ports/distfiles  (r/o)
 +
                                /data/jails/shared/distfiles (!)        /jails/foo.uugrn.org/usr/ports/packages        (r/o) 
 +
                                /data/jails/shared/distfiles (!)        /jails/bar.uugrn.org/usr/ports/packages        (r/o) 
 +
rpool/shared/packages          /data/jails/shared/packages    ...    /jails/<jailname>/usr/ports/packages            (r/o)
 +
                                /data/jails/shared/packages (!)        /jails/foo.uugrn.org/usr/ports/packages        (r/o)
 +
                                /data/jails/shared/packages (!)        /jails/bar.uugrn.org/usr/ports/packages        (r/o) 
 +
rpool/shared/empty                                                      /jails/var/empty
 +
</pre>
 +
 +
Die Zeilen, die mit rpool/ beginnen sind ZFS Mountpoints. Die dazwischen liegenden Zeilen sind Beispiele, wie Unterverzeichnisse auf den ZFS Mounts per NullMount in die jeweiligen Jails gemountet wird.
 +
 +
 +
Im Folgenden noch einmal nur die Nullmounts für das Beispieljail example.uugrn.org. Die jeweiligen ZFS Mountpoints sind von darin enthaltenen Unterverzeichnissen durch /./ abgegrenzt (Veranschaulichung):
 +
<pre>
 +
ZFS mount/./subdir                      Jail-Mount
 +
/data/jails/root/./example.uugrn.org    /jails/example.uugrn.org/    # Jail-Root
 +
/data/jails/var/./example.uugrn.org    …/var                      # Jail-/var
 +
/data/jails/log/./example.uugrn.org    …/var/log                  #
 +
/data/jails/data/./example.uugrn.org    …/data                    # Jail-/data
 +
/data/jails/tmp/./example.uugrn.org    …/tmp                      # Jail-/tmp
 +
/data/jails/etc/./example.uugrn.org    …/etc                      # Jail-/etc
 +
/data/jails/ports/./example.uugrn.org  …/var/ports                # lokale Ports unter /var/ports (r/w!!)
 +
/data/jails/packages/./example.uugrn.org …/var/ports/packages/    # … Packages, die in diesem Jail gebaut wurden
 +
/data/jails/distfiles/./example.uugrn.org …/var/ports/distfiles/  # … Distfiles, die in diesem Jail heruntergeladen wurden
 +
 +
/data/jails/shared/ports                …/usr/ports                # gemeinsames /usr/ports, wird zentral gepflegt!, read-only
 +
/data/jails/shared/packages/8.2-release …/usr/ports/packages      # … mit vorkompilierten UUGRN-Packages, read-only
 +
/data/jails/shared/distfiles            …/usr/ports/distfiles      # … die hierzu verwendeten Distfiles, read-only
 +
/data/jails/shared/empty                …/var/empty                # empty, readonly, immutable und alles ... wird verwendet als Home für daemons.
 +
 +
</pre>
 +
 +
 +
Vorteil dieser Methode: Auf ZFS-Ebene werden die jeweilgen Teile eines Jails jeweils mit typischen Properties konfiguriert, zum Beispiel
 +
;rpool/jails/root: copies=3, deduplication. Zugriffsmuster: idR read-only, wird stark beansprucht, Geschwindigkeit und Zuverlässigkeit
 +
;rpool/jails/tmp: compression. Zugriffsmuster kurzlebige Dateien, einmal schreiben, einmal lesen
 +
;rpool/jails/var: copies=3. Grundsätzlich sind daten in /var *wichtig*, ausser var/tmp und var/log. Geschwindigkeit und Sicherheit
 +
;rpool/jails/log: copies=1, compression(max). Zugriffsmuster: idR append-only
 +
;rpool/jails/local: deduplication. Hier landen Packages. siehe auch root/
 +
;rpool/jails/ports: compression (wegen INDEX...), exec
 +
;rpool/jails/distfiles: deduplication, noexec
 +
;rpool/jails/packages: noexec
 +
;rpool/shared/ports: compression(max)
 +
;rpool/shared/distfiles: noexec
 +
;rpool/shared/packages: noexec
 +
;rpool/shared/empty: noexec, readonly, (leer)

Bitte kopiere keine Inhalte, die nicht Deine eigenen sind!

Du gibst uns hiermit Deine Zusage, dass
  • Du den Text nicht aus Wikipedia kopiert hast
  • Du den Text selbst verfasst hast
  • oder der Text entweder
    • Allgemeingut (public domain) ist
    • oder der Copyright-Inhaber seine Zustimmung gegeben hat.
Wichtig
  • Benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers!
  • Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der 'Diskussion:'-Seite darauf hin.
  • Bitte beachte, dass alle UUGRN-Beiträge automatisch unter der der Creative Commons Lizenz stehen.
  • Falls Du nicht möchtest, dass Deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf "Artikel Speichern".

Bitte beantworte die folgende Frage, um diese Seite speichern zu können (weitere Informationen):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)