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

Ich habe das mal bei dem maintainer von Open-ZFS für OSX und Windows angefragt

edit:
wie ist denn die Performance und CPU Last ntfs vs ZFS ohne rdma?
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Übrigens, so gings los mit ZFS on OSX & Windows

 
Zuletzt bearbeitet:
Versuche gerade, mal lokal auf dem Server weiter zu forschen. Windows erkennt den zfs-pool (trotz ashift=12) als Datenträger/Filesystem mit 512Bytes/Sektor - der entsprechende NTFS-Datenträger wird (richtig) mit 512/4096 erkannt.

Zur Erinnerung:
PhysicalDisk 0 = OS
PhysicalDisk 1 = D: = NTFS
PhysicalDisk 2 = E: = ZFS

1707557894422.png


Leider funktionieren auch die ganzen Laufwerk-basierten Performance-Counter nicht. Während eines CDM-Laufs behauptet Windows, der Datenträger hätte nichts zu tun (sieht im Taskmanager genauso aus):

1707558401690.png
 
Während eines CDM-Laufs behauptet Windows, der Datenträger hätte nichts zu tun (sieht im Taskmanager genauso aus):
War da nicht mal was, wenn Du verschiedenes RDMA-Gedöns kombinierst, dass dann alles komplett an der CPU vorbeiläuft? So wie schon bei der NIC.
 
Das hier hat mit RDMA nichts zu tun, die Tests liefen alle lokal (nicht übers Netz).

Versuche gerade erstmal ZFS lokal auf die Spur zu kommen, bevor ich die Komplexität mit Netzwerk wieder erhöhe.
 
  • Danke
Reaktionen: gea
Versuche gerade, mal lokal auf dem Server weiter zu forschen. Windows erkennt den zfs-pool (trotz ashift=12) als Datenträger/Filesystem mit 512Bytes/Sektor - der entsprechende NTFS-Datenträger wird (richtig) mit 512/4096 erkannt.

Zur Erinnerung:
PhysicalDisk 0 = OS
PhysicalDisk 1 = D: = NTFS
PhysicalDisk 2 = E: = ZFS



Leider funktionieren auch die ganzen Laufwerk-basierten Performance-Counter nicht. Während eines CDM-Laufs behauptet Windows, der Datenträger hätte nichts zu tun (sieht im Taskmanager genauso aus):

Jorgen Lundman, der Maintainer für Open-ZFS on OSX und Windows hatte (siehe 2 threads weiter oben) schön erläutert, dass Windows mit ZFS so garnichts anzufangen weiß. Ein ZFS Pool wird Windows daher quasi als einfache Platte, als Kuckucksei ins Nest gelegt. ZFS mäßig ist es ein Open-ZFS Pool v2.2 mit allerneuesten Features wie draid oder raid-z expansion und korrekter ashift. Windows meint dagegen etwas altbekanntes vorzufinden.

Was mich etwas stutzig macht, ist dass die ZFS "Platte" als 512N (512B only) erkannt wird und nicht als 512E (physical 4K)
Ich habe das auch mal angefragt.

 
Zuletzt bearbeitet:
Napp-it ist jetzt wirklich portable was pfad und namen des napp-it Ordners angeht.
Man kann also neben dem napp-it Ordner einen Ordner napp-it2 oder web-gui oder im web-gui Ordner daten, daten1,..haben und die jeweilige Version im Ordner /xampp/napp-it[m]/data/start_web-gui_als_admin.bat starten. Das ist Vorraussetzung damit man die web-gui später mal online updaten und downgraden kann so wie unter Solaris.

Die Jobsfunktion hat jetzt einen eigenen Hintergrundtask damit man zeitgesteuerte Jobs ohne Eingriff in Windows starten kann. Das ist jedoch noch nicht fertig. Special und dedup vdevs werden jetzt im Menü Pools samt Füllgrad und dedupratio angezeigt

special.PNG
 
Zuletzt bearbeitet:
@besterino
Zu deiner Erkenntnis, dass die ZFS "Platte" als 512N (512B only) erkannt wird und nicht als 512E (logical 512B/ physical 4K).

Ich gehe dann davon aus, dass Windows zu schreibende Daten in 512B Blöcke aufteilt. Da ZFS die echte 4k physical Plattenstruktur kennt, muss es jeden dieser 512B als 4K Block schreiben und damit gehen 8x soviele Daten an den Pool wie Windows an die "ZFS Platte" schreibt. Wäre eine Erklärung für die Performanceunterschiede. Ich habe das auch so an Jorg Lundman geschrieben. Mal sehen was er dazu meint.
 
Zuletzt bearbeitet:
Das war auch meine Vermutung. Wollte nochmal schauen, ob man Windows irgendwie mit Bordmitteln manuell die „richtige“ Struktur aufzwingen kann… bin aber auch mal gespannt, was die Profis dazu sagen.
 
Feb 12a erste Beta

autojobs tut jetzt prinzipiell (scrub, snap and other)
neues Menü System mit kstat und registry infos
In der Registry kann man viel einstellen, möchte da aber abwarten ob Jorgen Lundman was dazu weiß

Pool > Expand Raid-Z (raid-z expansion)
 
Zuletzt bearbeitet:
Google gerade noch bisserl rum. Technet bzw. jetzt „Microsoft Learn“ sind mittlerweile schon echt gute Ressourcen.

Basics:

Interessant: You can add a registry key, which will cause the behavior of Windows 11 and later to be similar to Windows 10. This forces the sector size to be emulated as 4 KB. To add the ForcedPhysicalSectorSizeInBytesregistry key… eigentlich gedacht um Storage mir physischen Sektoren >4k auf 4K einlieft zu „shrinken“… geht ja vielleicht auch in die andere Richtung?

…wobei Server 2019 ja Windows 10 Codebase ist, evtl. geht das damit schon gar nicht.
 
In der Beta Version 12b von heute gehen jetzt auch:
Raid-Z expansion
Draid
Jobs (snap,scrub,other)

todo
andere Jobs
Performance Optimierung (z.B. physical sectorsize unter Windows)

Langsam wirds was.
 
@gea Könntest Du die nightly auch woanders hochladen, zumindest die kleine? Hier ist kein DL möglich.
 
Ich habe extra auf Google drive geladen weil das auch in USA Top-Performance hat im Gegensatz zum Web-Hosting in DE.
Wo liegt das Problem mit

 
Wo liegt das Problem mit
Diese Datei kann zurzeit nicht angezeigt oder heruntergeladen werden.
Diese Datei wurde in letzter Zeit von zu vielen Nutzern angezeigt oder heruntergeladen. Versuchen Sie später noch einmal, auf die Datei zuzugreifen. Falls die Datei besonders groß ist oder viele Nutzer darauf zugreifen können, kann es bis zu 24 Stunden dauern, bis Sie sie anzeigen oder herunterladen können. Sollten Sie nach 24 Stunden immer noch keinen Zugriff haben, wenden Sie sich an Ihren Domainadministrator.
 
Google ist auch nicht mehr das was es mal war.
Beitrag automatisch zusammengeführt:

Info:
Jorgen Lundman (Maintainer von Open-ZFS on OSX und Windows) hat übrigens bestätigt, dass 512N physical blocksize für einen ZFS Pool unter Windows voreingestellt ist. Das würde den Performanceunterschied zu ntfs gut erklären.

Dann warten wir mal auf eine Version mit 4K Voreinstellung
 
Zuletzt bearbeitet:
Hab gerade drüben auch schon gepostet, lässt mir keine Ruhe und würde gerne bisserl damit herumexperimentieren. Eigentlich müsste es doch möglich sein, die relevanten Informationen innerhalb von ZFSonWindows "variabel" zu gestalten, also auslesen und dann entsprechend übergeben. Könnte man übrigens doch auch einbauen beim setzen von ashift bei der Pool-Erstellung, also erst Infos abfragen und dann entsprechend die Variable setzen, z.B. auslesen über:

IOCTL_DISK_GET_DRIVE_GEOMETRY_EX (oder so ähnlich ;))

oder per Powershell (für scripting), z.B. mit:

Code:
get-disk | format-list -property Number,SerialNumber,LogicalSectorSize,PhysicalSectorSize

Spannend, spannend das alles... :)
 
Ich hab mal eine Disk aufgeteilt zwischen ZFS und NTFS, das ging nicht gut.😁

Ansonsten habe ich auch eine erhöhte CPU Last gesehen.

Die ersten Tests einer SATA-SSD nur lokal:
CrystalDiskMark_20240213041149.png
CrystalDiskMark_20240213042227.png


Atime ließ sich nicht abschalten und Kompression musste ich zwei mal deaktivieren, damit das auch umgesetzt wurde. Also bei der Erstellung des FS wurde es nicht abgestellt.

Über SMB (10Gb) liefert der eine Test wiederholt kein Ergebnis.
CrystalDiskMark_20240213135011.png
CrystalDiskMark_20240213133734.png
 
Zuletzt bearbeitet:
Hab gerade drüben auch schon gepostet, lässt mir keine Ruhe und würde gerne bisserl damit herumexperimentieren. Eigentlich müsste es doch möglich sein, die relevanten Informationen innerhalb von ZFSonWindows "variabel" zu gestalten, also auslesen und dann entsprechend übergeben. Könnte man übrigens doch auch einbauen beim setzen von ashift bei der Pool-Erstellung, also erst Infos abfragen und dann entsprechend die Variable setzen, z.B. auslesen über:

IOCTL_DISK_GET_DRIVE_GEOMETRY_EX (oder so ähnlich ;))

oder per Powershell (für scripting), z.B. mit:

Code:
get-disk | format-list -property Number,SerialNumber,LogicalSectorSize,PhysicalSectorSize

Spannend, spannend das alles... :)

Abwarten ob Jorgen Lundman da was ändert
um die ZFS Platte nicht fest als 512B zu mounten.

Gibt bei Open-ZFS für Windows issues noch jemand dem die geringere ZFS Performance vs ntfs aufgefallen ist.
Ich habe das Problem dem Issue Tracker hinzugefügt.

 
Zuletzt bearbeitet:
Ich bin emotional kurz davor, mir mal so eine Test-Umgebung aufzubauen und einfach mal im Quellcode an der von Jorgen gezeigten Stelle die 512 durch 4096 zu ersetzen... allerdings hab ich bisher nicht einmal verstanden, was der Code genau macht: Nach meinem Verständnis der Microsoft-Seiten sind die entsprechenden Snipets (IOCTL_DISK_GET_DRIVE_GEOMETRY_EX usw.) Windows-QUERIES, keine Kommandos um irgendwas zu ändern / festzulegen. Ich könnte also nur hoffen, dass der Code die Anweisung enthält, was auf einen entsprechenden Query für ein ZFS-Pool/Dataset zurückzugeben ist und müsste stumpf durch Ausprobieren meine Hoffnung mit der Realität verproben.

Wie man zwanglos sehen kann, habe ich vom Programmieren einfach Null Ahnung. :d
 
Im Quellcode wird wohl fest 512B vorgegeben ohne abzufragen was die "ZFS Platte" hat.
Kann man im Quellcode natürlich ändern. Anschließen muss man das aber neu kompilieren.

Wenn man sich nicht intensiv damit beschäftigen möchte würde ich abwarten bis zur nächsten Version.

ps
Wenn man von Solaris kommt:

- Eine Unix Shell ist so viel schneller und einfacher als Powershell. Napp-it unter Windows ist deutlich langamer als unter Solaris obwohl ich jetzt alles Mögliche ausprobiert habe. Liegt nicht am Apache sondern ist schon in den Perl Hintergrunddiensten der Fall. Man wird unter Windows wohl damit leben müssen oder schnellere Hardware einsetzen. Extra C-Programme deswegen zu schreiben habe ich nicht vor zumal die auch nur zfs/zpool nutzen können wenn man nicht dazu eine ZFS api mitschreiben will die man dann laufend anpassen müsste. Open-ZFS entwickelt sich ja weiter.

- Bei ZFS muss man unter Solaris nicht soviel beachten. Bei Windows (Linux wird ähnlich sein) muss man ständig aufpassen ob eine Property etwas auf Pool Level oder einem Subdateisystem ändert. Mal muss man dann ein Pool unmount&mount machen und manchmal nicht. Liegt nur zum Teil daran dass die Windows Version da noch nicht ganz fertig ist um das selber zu machen.

In der aktuellsten Version kann man daher manche Pool Eigenschaften momentan nur via CLI ändern.
 
Zuletzt bearbeitet:
Erweitern von napp-it mit privaten Menüs
Man kann napp-it mit eigenen Menüs erweitern (update/downgrade safe):

- anlegen eines neuen Menüordners "1nn_xx in /xampp/[napp-it]/_my/menues/" z.B "102_my_first_menue"
- darin ein "action.pl" mit Perl Anweisungen , siehe Beispiele unter _my/menues

Typische Structur eines napp-it menu scripts.
1. sammle infos in einem Perl hash z.B. %current
Hash Inhalt kann man anschauen mit: &print_hash(%current);
vergleiche: ZFS Filesystems > data zfs
2. Interaktion mit Nutzer
3. Ausführen von commands via &exe("powershell command"); erfolgt mit admin permissions.

Zum debuggen, nutzt man &mess($x), &print_var($x); &print_array(@x) oder &print_hash(%x);

To edit Perl scripts,: DZsoft Perl editor (jetzt frei)
DzSoft's Order Page

 
Ich habe mir eine Anfrage wegen napp-it auf SmartOS (BSD, Linux, OSX, Solaris) nochmal durch den Kopf gehen lassen.

Der Windows Port von napp-it arbeitet nach dem Client Server Prinzip über einen Socketserver der zfs, zpool oder read/write/get/set/type xyz mit adminrechten ausführt. Das ließe sich auf non Windows Server (BSD, Linux, OSX, Solaris/Illumos) erweitern zumindest für ZFS, Filesystem, Job und Snap mnagement. Über (private) Menüs ließe sich das auch erweitern. Im Prinzip sowas wie den alten Windows Vsphere Client für ESXi 5 der auch ohne lokalen Webserver auf ESXi arbeitete.

Es bräuchte dann "nur" individuelle Socketserverscripts die napp-it Anfragen auf das OS umsetzen.
Unter SmartOS bräuchte es:
- einen Ordner mit einer normalen Perl Installation auf persistentem Ort (/var /opt ?)
- eine Autostart Option für perl ./path/socketserver.pl &

-einen Online Installer der diesen Ordner herunterlädt und autostart anpasst

Ist auf meiner todo list (mittelfristig)
 
Napp-it for ZFS on Windows unterstützt jetzt Gruppen von mehreren Windows ZFS Servern. Das soll später auf non-Windows Server wie OmniOS or Linux erweitert werden aber BSD, OSX oder SmartOS sind auch mögliche Kandidaten.


groups.png



Download (unzip and replace /xampp/[nappit]/[data] ([names] can be modified)
To update to newest, download
https://napp-it.org/doc/downloads/napp-it_nightly.zip

unzip folder [napp-it]
- stop Apache and background services (cmd windows)
- replace c.\xampp\[napp-it] with newer version.

newest infos:
https://www.napp-it.org/doc/downloads/napp-it on windows.pdf

Wer erste Schritte mit napp-it zum Managen eines ZFS Servers unter *BSD, Illumos, Linux, OSX, SmartOS oder Solaris wagen möchte,
napp-it nightly herunterladen. Es wird nur der Ordner /napp-it/data/tools/socket benötigt. Den mit WinSCP auf einen X Server kopieren (Perl Umgebung wird benötigt.)

In der Datei /path/to/socket/server.cfg eine Zeichenkette für Zugriff einfügen.
Dann den Socketserver starten: perl /path/to/socket/server.pl

Unter Windows den X-Server unter Extensions > socketgroup hinzufügen.
In der zugehörigen Datei napp-it/data/_log/group/hostname~ip.txt muss die gleiche Ueichenkette wie oben stehen.

Ansonsten siehe: https://www.hardwareluxx.de/community/threads/napp-it-für-zfs-on-windows.1349039/post-30283296

Bitte Erfahrung berichten wers probiert hat.
 
Zuletzt bearbeitet:
Du bist zu schnell für mich. ;) Ich komm nichtmal mit meinen eigenen bescheidenen Test-Plänen voran. ;)
 
So, musste die Testmaschine dann doch zumindest mal ein wenig quälen.

Zur Erinnerung: TR3960X, 64GB RAM, 4x Samsung 980 Pro 1TB (auf x4/x4/x4/x4 Adapterkarte).

Disks:
Code:
PS F:\> wmic diskdrive list brief
Caption                        DeviceID            Model                          Partitions  Size          

Samsung SSD 980 PRO 1TB        \\.\PHYSICALDRIVE3  Samsung SSD 980 PRO 1TB        1           1000202273280 

SAMSUNG MZVPW256HEGL-00000     \\.\PHYSICALDRIVE4  SAMSUNG MZVPW256HEGL-00000     3           256052966400  

Samsung SSD 980 PRO 1TB        \\.\PHYSICALDRIVE0  Samsung SSD 980 PRO 1TB        1           1000202273280 

AMI Virtual HDisk0 USB Device  \\.\PHYSICALDRIVE5  AMI Virtual HDisk0 USB Device  0                         

Samsung SSD 980 PRO 1TB        \\.\PHYSICALDRIVE2  Samsung SSD 980 PRO 1TB        0           1000202273280 

Samsung SSD 980 PRO 1TB        \\.\PHYSICALDRIVE1  Samsung SSD 980 PRO 1TB        0           1000202273280


PhyiscalDrive0: NTFS (Standardsettings) = N:
PhyiscalDrive1: ZFS = F:
PhyiscalDrive3: ReFS (dazu gleich mehr) = R:

ZFSonWindows: aktueller Build

Pool kreiert mit:
Code:
zpool create -O casesensitivity=insensitive -O compression=off -O atime=off -o ashift=12 zfsroot Physicaldrive1
Dataset kreiert mit:
Code:
zfs create zfsroot/zfsvol

CrystalDiskMarks:
1708464454792.png
1708464468048.png
1708464477520.png


Wir sehen: ZFS-Caching kann r0xx0rn. Aber nach wie vor der schon bekannte Einbruch bei 4K.

Der ReFS-Bench war allerdings noch mit Standardsettings:
Code:
PS F:\> Get-FileIntegrity r:\

FileName Enabled Enforced
-------- ------- --------
r:\      False   True


Setzen wir mal spaßeshalber auch Checksummen auf Daten, um quasi Chancengleichzeit zwischen ZFS und ReFS herzustellen:
Code:
PS F:\> Set-FileIntegrity R:\ -Enable $True
F:\> get-FileIntegrity r:\

FileName Enabled Enforced
-------- ------- --------
r:\      True    True

1708464952075.png


Hoi, da ist ZFS ja auf einmal auch beim write besser. (Na gut, das ist jetzt noch nicht wirklich repräsentativ, da ich genau einen Durchlauf gemacht habe...)

Bin neugierig: was passiert denn, wenn wir jetzt noch den Schreibcache auf den SSDs deaktivieren? Also mal Haken entfernen:
1708465112409.png


War dazu auch mal ungeduldig und habe die Benchmarks auf den drei Disks GLEICHZEITIG laufen lassen (sollte so ein 24/48-Kerner ja eigentlich parallel hinbekommen). Kurios (der ZFS Bench war übrigens als erstes fertig):

1708465607674.png


Auf einmal ist ZFS bei den writes auch bei 4k gleichauf bzw. schreibt schneller als ReFS... also doch mal lieber Gegenprobe und einen Bench nach dem anderen:

1708467027706.png


So sehen selbst die 4K writes gar nicht mal schlecht aus. Read ist komischerweise nun auch verdammt nah beieinander, mal abgesehen von Q32T1 4K Random Reads. Muss ich nicht verstehen, oder?
 
Zuletzt bearbeitet:
Sieht doch gut aus für ZFS vor allem im Vergleich zu ReFS das ja auch zu den neuen sicheren Dateisystemen gehört und gegen ZFS richtig schlecht dasteht. Könnte aber sein, dass da ein neuer Windows Server besser geworden ist. Die sequentiellen Reads sind überirdisch. Da ist sicher der ZFS Cache beteiligt.

Was man testen könnte, wäre eine recsize von 32K oder 64K. Könnte sequentiell langsamer sein, bei 4K schneller.
Recsize Änderungen wirken für darauf folgende Writes.
 
Die Tests liefen jetzt auf einer 23H2 "Windows 11 Pro for Workstations" Maschine - sollte also m.E. (mindestens) so aktuell sein wie Windows Server.

Mit der Recsize hatte ich neulich schonmal gespielt und keine Verbesserung feststellen können. Probier ich die Tage aber gerne trotzdem nochmal.

EDIT & Nachtrag: hab doch noch schnell einen run mit recordsize=16K auf'm Pool gemacht...

Code:
S C:\Windows\system32> zfs get recordsize zfsroot
NAME     PROPERTY    VALUE    SOURCE
zfsroot  recordsize  16K      local

Macht aber eher wenig Freude, seq wird deutlich schlechter, 4K random nicht wirklich besser (und ja, write cache war wieder aktiviert):

1708472155019.png


Und dann nochmal mit 32K - bei 4K random tut sich nix:

1708472489226.png
 
Zuletzt bearbeitet:
Also mit der Performance kann man schon sehr viel anfangen und ReFS links liegen lassen.

Ich steuere gerade mit dem Socketserver der Windows Version mein OmniOS.
Da ist napp-it auf OmniOS gefühlt 2x fixer als napp-it auf Windows was die GUI und Hintergrundtask Performance angeht, läuft dafür nicht so stabil wie unter Windows.

update 21.2.
Socketserver
I have added code to detect client OS (BSD,Linux,OSX)
napp-it now displays os:hostname as header ex W10:hostnameor OSX:hostname and not only hostname

Tests on OmniOS,. I have included Perl modules not preinstalled on OmniOS
On OmniOS the socketserver often stops after requests, need time to investigate
 
Zuletzt bearbeitet:
Der Client Server Ansatz für die ZFS GUI begeistert mich jedesmal auf neue. Ich kann an meinem Windows Desktop jetzt auch meine OmniOS Server bedienen, ganz so und so schnell wie lokal und mit einem select bin ich auf einem anderen ZFS Server. Ich kämpfe aber noch mit der Socket Programmierung. Bei normalen Sachen geht das perfekt. Ein zfs get all produziert aber knapp 1 MB an Daten und das ist zuviel für den Sockerserver auf meinem OmniOS. Ich vermute dass ich da Puffer Probleme bekomme. Ich experimentiere mit file send und tmp Files, aber auch das scheint nicht zu klappen. Ich muss wohl auf async sockets gehen was es komplizierter macht vor allem weil die Module nicht so plattformunabhängig sind.

Für erste Versuche mit OmniOS/Solaris reicht es aber. Als nächstes werde ich die Plattenerkennung anpassen. Da gibt es die größten Unterschiede BSD/ Linux/ OSX/ Solaris und Windows und da muss je ein Softwaremodul sein. Die OS Erkennung sollte bereits funktionieren wenn man den Socketserver startet. Dieser sollte dann das OS und die Release ausgeben und auch Konsolebefehle remote ausführen können (napp-it cmd Eingabe)

Napp-it for ZFS on Windows heißt jetzt napp-it cs (client/server), soll ja beliebige ZFS Server managen.
 
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