[Übersicht] OpenZFS NAS (BSD, Illumos, Linux, OSX, Solaris, Windows + Storage Spaces) mit napp-it web-gui

gea

Urgestein
Thread Starter
Mitglied seit
16.11.2010
Beiträge
5.783
Da meine ZFS Web-GUI neben Linux und Unix nun auch Windows unterstützt, habe ich mich mit Windows Storage Spaces beschäftigen müssen damit das sauber zusammenarbeitet. Die haben ja einen denkbar schlechten Ruf vor allem was Performance anbelangt. Prinzipiell ist aber die Idee dahinter sehr ansprechend.

Man wirft einfach alle Platten die man hat in einen Storage Pool ohne sich Gedanken um Kapazitäten oder Raid Redundanz zu machen. Dank Thin Provisioning kann man mit zwei 20 TB Platten einen viel größeren Pool definieren z.B. 100 TB. Wenn man dann später tatsächlich den Platz benötigt, kann man einfach Platten hinzufügen oder auch wieder entfernen sofern genug Platz für vorhandene Daten da ist.

In einem weiteren Schritt legt man Storage Spaces (virtuelle Platten) darauf an. In diesem Schritt kann man die Raid Redundanz individuell per Space angeben. Das bedeutet dass Raid nicht über physische Platten sondern dadurch realisiert wird, dass mehrere Stripes oder Kopien der Datenblöcke auf den Platten abgelegt werden. Man kann damit per Space entscheiden ob man Redundanz entsprechend Basis, 2/3 way Mirror, Raid-10 oder single/double Parität (entsprechend Raid 5/6) will.

Auf den Spaces/virtuellen Platten kann man dann Partitionen anlegen und mit einem Dateisystem formatieren. Spaces können in der Größe einfach geändert werden oder wachsen. Als im Prinzip hat man die Pool Flexibilität die man mit Raid egal ob mit ZFS oder anderem Raid nicht hat. Storage Space können dabei richtig schnell sein wenn man statt Thin Provisioning Thick Provisioning nutzt, Raid 0/1/10 Spaces statt Parity nutzt und vor allem die Partition mit 256K Blöcken statt den Default 4K Blöcken formatiert.

Dazu funktionierendes SMB direkt, ReFS und neuerdings ZFS, was will man mehr.
Leider ist die Usability, naja verbesserungswürdig.

Pool und Spaces anlegen in Startmenü > Einstellungen > System > Speicher > Erweitert > Spaces geht ja noch wenn man das mal gefunden hat und das Prinzip verstanden hat. Leider kann man da nicht alles einstellen so dass man doch die Powershell benötigt. Auch ist daas Handling großer Pools schrecklich wenn man ZFS gewohn ist. Storage Spaces + ReFS + künftig ZFS läßt aber kaum Wünsche offen.

Mit Powershell kämpfe ich noch.

Falls jemand einen Weg gefunden hat mit Powershell und New-StoragePool einen Pool nur aus ausgewählten Platten z.B. physicaldisk4 und 5 anzulegen statt aus allen freien, kann er ja hier was dazu schreiben. Die KI liefert nur nicht funktionierende Lösungen und Google praktisch nichts brauchbares. Über das Einstellmenü geht das, da fehlen halt manche Optionen wir Provisioning.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Warum nutzt du nicht den Server Manager - Datei-/Speicherdienste?

Weil ich Windows 11 als Referenzplattform für ein Windows NAS sehe.
Windows Server kann natürlich mehr und manches einfacher, ist aber nicht Vorraussetzung für ein Windows NAS
(ReFs soll in allen Windows 11 kommen, geht jetzt schon mit dev drive oder Aktivierung in der Registry).

Ich hoffe dazu dass ZFS bald eine Reife auch unter Windows erlangt, dass man es wirklich nutzen kann.
Es kann soviel was Windows Storage Spaces auch absehbar nicht können wird, dafür kann Storage Spaces Sachen die ZFS niemals bieten wird.
 
@gea: hab mal schnell Google angeschmissen, das scheint in Deine Richtung zu gehen:

Here an real world example for using the serialnumber. This is from my log creating a parity space, I always log how I create the storage space. I am omitting the drives I am not using for storage space here:
Code:
Get-PhysicalDisk | ft friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,Usage

friendlyname            canpool CannotPoolReason               size uniqueid         SerialNumber    Usage
------------            ------- ----------------               ---- --------         ------------    -----
ST33000651AS               True                       3000592982016 5000C5002DFAB4EE 9XK0EC9S        Auto-Select
WDC WD30EFRX-68AX9N0       True                       3000592982016 50014E6EADFAE1EF WD-WMC1T3418930 Auto-Select
WDC WD30EFRX-68AX9N0       True                       3000592982016 50014E6E58A5BD05 WD-WMC1T3536082 Auto-Select

New-StoragePool -FriendlyName Pool-F -StorageSubSystemFriendlyName "Windows Storage*" -LogicalSectorSizeDefault 4096 -PhysicalDisks (Get-PhysicalDisk | ?{"9XK0EC9S;WD-WMC1T3418930;WD-WMC1T3536082".Contains($_.SerialNumber)})
    
FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly    Size AllocatedSize
------------ ----------------- ------------ ------------ ----------    ---- -------------
Pool-F       OK                Healthy      False        False      8.19 TB        768 MB

I could have used Unique ID:

Code:
New-StoragePool -FriendlyName Pool-F -StorageSubSystemFriendlyName "Windows Storage*" -LogicalSectorSizeDefault 4096 -PhysicalDisks (Get-PhysicalDisk | ?{"5000C5002DFAB4EE;50014E6EADFAE1EF;50014E6E58A5BD05".Contains($_.uniqueid)})

In your case you can use PhysicalLocation or ObjectID as selector as well... Here the list how it looks right now with physical location:
Code:
Get-PhysicalDisk | ft friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,PhysicalLocation,Usage

friendlyname            canpool CannotPoolReason               size uniqueid         SerialNumber    PhysicalLocation                                                Usage
------------            ------- ----------------               ---- --------         ------------    ----------------                                                -----
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6EADFAE1EF WD-WMC1T3418930 PCI Slot 1 : Bus 4 : Device 0 : Function 0 : Adapter 1 : Port 1 Auto-Select
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6E58A5BD05 WD-WMC1T3536082 Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 3 Auto-Select
ST33000651AS False In a Pool             3000592982016 5000C5002DFAB4EE 9XK0EC9S        Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 4 Auto-Select

Quelle
 
Danke, werd ich probieren mit UniqueID, SN gibts nicht immer
(wer hat sich bei M$ nur diesen Mist bei so einer Basis-Funktion wie neuer Pool ausgedacht)

Code:
Get-PhysicalDisk | ft number,friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,PhysicalLocation,Usage

number friendlyname               canpool CannotPoolReason              size uniqueid                               SerialNum
                                                                                                                    ber
------ ------------               ------- ----------------              ---- --------                               ---------
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666EB8940003
       SAMSUNG MZVLB512HBJQ-000L7   False Insufficient Capacity 512110190592 eui.0025388C91D12047                   0025_3...
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666EB8920001
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666FED900005
       Kingston DataTraveler 2.0    False Removable Media         7851737088 {65546af5-74a6-b07b-9e99-1f02a45717fc} 6BCEF7...
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666FED910006
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666EB8930002
       SUN COMSTAR                   True                        10737418240 600144F06DAD17700000666FED8F0004
       SUN COMSTAR                   True                        10737418240 600144F06DAD177000006672E2920007

Problem: Ich habe Number (physicaldisk6). Wie kriege ich das mit in die Liste?

Code:
Get-PhysicalDisk

Number FriendlyName               SerialNumber         MediaType   CanPool OperationalStatus HealthStatus Usage          Size
------ ------------               ------------         ---------   ------- ----------------- ------------ -----          ----
6      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
0      SAMSUNG MZVLB512HBJQ-000L7 0025_388C_91D1_2047. SSD         False   OK                Healthy      Auto-Select ...4 GB
4      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
3      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
1      Kingston DataTraveler 2.0  6BCEF7014E99         Unspecified False   OK                Healthy      Auto-Select 7.31 GB
7      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
5      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
2      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB
8      SUN COMSTAR                                     Unspecified True    OK                Healthy      Auto-Select   10 GB

außer zu hoffen dass die Reihenfolge gleich bleibt
 
Zuletzt bearbeitet:
Problem: Ich habe Number (physicaldisk6). Wie kriege ich das mit in die Liste?

Code:
Get-PhysicalDisk | ft DeviceId,friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,PhysicalLocation,Usage

Darüber bin ich auch schonmal gestolpert... wenn man get-physicaldisk macht gibt es eine Number, die es als Eigenschaft aber nicht gibt, das ist die DeviceId. Vielleicht ist das sowas wie ein Alias?
 
Ach verdammt. Da bin ich selber schonmal drübergestolpert und hatte das bereits berücksichtigt.
Auf jeden Fall Danke

hash_disk.png
 
Zuletzt bearbeitet:
Eigentlich bin ich eine ziemlich gute Partie.

Dieser Spruch fällt mir ein wenn es um Storage Spaces geht,
Eigentlich ein cooler Ansatz, nicht für einen Petabyte Server mit 20-200 Platten aber für einen SoHo Server bei dem man beliebig Platten mischen möchte. Wäre das von der Usability nicht so unsäglich bescheuert, die Namensgebung von Pool, Storage Space, Virtual Disk, Volume oder Partition einheitlich und nicht so verworren und müßte man nicht für jeden Mist die Powershell bemühen, würden das sicher viel mehr nutzen. Ich bin dabei grundlegenden Support von Storage Spaces in meine ZFS Web-GUI einzubauen, damit man das für einfache Setups bedienen kann ohne ein Microsoft Certified Systems Engineer zu sein.
 
Och, sooooo schlimm finde ich es nicht. Immerhin bin selbst ich damit halbwegs klargekommen. :d Aber ne hübsche GUI ist natürlich willkommen! :)
 
Im Prinzip ist Storage Spaces ja genial. Man wirft alles was man hat in eine große Kiste (Storagepool) und bedient sich daraus später beim Anlegen von Storagespaces (Virtuellen Platten) und kann dabei Performance, Redundanz, Tiering und vieles mehr individuell festlegen. Erfordert aber massives Umdenken beim Handling wenn man konventionelles plattenbasiertes Raid gewohnt ist. Eingespielte Abläufe funktionieren so nicht mehr und man muss für manche Redundanzeinstellungen immer die benötigte Mindestanzahl von physischen Platten im Auge haben, z.B. 5 für einen Space der 3way Mirror Sicherheit haben soll. Umso ärgerlicher wenn das chaotisch dokumentiert ist, chaotisch und unvollständig in den Windows Einstellungen umgesetzt ist und man ohne Powershell komplett verloren ist, https://learn.microsoft.com/en-us/powershell/module/storage/?view=windowsserver2022-ps

Aktuell bin ich immer noch dabei mir zu überlegen wie man alltägliches auf die Reihe bekommt. Nachdem es mich einen Tag gekostet hat einzelne Platten gezielt einem Pool als hotspare oder Datendisk hinzuzufügen, scheitere ich schon wieder beim Versuch einzelne Platten aus einem Pool wieder herauszunehmen und zu ersetzen. Es gibt zwar ein remove-physicaldisk der das macht, aber damit das strukturiert geht, benötige ich zunächst die Information welche Platten sich im Pool xx befinden. Ich finds einfach nicht.

Ich krieg da Magenkrämpfe...
 
Microsoft Certified Systems Engineer zu sein.
Server Expert heißt des jetzt, Systems Engineer sind die alten Titel :LOL:

Btw: schau mal ob du dir die RSAT für W11 installieren kannst und dort im Server-Manager deinen lokalen W11 hinzufügen kannst (ich hab keine W11 Kiste und möchte ehrlich gesagt keine zum Testen aufsetzen).
 
Zuletzt bearbeitet:
Die Philosophie in meiner Web-Gui ist, dass man die nur kopieren muss um sie zu starten. Einstellungen können mit Web-Gui oder manuell vorgenommen werden. Entweder muss ich mich davon verabschieden oder eben mit Plan A alle Platten die auf canpool=false stehen bis auf die OS Platte zum remove anbieten, egal ob ob Pool member oder nicht. USB Datenträger sind dann auch dabei auch wenn sie nicht einem Pool angehören. In der Regel passiert ja nicht mehr als eine Fehlermeldung wenn das keinen Sinn macht.. Hat man mehrere Pools muss man Buch führen.

Plan B wäre das was TrueNAS auch macht. Storage settings in der GUI protokollieren. Man fällt halt dabei auf die Nase wenn etwas außerhalb der GUI geändert wird. Ich werde wohl Plan B als Info umsetzen und es dem Nutzer überlassen ob er eine beliebige Platte versucht generell aus (irgendwelchen) Storage Pools zu entfernen. Dabei wäre es so einfach wenn get-physicaldisk nicht nur canpool zeigen würde, sondern auch eventuelle Pool Mitgliedschaften.

Wahrscheinlich bin ich da auch zu pingelig. Im angepeilten Nutzer Szenario werden kaum mehrere Storage Pools oder sehr große vorkommen. Sobald die ZFS Integration sich ausreichend gut in Windows einfügt und Kompatibilitätsprobleme wie aktuell mit Aomei Backupper und zvols beseitigt sind, sehe ich Storage Spaces ausschließlich als (High Performance) Ergänzung zu ZFS Pools. ZFS on Windows selber ist Open-ZFS 2.2.3 und voll kompatibel zu Linux ZFS. (Sofern main Raid-Z Expansion in Windows nicht nutzt. Damit verliert man Kompatibilität mit älterem Open-ZFS)
 
Ging mir mit RSAT (hier der Server-Manager) eig mehr drum, das du deine GUI bekommst für StorageSpaces die brauchbar ist und nicht die im Windows Client integrierte (die ja laut deiner Aussage nicht so dolle ist, ich hab die bisher nicht genutzt).
Mal nen einfaches Beispiel davon:
1719057182004.png


Gibt leider keine Möglichkeit (zumindest mir jetzt keine bekannte) StorageSpaces mittels WAC (Windows Admin Center, das läuft auch auf den Clients wunderbar) zu verwalten.
 
Mein Ziel ist, die wichtigsten Funktionen und sinnvolle Abläufe remote per Web-GUI zu managen so dass man dafür weder Windows Tools, spezielle Software oder Powershell Kenntnisse benötigt, ganz so wie man das unter Linux/Unix ZFS Storage Appliances gewohnt ist. Praktischerweise können sich dann ZFS und Storagespaces wunderbar ergänzen.
 
Zuletzt bearbeitet:
Hehe, als ob man in Linux / BSD / Solarish auch nur einen brauchbaren Schritt ohne Griff zur Konsole und entsprechenden Kenntnissen machen könnte. ;)

Mit Windows hast du eigentlich erstmalig die realistische Chance, dieses Ziel zu erreichen. :d
 
Ich habe ja nix dagegen, mich in Powershell einzuarbeiten, auch wenn Sun bei ZFS vor 20 Jahren mit zwei Befehlen mehr Storagemanagement hinbekommen hat als Powershell mit gefühlt 200. Mein Problem ist, dass grundlegendste Funktionen wie einzelne Platten einem Pool zuzuweisen oder wegzunehmen nur über Umwege funktionieren oder schlicht zu fehlen scheinen. Einen Menüpunkt zu einer Funktion in der Web-GUI anzulegen, dauert dann Minuten, die Recheche zur Umsetzung Tage.

Die arg eingeschränkte Funktionalität der Windows Tools zum Storagemanagement rührt vielleicht auch daher. Aber ich werde das auch irgendwie in den Griff bekommen. Ich will ja nur einfaches lokales Storagemanagent in der Web-GUI und lasse die komplizierten Funktionen wie Cluster oder Tiering eh weg.
 
Zuletzt bearbeitet:
Ich muss bei Powershell Abbitte leisten.
Das Problem sitzt vor dem Rechner. Ich muss mich erst voll daran gewöhnen, dass die Struktur und Anordnung von Storage Spaces ganz anders ist als bei Raid Arrays und dass man in der Powershell kaum Werte direkt angeben kann sondern immer eine Selector oder Filterfunktion braucht.

Um die Platten eines Pools "xx" zu erhalten, gibt man ein:
Get-PhysicalDisk -StoragePool (Get-StoragePool -FriendlyName "xx") | ft deviceid

Ich muss das ja auch nur einmal herausfnden um das in das entsprechende Menü der Web-GUI einzubringen und kanns dann wieder vergessen. Ist halt nicht sonderlich intuitiv und ohne halbwegs komplette Web-GUI nur was für "Microsoft certified Server Experts" oder wie das jetzt heißt.

Hoffentlich können die KI bald Powershell.
Abenteuerlich was bei Bing und Gemini an Ergebnissen kommt....

1719146370822.png
 
Zuletzt bearbeitet:
Eigentlich bin ich eine ziemlich gute Partie.

Dieser Spruch fällt mir ein wenn es um Storage Spaces geht,
Eigentlich ein cooler Ansatz, nicht für einen Petabyte Server mit 20-200 Platten aber für einen SoHo Server bei dem man beliebig Platten mischen möchte. Wäre das von der Usability nicht so unsäglich bescheuert, die Namensgebung von Pool, Storage Space, Virtual Disk, Volume oder Partition einheitlich und nicht so verworren und müßte man nicht für jeden Mist die Powershell bemühen, würden das sicher viel mehr nutzen. Ich bin dabei grundlegenden Support von Storage Spaces in meine ZFS Web-GUI einzubauen, damit man das für einfache Setups bedienen kann ohne ein Microsoft Certified Systems Engineer zu sein.

wenn dir ps nicht liegt => schau dir mal Windows Admin Center an. Zumindest für S2D Setups kann man bei Bedarf auch alles in der Gui erledigen.
 
Die Powershell macht irgendwie den Eindruck Mega-mächtig zu sein, wenn man einmal WIRKLICH die Logic, Syntax usw. begriffen hat. Und täglich damit arbeitet (also Erlerntes nicht direkt wieder vergisst). Dummerweise gilt beides nicht für mich…

Galt aber bei mir auch schon für die Bash. Für mehr als Google + Modifikation von gefundenen Beispielen für den konkreten Bedarf hat’s im Ergebnis nie gereicht.
 
wenn dir ps nicht liegt => schau dir mal Windows Admin Center an. Zumindest für S2D Setups kann man bei Bedarf auch alles in der Gui erledigen.

Es geht mir ja nicht darum, Storage Spaces ohne Powershell zu verwalten, sondern das für übliche Anwendungsfälle in meine Web-GUI zu integrieren - zusätzlich zum darin enthaltenen ZFS Management. S2D werde ich aber außen vor lassen und mich nur um lokale Storage Spaces kümmern.

Aber es gibt sicher andere, die hier Anregungen zum Verwalten von Storage Spaces suchen - ohne meine Web-Gui nutzen zu wollen.
 
Zuletzt bearbeitet:
Von Linux bin ich ja gewohnt, dass es für jedes Problem mindestens drei Lösungen gibt. Von ZFS bin ich gewohnt dass es keine genauen Namen für etwas gibt z.B. bei "ZFS filesystem". Für Sun war das ein ZFS dataset vom Typ filesytem (zfs get -t filesystem) im Unterschied zu snap oder volume. Nexenta nannte das volume und viele nennen ein Filesystem dataset weil Filesystem außerhalb von ZFS etwas ganz anderes bedeutet. Diese Unschärfe in der Benennung führt gerne zu Missverständnissen.

Mit Windows & Storage beschäftige ich mich gerade etwas intensiver und habe den Eindruck, dass da die Namensunschärfe noch extremer ist. Ist denn jedem klar was es unter Windows bedeutet wenn man folgendes anlegt oder im Diskmanager findet oder per Powershell z.B. mit get-disk, get-physicaldisk, get-volume, get-storagepool oder get-partition abruft.

Software Raid-Array
Storage Pool
Storage Space
Virtual Disk
Msft Virtual Disk
Volume
Partition
Dateisystem

Insbesondere sollte man sich im Klaren sein, ob man auf einem Windows ein klassisches Softwareraid z.B. Raid-5 hat oder möchte (hat den schlechten Ruf von Windows Softwareraid begründet) oder das neuere und flexiblere Storage Spaces Konzept. Damit verbunden sind nicht nur andere Features sondern ganz andere Vorgehensweisen oder Punkte die es zu beachten gilt. Ich selber werde mich unter Windows künftig auf Storage Pools mit Storage Spaces = Virtual Disks idealerweise mit ReFS als Dateisystem konzentrieren. Das hat immerhin mit Copy on Write und Echtzeit Prüfsummen die beiden wichtigsten ZFS Feautures erhalten, aich wenn mit Verschlüsselung, Compress, Echtzeit Dedup, sync write, Hybrid Pools für small io,... noch wahnsinnig viel fehlt was ZFS hat und kann, und das bei viel einfacherem Handling. Ob ZFS aber ansatzweise so schnell sein kann wie ntfs oder ReFS muss man sehen.

Eine Sonderstellung nimmt Msft Virtual Disk ein. Während Virtual Disk einen Teil eines Storage Pools meint und ein Synonym für einen Storage Space ist, ist eine MSFT Virtual Disk eine einfache Datei auf einem beliebigen Ort auch auf einem Netzlaufwerk (.vhd, .vhdx) die dem OS gegenüber als Festplatte verwaltet wird. Man legt die im Diskmanager an und kann darauf Partitionen und Dateisysteme anlegen wie auf echten Platten. Kommt natürlich von Hyper-V für virtuelle Maschinen.

Zusammen mit ZFS ergeben sich sogar zwei weitere Anwendungen. Man könnte damit einen Teil einer NVMe als Slog oder L2Arc nutzen. Ob es Sinn macht, damit auch sonstige vdevs z.B. special vdev zu versorgen (mit Redundanz), da bin ich mir noch nicht ganz sicher. Da diese virtuellen Platten aber für VMs konzipiert sind, würde ich aber davon ausgehen dass das gehen sollten.

Eine weitere Anwendung die unter Solaris häufiger genutzt wird, sind Pools auf Dateien für Backupzwecke. Unter ZFS kann man darauf ganz normal inkrementell replizieren. Mann kann die aber auch einfach als Dateien wegsichern, mit Raid Redundanz und Verschlüssellung und bei alten Dateisystemen zur Not in 2GB Häppchen.
 
Da ich mich gerade intensiver damit beschäftige,
mal ein paar Basics zu einem NAS mit Windows

1.) Platten

Klingt trivial wenn man an physische Festplatten denkt. Heutzutage arbeitet man aber häufig mit virtuellen Platten.

Eine erste Übersicht erhält man in Windows mit der Powershell und Get-PhysicalDisk oder bei mir

1719845926898.png
Neben der SSD und einem USB Stick sieht man iSCSI Targets von meine OmniOS Storageserver (Comstar). Die werden über den Windows iSCSI Initiator bereitgestellt, dazu dann virtuelle Festplatten mit dem Hersteller Msft . Das sind dateibasierte Festplatten die für Hyper-V und virtuelle Maschinen gedacht sind, die aber sehr praktisch sind. Man kann die auch thin provisioned anlegen. Dann brauchen sie nur soviel Platz wie Daten darin gespeichert sind. Die Größe ist "begrenzt" auf gut 65000 GB. Für maximale Performance sollte man die aber thick provisioned anlegen. Man kann mit diesen dateibasierten Platten ales machen was man auch mit physischen Platten machen kann. Nach dem Booten oder bei Bedarf kann man diese virtuellen Platten connecten/disconnecten. Vor einem optionalen Löschen disconnecten.

Um sich die Daten dieser virtuellen Platten anzusehen gibt es den Befehl Get-VHD -Path <datei> oder

1719846767641.png

Wenn man die virtuellen Platten nur an einem bestimmten Ort ablegt z.B. c:\vhdx oder v:\vhdx oder \\ip\vhdx fällt es einem leicht den Überblick zu behalten. Ich kombiniere bei mir die Ansicht mit Canpool aus dem Disk Menü. Das ist die Information ob die Platte bereits Mitglied eines Windows Pools ist. Ich werte auch die Mitgliedschaft in einem ZFS Pool aus.

2. Pools

Meist hat man mehrere Platten um daraus ein Raid oder einen Pool zu bauen. Bei Windows hat man drei Pooling Optionen

2.1. normales Software Raid 1/5 aus mehreren Platten.
Die erstellt man im Festplattenmanager. Hat keinen sonderlich guten Ruf unter Windows weshalb bisher meist Hardwareraig genutzt wird

2.2. Storage Spaces
Das ist kein plattenbasiertes Raid sondern ein Verbund beliebiger Festplatten.
Über Datenkopien auch auf mehreren Festplatten kann man darauf Storage Spaces (nennt man auch virtuelle Platten um Verwirrung zu stiften) anlegen. Fällt eine Platte aus sind alle Daten darauf verloren für die man nicht Redundanz über mehrere Platten gewählt hatte. Ansonst kaputte Platte raus und neue Platte dem Pool anfügen und rebalancing (optimieren) laufen lassen. Hotspare oder Tiering gibts auch.

1719847988063.png


2.3. ZFS Raid
muss ich nichts zu sagen. Ist noch beta/release candidate aber die cs6 ist schon wirklich gut.

3. Storage Spaces oder ZFS Dateisysteme

Ein Pool ist ein Verbund mehrerer Festplatten. Um den im Ganzen oder in Teilen zu nutzen legt man Storage Spaces an. Das sind aus Sicht von Windows virtuelle Platten die man partitionieren und z.B. mit ntfs oder ReFS formatieren kann. Die Partitionen können wachsen (oder schrumpfen.)

Auf einem ZFS Pool legt man ZFS Dateisysteme an. Deren Größe ist nicht festgelegt, die können automatisch nutzen was da ist. Regeln kann man das mit Reservierungen und Qotas

1719848602742.png
 

Anhänge

  • 1719844312495.png
    1719844312495.png
    75,6 KB · Aufrufe: 45
  • 1719844367470.png
    1719844367470.png
    75,6 KB · Aufrufe: 44
  • 1719847952374.png
    1719847952374.png
    43,7 KB · Aufrufe: 67
ZFS Storagecluster

ZFS Pools über Nodes (z.B. ein Mirror oder Raid-Z nicht über Platten sondern über ganze Server)
So ein Storage erlaubt den Ausfall eines oder mehrerer kompletter Server. Dazu skaliert die Performance mit der Anzahl der Servernodes.

Einrichtung unter Windows ist ultra einfach

1. Auf jedem Server eine SMB Freigabe \\ip\vhdx anlegen.
Der Server der das ZFS Raid verwaltet (master, localhost) kann auch Node sein und muss screibend auf die Shares zugreifen können.

2. Eine filebasierte virtuelle Platte auf jedem Node in dem share anlegen (\\ip\vhdx\cs_server.vhdx)
entweder manuell oder via napp-it. Minimale Größe 10GB, max Größe 65000 GB. Thin Provisioned ist möglich.

1720023161995.png


Wenn diese Platten connected sind (in meinem Beispiel drei Nodes), so erscheinen die für ZFS als normale Platten auf denen sich ein Pool aufbauen läßt, z.B. ein 3way Mirror über 3 Server

1720023394892.png


Besonderheiten die mir aufgefallen sind.

Fällt ein Node aus (eine Platte aus ZFS Sicht), ist der Pool degraded.
Um den Node wieder einzubinden musste ich Disk > Replace aufrufen und nur die ausgefallene anwählen.
(Ersetze offline Platte mit sich selber)

Die Nodes müssen nicht Windows sein. In meinem Test habe ich Windows und OmniOS nodes

Wird eine dateibasierte virtuelle Platte von einem Server connected, ist sie für andere gesperrt was so einen Cluster sehr sicher macht.

SMB Direkt erfordert Windows Server als Master der das Raid und die SMB Shares verwaltet. Clients müssen SMB direkt unterstützen.

Natürlich kann man auch einen Storage Space erstellen mit Redundanz über die Storagenodes.

Wäre jetzt natürlicj interessant wie ein Raid Cluster (Raid-0) mit SMB Direkt im Netz skaliert (@besterino oder wer sonst hat so schnelle Netzwerksachen?). Ich habe leider keine schnelle SMB direkt Hardware um das zu testen.
 
Zuletzt bearbeitet:
Ich hab leider nicht die nötige Anzahl „freier“ Rechner, um das mal eben nebenher hochzuziehen. :(
 
Vielleicht findet sich ja jemand mit einem Windows Server als Master für SMB direkt >10Gb und zumindest einem Windows 11 Rechner als Stripe Partner für ein Raid-0 oder 1. Der kann auch gleichzeitig SMB Client für einen ersten Performancetest sein, idealerweise einen dritter Rechner als Client damit nicht alles zweimal über das gleiche LAN geht, ginge auch virtualisiert. Es kommt ja nicht auf absolute Werte an sondern um eine Größenordnung, ob das Konzept insgesamt funktioniert und entsprechend niedrige Last zeigt und ob ein Raid-0 aus zwei Nodes wirklich schneller wird oder ob man nur den Ausfall eines kompletten Nodes verkraften kann ohne dass SMB ausfällt.

Bisher war ein Netzwerk HA Mirror egal ob mit ntfs/ReFS oder ZFS z.B. über iSCSI ja relativ langsam und recht kompliziert im Betrieb. Mit SMB und vhdx aus Hyper-V könnte das anders aussehen. SMB direkt ist das Sahnehäubchen wenn man richtig Performance braucht (Multuser 4k Videobearbeitung)
 
Klingt echt cool.
 
Hmmm... juckt mich ja doch in den Fingern, damit rumzuspielen. Ich werd's aber wohl vor Mitte August nicht realistisch schaffen.
 
Man kann natürlich fragen "was geht und wie schnell geht dann ein Move einer 100 GB VM von a nach b".

Interessanter sind z.B. folgende Fragen
- ist das Konzept eines SMB Servers mit Daten auf lokalen oder remote vhdx virtual disks stimmig (auch von der usability)
- skaliert das gut wenn man statt einer vhdx auf einer physischen Platte ein vhdx auf einem Storage Space aus einem lokalen Stripe anlegt
- wie groß ist der Unterschied thin provisioned vs thick provisioned oder 4k Formatierung vs 256k z.B. bei ntfs auf einem Space

- wie groß ist der Unterschied SMB3 multichannel vs SMB direkt
z.B. SMB Zugriff auf SMB Server auf Win11 vs SMB Server auf Windows Server mit SMB direkt bei gleichen Platten (Cluster)

- wie skaliert die Performance wenn man ein Raid-0 Stripe über1, 2 oder mehr Nodes hat
bei dem ja jeder komplette Noderechner sich wie eine phsische Platte verhält die über das Netz nutzbar ist

In welchen Nutzerszenarien macht was Sinn (VM Server, Videoschnitt, Hochverfügbarer Office Fileserver, Homeserver etc)
Ich denke die Frage nach Konzept, Nutzerszenarien und SMB vs SMB direkt ab 10G und wie skaliert das wären die interessntesten.


Leider gibt es nicht soviel Erfahrungsberichte mit aktuellem Windows als flexibles NAS. Die Option "Windows AiO NAS" ging in den letzten Jahren etwas unter oder hatte einen denkbar schlechten Ruf, das könnte sich ja ändern
 
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