2010-12-13 13 views
0

Dies ist ein wenig im Zusammenhang mit meiner vorherigen Frage Solaris: Mounting a file system on an application's handlers mit Ausnahme dieser Frage ist für einen anderen Zweck und ist einfacher, da es nicht öffnen/schließen/sperren ist es nur eine feste Länge Block von Bytes mit Lese-/Schreiboperationen.Solaris: virtuelle Scheiben/Scheiben für die Verwendung mit ZFS

Gibt es sowieso ich kann eine virtuelle Scheibe, ein bisschen wie eine RAM-Disk oder eine SVM-Scheibe .. aber ich möchte die Lese-und Schreibvorgänge durch meine App gehen.

Ich plane, ZFS zu verwenden, um mehrere dieser virtuellen Slices/Festplatten zu einem größeren für verteilte Backup-Speicher mit Snapshots zu machen. Ich mag die Komprimierung und Stapelung, die ZFS bietet. Bei Bedarf kann ich garantieren, dass nur eine Instanz von ZFS auf diese virtuellen Laufwerke gleichzeitig zugreift (um Cache-Konflikte und ähnliches zu vermeiden). Wenn die eine Instanz ausfällt, können wir sicherstellen, dass sie nicht mehr startet, und dann können wir eine weitere Instanz dieses ZFS starten.

Ich plane, diese Festplatten in Blöcken von etwa 4 GB oder so, dann kann ich um jeden Block bewegen und entscheiden, wo sie gespeichert werden (mehrfach gespiegelt natürlich) und dann ZFS Zugriff auf die Brocken und setzen sie zusammen in größere Brocken für den tatsächlichen Gebrauch. Auch ZFS würde das Hinzufügen dieser kleinen Stücke erlauben, falls notwendig, um die Größe des grßeren Stücks zu erhöhen.

Ich bin mir bewusst, dass es zusätzliche Latenz/Netzwerkverkehr wäre, wenn wir meine eigene App in Java verwenden, aber dies ist nur für Backup-Speicher. Der Produktionsspeicher ist eine völlig andere Konfiguration, die nicht in Beziehung steht.

Bearbeiten: Wir haben ein System, das den gesamten verfügbaren Speicherplatz verwendet und im Grunde, wenn nicht genug Platz ist, wird es alte Snapshots entfernen und die Lücken zwischen alten Snapshots vergrößern. Der Zweck meines Vorschlags ist es, den ungenutzten Platz von Produktionsanlagen ohne zusätzliche Kosten nutzen zu können. Zu unterschiedlichen Zeiten haben unterschiedliche Einheiten unserer Produktionsanlagen freien Platz. Auch das System, das ich beschreibe, sollte jeden einzelnen Fehlerpunkt beim Versuch, auf Daten zuzugreifen, eliminieren. Ich hoffe, dass ich nicht zwei große Einheiten kaufen und synchronisieren muss. Ich hätte lieber zwei Zugangspunkte und dann können wir große/kleine Einheiten beliebig kombinieren und Daten nahtlos umstellen.

Dies ist ein Cross-Post, weil dies mehr Software als Sysadmin verwandt ist Die ursprüngliche Frage ist hier: https://serverfault.com/questions/212072. Es kann eine gute Idee sein, das Original zu schließen

Antwort

-1

Es scheint, dass jede Datei fester Länge in einem Dateisystem für ein Blockgerät für die Verwendung mit ZFS funktioniert. Ich bin mir nicht sicher, wie die Neustarts funktionieren, aber ich bin sicher, dass wir einige Boot-Befehle schreiben können, um das zu erledigen.

Bearbeiten: Die Datei fester Länge wäre in einem Netzwerk-Dateisystem wie NFS.

+1

Ich vermisse wahrscheinlich etwas, aber ich verstehe nicht, wie Ihre selbst angenommene Antwort die "aber ich will die Lese-und Schreibvorgänge durch meine App gehen" -Anforderungen.Zwei weitere Kommentare zu Ihrer Antwort: Eine einfache Datei muss eine minimale Größe haben, um als zpool-Backing-Speicher (64 MB) verwendet zu werden, und ein Neustart ist kein Problem, da ZFS einen persistenten Cache mit zpool-Einstellungen verwaltet benutzerdefinierte Boot-Up-Befehle. – jlliagre

+0

Sorry, mir war nicht klar. Ich habe getrennt gefragt [eine Frage, die sich darauf bezieht, wie man ein Netzwerk-Dateisystem (ähnlich wie NFS) mit den Handlern meiner App erhält] (http://stackoverflow.com/questions/4370125/solarismounting-a-file-system- on-a-applications-Handler). Dann könnte die Datei fester Länge auf dem Netzwerkdateisystem von ZFS verwendet werden. Gut zu wissen die minimale Dateigröße (64MB) .. Eigentlich plante ich 4GB oder so. –

2

Eine Möglichkeit wäre, einen Solaris-Gerätetreiber zu schreiben, genau ein Blockgerät, das eine echte Festplatte emuliert, aber stattdessen mit Ihrer Anwendung kommuniziert.

Beginnen Sie mit dem Lesen der Device Driver Tutorial, dann sehen Sie sich OpenSolaris source code für echte Treiber-Code.

Alternativ können Sie das Ändern des Solaris iSCSI-Ziels als Schnittstelle zu Ihrer Anwendung untersuchen. Auch bei OpenSolaris COMSTAR ist ein guter Anfang.