[Übersicht] napp-it cs, Web-GUI für fast jeden ZFS Server oder Servergruppen

napp-it cs kann jetzt OmniOS, Proxmox und Windows ZFS Server managen
OI und Solaris sollte auch gehen. Andere Linuxe und ZFS appliances auch. Man braucht lediglich Perl und ssh root Zugang.

triple.PNG


Infos: https://www.napp-it.de/downloads/windows_en.html
Proxmox: https://www.napp-it.de/downloads/linux_en.html

Die aktuelle nightly und Xampp2 sind aktuell

Es bleibt noch viel Arbeit,
grundsätzliche Probleme habe ich aber hoffentlich gelöst.
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
In der Datei ist netcat beigefügt mit dem ich schnelle Replikation machen will.
Das wird von Google als Hackersoftware klassifiziert.

ps
Tritt das beim Download von xampp2.zip auf

In der xampp2.zip habe ich die 32bit Version von netcat aus xampp.zip entfernt. Google hat daraufhin bei mir nicht mehr gemeckert.

Alternativ: Xampp portable von Apachefriends laden und napp-it Ordner hinzufügen.
Ich werde das später auch auf napp-it zum Download anbieten. In den USA ist halt Google unschlagbar schnell.
 
Ok, OSX geht auch.
Ich kann aber Disk Erkennung und Smartcheck nicht testen da ich nur virtualisiert testen kann,

Dann fehlt nur noch SmartOS wo man ein Perl auf persistem Storage braucht.
Dann sollte es auch da laufen, In der server.pl muss man: use lib ".." auf den korrekten Pfad setzten (Zeile 30)

 
Bei Smartos ist /opt (=zones/opt) dein Freund, da kannst du dich austoben.
Ich würde /opt/custom oder /opt/tools (das lebt pkg drin) nehmen.
Derzeit ist perl-5.38.2 installiert und liegt unter /opt/tools/bin/perl

cu
 
Werde ich mir als nächstes anschauen.
Momantan will ich erst die OSX Version zum Laufen bringen, da sind in der letzten Version
Probleme aufgetaucht. Ich habe daher die vorherige nightly wieder hochgeladen

ps
Wenn SmartOS per default Perl mitbringt, sollte es bereits wie OmniOS/OI laufen.
Das war meine Sorge, dass Perl fehlt.

Man muss dazu von Windows den Order /xampp/napp-it/data/tools/socket/ nach
/opt/customs oder /opt/tools kopieren.

Dann in der /socket/server.pl den Pfad in Zeile 30
use lib "/path to ./socket/CGI"; anpassen.

Dann in die .../socket/server.auth die gleiche Zeichkette wie uner Windows in ./_log/group/hostname~ip.txt

Aauf der Konsole als root starten mit
perl /path_to_socketfolder/server.pl

Dann in napp-it cs als member hinzufügen
 
Hab nochmal etwas rumgespielt. Jetzt mal ReFS StorageSpace Mirror aus 2x1TB vs. ZFS Mirror ebenfalls aus 2x1TB (aktuellster Build), wieder quasi gleiche Hardware (4 SSDs im gleichen Adapter), gleiches System, jetzt OS Server 2022:

1709137857361.png
1709138153493.png


Wenn man die 4K-Werte irgendwie hochbekommen könnte, hätte das echt Charme...
 
Werde ich mir als nächstes anschauen.
Momantan will ich erst die OSX Version zum Laufen bringen, da sind in der letzten Version
Probleme aufgetaucht. Ich habe daher die vorherige nightly wieder hochgeladen

ps
Wenn SmartOS per default Perl mitbringt, sollte es bereits wie OmniOS/OI laufen.
Das war meine Sorge, dass Perl fehlt.

Man muss dazu von Windows den Order /xampp/napp-it/data/tools/socket/ nach
/opt/customs oder /opt/tools kopieren.

Dann in der /socket/server.pl den Pfad in Zeile 30
use lib "/path to ./socket/CGI"; anpassen.

Dann in die .../socket/server.auth die gleiche Zeichkette wie uner Windows in ./_log/group/hostname~ip.txt

Aauf der Konsole als root starten mit
perl /path_to_socketfolder/server.pl

Dann in napp-it cs als member hinzufügen

das Ding scheint zu laufen, aber mit dem auth mechanismus hab ich Probleme:

168 <-
error: client auth:=xx required

was will er von mir?
thx
 
Der Client (Windows mit napp-it cs) muss sich den ZFS Servern (BSD,Linux,OSX,SmartOS,Windows,..) gegenüber authentifizieren, sonst könnte ja jeder kommen. Derzeit ist die Übertragung nicht verschlüsselt. Ich gehe davon aus dass es sich um ein geschütztes LAN handelt.

Dazu muss in der Memberdatei in Windows /napp-it/_log/group/hostname~ip.txt das gleiche stehen wie auf dem Server in der Datei ./socket/server.auth. Per default soll da ein SHA256 Hash rein

ps
Ich habe gerade den aktuellsten Stand hochgeladen. Da kommen deutlich mehr Fehlermeldungen bei Fehlkonfiguration und das System ist gutmütiger gegen nicht reagierende Server.
 
Ganz kurz: die Menüs bei Member und socket sind alle doppelt und ich schaffe es nicht, ein Member hinzuzufügen.
Es kommt immer: please enter an auth value for access to this server und am Server seh ich nicht mal nen Verbindungsversuch.
Das vorbelegte auth value hab ich einfach so gelassen, sind damit ja identisch.

cu
 
Das ist alles noch "work in progress" mit einer nightly jeden abend.
An der Bibliothek für die Gruppenverwaltung arbeite ich gerade.
Da ist noch viel überflüssiger Code vom normalen napp-it für Solaris drin.

Ein group member kann man auch manuell mit einer Textdatei z.B. ./daten/_log/group/smartos1~192.168.1.3.txt anlegen. Als Inhalt den gleichen auth string wie auf dem Server in server.auth. (Membername ist beliebig, ip muss stimmen)

Aktuell sieht es bei mir so aus (napp-it cs und server.pl v. 24.02.28) =2024.02.28

Ordner group, Fenster mit lokalem server.pl und napp-it cs
group.PNG

Beitrag automatisch zusammengeführt:

Es gibt übrigens ein neues Open-ZFS rc.13 für Windows

Jorgen Lundman: " I threw in some code that looks up ashift to use instead of 512. If you can, check out OpenZFSOnWindows-debug-2.2.99-13-gfddfb6aeb5.exe. I did the most obvious places, but there are quite a few ways to query that.

*** Please update, the trim bug might be corrupting pools! ***
Now trim is disabled by default, to check it works (on test pools right?) change
HLM/System/ControlSet001/Services/OpenZFS
windows_enable_trim to 1. "

Bitte beachten dass ashift keine Pool sondern eine vdev Eigenschaft ist. Unterschiedliche ashift in einem Pool sind aber generell eine blöde Idee, können aber passieren wenn man vdevs hinzufügt ohne ashift manuell festzulegen.

 
Zuletzt bearbeitet:
nur als Ergänzung
Ich habe gerade die nightly feb.29 hochgeladen.
Da habe ich noch einen Bug mit OSX behoben (OSX Plattenerkennung + smartmontools ist aber noch nicht fertig). Servergroups anlegen, löschen und bearbeiten tut jetzt auch.

servergroup.png
 
Zuletzt bearbeitet:
Habe mal ein paar Smartos Systeme in die Servergroup aufgenommen, sieht gut aus soweit.
Allerdings laufe ich bei machen (vielbeschäftigten) Servern in Timeouts rein bei bestimmten Operationen:
timeout on timer #189 at /opt/tools/xampp/napp-it2/data/tools/socket/CGI/IPC/Run.pm line 3007
Ab dann muss man sich mitm Server neu verbinden.
Kann ich diese timeouts selber anpassen und etwas hochsetzen? Gibt es eine Einstellung für einen automatischen reconnect?
thx
 
Zuletzt bearbeitet:
Ich habe interimsmäßig die aktuelle nightly (24.03.01) hochgeladen.
Da gibt es eine Datei /socket/config.pl

Die server.pl ließt die beim Start und passt Werte an wie
use lib ""
max_connections (max Anzahl Clients)
timeout (client timeout auf dem Server)
allowed_ip (welche Clients dürfen sich connecten)

Wenn der Timeout vom Server kommt, kann man es da anpassen.
 
Unterhalb vom socket-Ordner gibt es einen Ordnen CGI.
Da liefere ich alle benötigten Module mit, damit der Socketserver unter jedem OS direkt läuft inkl. LWP:*

In einem Perlscript kann man mit
use lib "Pfad"; die Module in Pfad automatisch einbinden.

Ablauf:
Das Server Script server.pl konfiguriert beim Start die Konfigurationsdatei config.pl und bindet die mir require ein. Damit sollte das Script laufen ohne dass man manuell etwas konfiurieren muss (es sei denn man will timeout ode allowed_ip anpassen)
In der config.pl sollte bei use lib der korrekte Pfad stehen.

Das klappt aber z.B. unter SmartOS nur wenn man das Server Script mit vollem Pfad aufruft
perl /pfad_zum_socketordner/server.pl. Unter Windows muss ich das noch anpassen. Da sollte aber alles per default im Xampp Perl installiert sein. Probleme machen die vielen BSD/Linux Varianten wo überall was anderes installiert ist.

Alternativ in der server.pl in Zeile 49 (nach require) den Pfad manuell setzen.
use lib "Pfad zu socket/CGI";

Ich schau mir das aber nochmal an
 
Zuletzt bearbeitet:
also

use lib "/xampp/napp-it2/data/tools/socket/CGI";
$tpath="/xampp/napp-it2/tmp";
1;

das stimmt jedenfalls in meinem Fall nicht
 
Hab also mal zfs auf zfs-2.2.99-13-gfddfb6aeb5 upgedated.

fsutil fsinfo zeigt leider immer noch 512B über alles.


1709319007021.png
1709322302296.png
 
also

use lib "/xampp/napp-it2/data/tools/socket/CGI";
$tpath="/xampp/napp-it2/tmp";
1;

das stimmt jedenfalls in meinem Fall nicht

Ich kann das Problem nicht nachvollziehen.
Wichtig ist dass man den Socket-Server mit
perl /abspath_to/server.pl startet

Das Fenster das dann aufgeht und die Aktionen des Servers zeigt, listet zunächst die Settings auf. Am Anfang auch den Inhalt der server.cfg. Eventuell etwas hochscrollen um das zu sehen und zu kontrollieren.

Die Einstellung mit /xampp sind die Defaults aus Windows.
 
alte Version vom 28.01:

Perl @inc
/opt/tools/xampp/napp-it2/data/tools/socket/CGI, /opt/tools/lib/perl5/site_perl/5.38.0/x86_64-solaris-thread-multi-64, /opt/tools/lib/perl5/site_perl/5.38.0, /opt/tools/lib/perl5/vendor_perl/5.38.0/x86_64-solaris-thread-multi-64, /opt/tools/lib/perl5/vendor_perl/5.38.0, /opt/tools/lib/perl5/5.38.0/x86_64-solaris-thread-multi-64, /opt/tools/lib/perl5/5.38.0,



neue Version vom 01.03 (mit config.pl)

Can't locate LWP/UserAgent.pm in @inc (you may need to install the LWP::UserAgent module) (@inc entries checked: /opt/tool/xampp/napp-it2/data/tools/socket/CGI /opt/tools/lib/perl5/site_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/site_perl/5.38.0 /opt/tools/lib/perl5/vendor_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/vendor_perl/5.38.0 /opt/tools/lib/perl5/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/5.38.0) at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 35.
BEGIN failed--compilation aborted at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 35.
 
hmm

Solange der Pfad zu CGI nicht passt, können die Module nicht gefunden werden
(/opt/tool/xampp/napp-it2/data/tools/socket/CGI). Es sei denn, der Pfad stimmt.

Ein Aufruf mit
perl /abspath_to/server.pl übergibt den absoluten Pfad an Perl damit der Pfad in der config.pl angepasst werden kann.

Bis sich das klärt, in der server.pl nach

require "$path/config.pl";
folgendes hinzufügen

use lib "/korrekter absoluter Pfad zu/CGI";

Damit wird der Pfad fest definiert und die Module gefunden.
 
1. Aufruf von:
perl /opt/tools/xampp/napp-it2/data/tools/socket/server.pl
ergibt:
can't locate LWP/UserAgent.pm in @inc (you may need to install the LWP::UserAgent module) (@inc entries checked: /opt/tools/lib/perl5/site_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/site_perl/5.38.0 /opt/tools/lib/perl5/vendor_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/vendor_perl/5.38.0 /opt/tools/lib/perl5/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/5.38.0) at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 59.
BEGIN failed--compilation aborted at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 59.

in der config.pl stehts aber auch falsch drin :
use lib "/xampp/napp-it2/data/tools/socket/CGI";

Anpassung der config.pl nach:
use lib "/opt/tools/xampp/napp-it2/data/tools/socket/CGI";

erneuter Aufruf von
perl /opt/tools/xampp/napp-it2/data/tools/socket/server.pl
ergibt erneut:
Can't locate LWP/UserAgent.pm in @inc (you may need to install the LWP::UserAgent module) (@inc entries checked: /opt/tools/lib/perl5/site_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/site_perl/5.38.0 /opt/tools/lib/perl5/vendor_perl/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/vendor_perl/5.38.0 /opt/tools/lib/perl5/5.38.0/x86_64-solaris-thread-multi-64 /opt/tools/lib/perl5/5.38.0) at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 59.
BEGIN failed--compilation aborted at /opt/tools/xampp/napp-it2/data/tools/socket/server.pl line 59.

Anpassung der server.pl mit
use lib "/opt/tools/xampp/napp-it2/data/tools/socket/CGI/";

Socketserver v.24.03.01
...
läuft!
 
Was zunächst in der config.pl unter use lib steht ist unerheblich. Beim Start des Servers wird das angepasst, deshalb steht da auch dass man da nichts ändern soll. Wenn man aber in der server.pl die Angabe des CGI Pfades nach require config.pl vornimmt, so wird das fest benutzt.

Die Ursache des Problems ist mir aber immer noch nicht klar. Die server.pl ließt beim Start die config.pl und passt use lib an den tatsächlichen Pfad an. Dann wird die config.pl per require eingebunden damit der korrekte Pfad zu den Modulen bekannt ist und die sonstigen Parameter wie timeout oder allow_ip gesetzt sind.
 
Fand ich ganz interessant: bei einem 256MB-test mit Atto sehen die Werte für ZFS ziemlich hübsch aus.

Testdatei: 256MB

1709417733144.png


Testdatei: 8GB

1709418400050.png



Write Cache erlaubt:

1709418913285.png


Spaßeshalber mal zusätzlich zu "bypass write cache" auf dem ZFS Pool auch noch "sync=always" gesetzt, ist bei writes trotzdem flotter als ReFS:

1709420376471.png



@gea: Wenn ich Dir hier zu sehr den Thread zuspamme, sag Bescheid. Dann wechsel ich damit rüber in den Hyper-V oder mach einen ganz neuen auf.
 
  • Danke
Reaktionen: gea
Kein Problem. Performance von ZFS on Windows vs ReFS on Windows ist ein essentielles Thema. Nur wenn ZFS unter Windows wenigstens annähernd so schnell ist wie ReFS macht es Sinn. Wenn es schneller ist, dann hat ReFS verloren weil es in den anderen Punkten unterlegen ist (Features, Handling)

ps. zu 4k Erkennung des Pools unter Windows
Nachdem erste Tests mit einem ashift=9 Pool keine Verbesserung im Vergleich zu einer inkorrekten Nutzung unter Windows als 512B mit ashift=12 Pool erbracht hatten, ging ich bereits davon aus, dass das keinen großen Unterschied macht.
 
Nochmal zur "Installation=Kopieren der Software" des Socketservers auf einem beliebigen ZFS Server.

Der Ordner "socket" mit der Software (liegt auf dem Windows Rechner mit dem man die ZFS Servergruppe verwaltet unter /xampp/napp-it/data/tools/ muss man irgendwie auf den ZFS Server kopieren den man damit fernbedienen möchte. Es gibt keine Vorgabe für den Speicherort, Leerzeichen im Pfad sollte man vermeiden. Unter OSX habe ich das auf den Desktop kopiert (/users/username/desktop). Man kann den Ordner auch per SMB auf ein Share auf einem ZFS Pool kopieren.

In der Datei socket/server.cfg kann man man neben dem Timeout der Software auch die Clients angeben die sich verbinden dürfen, z.b. $allowed_ip="192.168.1.1,172.16.3."; In der Datei socket/server.auth steht der String mit denen sich Clients anmelden.

Wenn man kein geschütztes LAN Segment hat (Heim Netz, SAN vlan), VPN im einfachsten Fall z.B. Wireguard auf einem Router nutzen um den Traffic über ein ungeschütztes Netz zu verschlüsseln. Die gibts z.B. von Glinet für ein paar Euro für unterwegs. Zugangsrouter z.B. Fritzbox haben Wireguard eingebaut. Ein NAS oder gar einen Managemagement Rechner nicht ohne Not und ohne VPN ins Internet oder ein ungeschütztes Firmen/ (Hoch)schul LAN stellen. Zumindest das ZFS Management/Fernbedienung der Servergruppe sollte da über ein zusätzliches und abgeschottetes vlan gehen.

Gestartet wird die Serversoftware dann unter BSD, Linux, Illumos, OSX oder Solaris von der Konsole mit
sudo perl /path_to/server.pl

wenn man weitere Windows Rechner mit ZFS fernbedienen möchte
c:/xampp auf den Rechner kopieren oder Perl installieren
Ein Powershell Terminal (Administrator) öffnen und den Server starten mit
/path_to/perl.exe /path_to/server.pl
z.B. /xampp/perl/bin/perl.exe /path_to/server.pl

Das Kopieren auf Systemordner per root und WinSCP bei dem man teils Systemdateien editieren muss entfällt damit.
Bitte Besonderheiten mit verschiedenen BSD, Linux, Sonstwas ZFS Optionen inkl Appliances z.B. Qnap oder TrueNAS teilen, weil in jeder Konfiguration oft ein anderer Aspekt auffällt.
 
New release of ZFS on Windows-2.2.3rc1, it is fairly close to upstream OpenZFS-2.2.3
  • Redone CPUID probe, please verify it is correct
  • Tunable: "zfs_bclone_wait_dirty" set to wait instead of error from clonefile.
  • DDT work (memory reduction, speedup)
  • zfs list: add '-t fs' and '-t vol' options
  • Add slow disk diagnosis to ZED
  • Add 'zpool status -e' flag to see unhealthy vdevs
  • BRT: Fix FICLONE/FICLONERANGE shortened copy
  • (zpool: Add slot power control, print power status) not on macOS
  • spa: make read/write queues configurable
  • Allow block cloning across encrypted datasets
  • Add libfetch for https://
 
Wofür nutzt man denn „make read/write queues configurable“?
 
Wird als Feature in OpenZFS 2.2.3 gelistet aber auch da nicht erklärt

Gemini meint dazu
In OpenZFS 2.2.3, 'make read/write queues configurable' means that the administrator can adjust the size and behavior of the queues used for read and write requests. This allows for fine-tuning the performance of ZFS for specific workloads.

For instance, an administrator might increase the size of the read queue for a workload that involves a lot of sequential reads, such as streaming a video file. Conversely, they might decrease the size of the write queue for a workload that involves a lot of small writes, such as logging data. By adjusting the queue sizes, the administrator can optimize ZFS to handle these specific workloads more efficiently.
Beitrag automatisch zusammengeführt:

Unter Windows 11 Pro 23H2 crashed bei mir Windows bei der Installation von OpenZFS 2.2.3rc1.
Wenn ich den Pfad zu Open-ZFS dann manuell setze, geht es, ich erhalte aber in web-gui komische Ergebnisse. irgendwas scheint also noch zu klemmen.

 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh