ZFS/MacOS X: Unterschied zwischen den Versionen
Mile (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
SHL (Diskussion | Beiträge) |
||
Zeile 157: | Zeile 157: | ||
[[Kategorie:ZFS]] | [[Kategorie:ZFS]] | ||
[[Kategorie:Mac OS X]] | [[Kategorie:Mac OS X]] | ||
[[Kategorie:ZFS auf MacOS X]] |
Aktuelle Version vom 27. Dezember 2009, 15:58 Uhr
ZFS ist mittlerweile auf einigen Betriebssystemen verfügbar. Das feature set unterscheidet sich allerdings z.T. maßgeblich.
Für konkrete Anwendungen bitte immer die man-Pages des Betriebssystems konsultieren, z.B. für FreeBSD: zfs(8) und zpool(8)
ZFS im Einsatz unter MacOS X 10.5.8[Bearbeiten]
ZFS befindet sich konstant in der Entwicklung. Es ist noch nicht 100%ig feature complete.
Alle dokumentierte Features sind allerdings in aktuellen Releases von Solaris oder OpenSolaris enthalten.
Installation - Ablauf[Bearbeiten]
- Download des binär-Pakets
- Backup der mitgelieferten r/o-Komponenten
- Installation der r/w-Komponenten
- Erstellung eines ZPools
Installation der Patches[Bearbeiten]
mkdir -p ~/patch-ZFS-backup sudo cp /usr/sbin/zfs ~/patch-ZFS-backup/DIST.zfs sudo cp /usr/sbin/zpool ~/patch-ZFS-backup/DIST.zpool sudo cp /usr/lib/libzfs.dylib ~/patch-ZFS-backup/DIST.libzfs.dvlib sudo cp -R /System/Library/Extensions/zfs.kext ~/patch-ZFS-backup/DIST.zfs.kext sudo cp -R /System/Library/Extensions/zfs.readonly.kext ~/patch-ZFS-backup/DIST.zfs.readonly.kext sudo cp -R /System/Library/Filesystems/zfs.fs ~/patch-ZFS-backup/DIST.zfs.fs
Eine frische Installation von 10.5.x bringt nur /System/Library/Extensions/zfs.readonly.kext
mit, ein upgegradetes 10.5.0 allerdings auch /System/Library/Extensions/zfs.kext
- bitte entsprechend sichern was da ist.
tar xzvf $downloaded_file.tgz sudo cp build/Leopard_Release/zfs /usr/sbin/zfs sudo cp build/Leopard_Release/zpool /usr/sbin/zpool sudo cp build/Leopard_Release/libzfs.dylib /usr/lib/libzfs.dylib sudo /bin/rm -rf /System/Library/Filesystems/zfs.fs /System/Library/Extensions/zfs.kext sudo cp -R build/Leopard_Release/zfs.fs /System/Library/Filesystems/zfs.fs sudo cp -R build/Leopard_Release/zfs.kext /System/Library/Extensions/zfs.kext
Und zur Sicherheit noch:
sudo chown -R root:wheel /System/Library/Extensions/zfs.kext sudo chown -R root:wheel /System/Library/Filesystems/zfs.fs sudo chown -R root:wheel /usr/sbin/zpool sudo chown -R root:wheel /usr/sbin/zfs sudo chown -R root:wheel /usr/lib/libzfs.dylib
Warum auch immer, ab jetzt wird sudo
den Dienst verweigern und wir brauchen eine echte root-Shell.
sudo su -
Und ab jetzt bitte wirklich nachdenken vor'm Tippen.
Platten-Layout[Bearbeiten]
Per diskutil list
die für ZFS vorgesehene(n) Platte(n) suchen und entsprechend mit
diskutil partitiondisk /dev/diskX GPTFormat ZFS %noformat% 100%
formatieren. Die Platten müssen einen GPT-Label haben, APM funktioniert im Moment noch nicht.
Dies ist der richtige Moment um über sein Backup und die richtige Interpretation von diskutil list
nachzudenken!
diskutil partitiondisk /dev/disk2 GPTFormat ZFS %noformat% 100% Started partitioning on disk disk2 Creating partition map [ + 0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..100% ] Finished partitioning on disk disk2 /dev/disk2 #: type name size identifier 0: GUID_partition_scheme *9.4 GB disk2 1: EFI 200.0 MB disk2s1 2: ZFS 9.0 GB disk2s2
Dank dem neuen EFI/GPT-Label entstehen zwei Slices auf der Platte. Wir verwenden von nun ab nur das zweite Slice, in diesem Beispiel also disk2s2
.
Erstellung eines ZPools zum Test[Bearbeiten]
Das Kommando
zpool create test01 /dev/disk2s2
erstellt einen neuen ZPool bestehend aus einer Platte mit dem Namen test01
.
zpool status test01 pool: test01 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM test01 ONLINE 0 0 0 disk2s2 ONLINE 0 0 0 errors: No known data errors
Unter /Volumes
findet sich der Pool:
df -hl /Volumes/puddle Filesystem Size Used Available Capacity Mounted on test01 8.9Gi 19Ki 8.9Gi 1% /Volumes/test01
Da wir den Pool aber nur als Beispiel erzeugt haben - und um zu sehen, daß es funktioniert: weg damit.
zpool destroy test01
Jetzt meinen wir's ernst[Bearbeiten]
Rann an's Werk...
diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *465.8 Gi disk0 1: EFI 200.0 Mi disk0s1 2: Apple_HFS Macintosh HD 465.4 Gi disk0s2 [...] /dev/disk3 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.4 Ti disk3 1: EFI 200.0 Mi disk3s1 2: ZFS 1.4 Ti disk3s2 /dev/disk4 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.4 Ti disk4 1: EFI 200.0 Mi disk4s1 2: ZFS 1.4 Ti disk4s2
Die Platten disk3
und disk4
sind bereits für ZFS formatiert und bereit für den Einsatz.
zpool create raidz tank disk3s2 disk4s2
Der Pool tank
ist erstellt und bereits im System gemountet.
zpool status pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1 ONLINE 0 0 0 disk3s2 ONLINE 0 0 0 disk4s2 ONLINE 0 0 0 errors: No known data errors
Von nun ab kann der Pool normal über den Finder oder die Konsole genutzt werden. zfs
kann verwendet werden um zusätzliche Datasets anzulegen und zu konfigurieren. Siehe hierzu den Leit-Artikel zu ZFS.
Tricky wird nur noch das unmounten des Pools, da hier leider noch Handarbeit nötig ist. Da der Finder den Pool gemountet hat, genügt ein einfaches zpool export tank
nicht, wir müssen erst den Pool manuell im Finder ejecten. Immerhin sieht für den MacOS der Pool genauso aus wie eine extern angeschlossene Festplatte.
- eject im Finder
- unmount des Pools mit
export
zpool export tank
Sobald alle Platten des Pools am System angekommen sind wird der Pool automatisch imported und gemountet.
In den Screenshots: story? WTF? Ja - so heißt mein Pool, weil das dick und fett auf den Platten drauf steht. Und den Namen des Pools sollte man sich merken können.
Mehr Infos sowie Beispiele auf der Seite auf maxosforge.org.