ZFS auf Linux einsetzen: Unterschied zwischen den Versionen
imported>Meap |
imported>Meap Keine Bearbeitungszusammenfassung |
||
Zeile 37: | Zeile 37: | ||
cd $basedir/zfs-${version} && ./configure && make deb && mv *.deb $debdir && dpkg -i $debdir/zfs*deb | cd $basedir/zfs-${version} && ./configure && make deb && mv *.deb $debdir && dpkg -i $debdir/zfs*deb | ||
rm -rf $basedir/spl-${version} $basedir/zfs-${version} | rm -rf $basedir/spl-${version} $basedir/zfs-${version} | ||
</pre> | |||
== ZPool erstellen == | |||
Dies bedarf des Studiums der Manpage von [http://docs.oracle.com/cd/E19253-01/816-5166/zpool-1m/|zpool] ''(wobei die Linux-Version ggf. einen älteren Version hat)'' | |||
Es stellt sich hierbei die Frage, welche Device-Bezeichnung man verwenden sollte. Meiner Meinung nach ist es nicht so geschickt, ''/dev/sda, /dev/sdb'' zu verwenden, da diese ggf. auch das Root-FS beinhalten könnten und ggf. Festplatten andere Bezeichnungen bekommen können ''(z.B. beim Umstecken der SATA-Ports)'' | |||
Ich favorisiere die Namen unter ''/dev/disk/by_id/ata...'', da diese die Festplatte eindeutig kennzeichnen. Der Nachteil ist sicherlich, die etwas lange Schreibform. | |||
'''Beispiel:''' | |||
Nehmen wir nun mal an, wir haben folgende Inhalt in ''/dev/disk/by-id/'' | |||
<pre> | |||
/dev/disk/by-id/ata-HDS725050KLA360_KRVN65ZAHMMZBF -> ../../sda # Root Filesystem | |||
/dev/disk/by-id/ata-HL-DT-ST_DVDRAM_GSA-H10N_K1B66FL2131 -> ../../sr0 # CDRom | |||
/dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F0ZPTW -> ../../sdd # fuer ZFS | |||
/dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F0ZTQC -> ../../sdj # fuer ZFS | |||
/dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F1076E -> ../../sdc # fuer ZFS | |||
/dev/disk/by-id/ata-ST3000DM001-9YN166_W1F0NA2S -> ../../sdg # fuer ZFS | |||
/dev/disk/by-id/ata-ST3000DM001-9YN166_W1F0TZ5T -> ../../sdh # fuer ZFS | |||
/dev/disk/by-id/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 -> ../../sdi # fuer ZFS | |||
/dev/disk/by-id/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 -> ../../sdb # fuer ZFS | |||
</pre> | |||
Nun erstellen wir ein Raid-Z ''(entspricht einem Raid-5)'' mit Namen 'hd' wie folgt: | |||
<pre> | |||
i=/dev/disk/by-id | |||
zpool create hd raidz \ | |||
$i/ata-ST3000DM001-1CH166_Z1F0ZPTW \ | |||
$i/ata-ST3000DM001-1CH166_Z1F0ZTQC \ | |||
$i/ata-ST3000DM001-1CH166_Z1F1076E \ | |||
$i/ata-ST3000DM001-9YN166_W1F0NA2S \ | |||
$i/ata-ST3000DM001-9YN166_W1F0TZ5T \ | |||
$i/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 \ | |||
$i/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 \ | |||
</pre> | |||
Dies wird nun durch den ZFS-Treiber direkt gemountet nach ''/hd''. Den Zustand des ZFS-Pools können wir uns nun anzeigen lassen mittels: | |||
<pre> | |||
zpool status -v hd | |||
pool: hd | |||
state: ONLINE | |||
scan: not scanned | |||
config: | |||
NAME STATE READ WRITE CKSUM | |||
hd-0 ONLINE 0 0 0 | |||
ata-ST3000DM001-1CH166_Z1F0ZTQC ONLINE 0 0 0 | |||
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 ONLINE 0 0 0 | |||
ata-ST3000DM001-1CH166_Z1F1076E ONLINE 0 0 0 | |||
ata-ST3000DM001-1CH166_Z1F0ZPTW ONLINE 0 0 0 | |||
ata-ST3000DM001-9YN166_W1F0TZ5T ONLINE 0 0 0 | |||
ata-ST3000DM001-9YN166_W1F0NA2S ONLINE 0 0 0 | |||
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 ONLINE 0 0 0 | |||
errors: No known data errors | |||
</pre> | </pre> |
Version vom 21. September 2012, 08:22 Uhr
ZFS steht unter der freien Sun-eigenen CDDL Lizenz, die sich leider nicht für Distibutoren mit der GPL vereinbaren läßt.
Diese Dilemma kann man als Linux-Nutzer umgehen, indem man die zfs-Pakete selber baut _(auch als DEB/RPM Pakete)_
Es ist noch anzumerken, dass die ZFS-Versionen mit der Übernahme von SUN durch Oracle ggf. auseinander laufen werden _(sprich unter Linux eine kleinere ZFS-Version existiert, wie unter Solaris oder Nexenta/SmartOS/...)_
Links
Homepage......................:}} http://zfsonlinux.org/ Dokumentation.................:}} http://zfsonlinux.org/docs.html [Wikipedia|http://de.wikipedia.org/wiki/ZFS_(Dateisystem)]
ZFS auf Linux bauen
(hier am Beispiel von Debian - es wird aber auch für RPM-Pakete beschrieben)
# Vorbereitung des Systems aptitude install build-essential gawk alien fakeroot linux-headers-$(uname -r) aptitude install uuid-dev # erleichterungen fuer neue Versionen version=0.6.0-rc10 basedir=/root/zfs debdir=$basedir/deb-${version} # herunterladen der aktuellen pakete mkdir -pv $debdir cd $basedir wget -p http://github.com/downloads/zfsonlinux/spl/spl-${version}.tar.gz wget -p http://github.com/downloads/zfsonlinux/zfs/zfs-${version}.tar.gz ln -s github.com/downloads/zfsonlinux/*/*${version}.tar.gz . # auspacken cd $basedir && tar -xzf spl-${version}.tar.gz && tar -xzf zfs-${version}.tar.gz # bauen & installieren der deb-Pakete cd $basedir/spl-${version} && ./configure && make deb && mv *.deb $debdir && dpkg -i $debdir/spl*deb cd $basedir/zfs-${version} && ./configure && make deb && mv *.deb $debdir && dpkg -i $debdir/zfs*deb rm -rf $basedir/spl-${version} $basedir/zfs-${version}
ZPool erstellen
Dies bedarf des Studiums der Manpage von [1] (wobei die Linux-Version ggf. einen älteren Version hat) Es stellt sich hierbei die Frage, welche Device-Bezeichnung man verwenden sollte. Meiner Meinung nach ist es nicht so geschickt, /dev/sda, /dev/sdb zu verwenden, da diese ggf. auch das Root-FS beinhalten könnten und ggf. Festplatten andere Bezeichnungen bekommen können (z.B. beim Umstecken der SATA-Ports)
Ich favorisiere die Namen unter /dev/disk/by_id/ata..., da diese die Festplatte eindeutig kennzeichnen. Der Nachteil ist sicherlich, die etwas lange Schreibform.
Beispiel: Nehmen wir nun mal an, wir haben folgende Inhalt in /dev/disk/by-id/
/dev/disk/by-id/ata-HDS725050KLA360_KRVN65ZAHMMZBF -> ../../sda # Root Filesystem /dev/disk/by-id/ata-HL-DT-ST_DVDRAM_GSA-H10N_K1B66FL2131 -> ../../sr0 # CDRom /dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F0ZPTW -> ../../sdd # fuer ZFS /dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F0ZTQC -> ../../sdj # fuer ZFS /dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F1076E -> ../../sdc # fuer ZFS /dev/disk/by-id/ata-ST3000DM001-9YN166_W1F0NA2S -> ../../sdg # fuer ZFS /dev/disk/by-id/ata-ST3000DM001-9YN166_W1F0TZ5T -> ../../sdh # fuer ZFS /dev/disk/by-id/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 -> ../../sdi # fuer ZFS /dev/disk/by-id/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 -> ../../sdb # fuer ZFS
Nun erstellen wir ein Raid-Z (entspricht einem Raid-5) mit Namen 'hd' wie folgt:
i=/dev/disk/by-id zpool create hd raidz \ $i/ata-ST3000DM001-1CH166_Z1F0ZPTW \ $i/ata-ST3000DM001-1CH166_Z1F0ZTQC \ $i/ata-ST3000DM001-1CH166_Z1F1076E \ $i/ata-ST3000DM001-9YN166_W1F0NA2S \ $i/ata-ST3000DM001-9YN166_W1F0TZ5T \ $i/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 \ $i/ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 \
Dies wird nun durch den ZFS-Treiber direkt gemountet nach /hd. Den Zustand des ZFS-Pools können wir uns nun anzeigen lassen mittels:
zpool status -v hd pool: hd state: ONLINE scan: not scanned config: NAME STATE READ WRITE CKSUM hd-0 ONLINE 0 0 0 ata-ST3000DM001-1CH166_Z1F0ZTQC ONLINE 0 0 0 ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0987954 ONLINE 0 0 0 ata-ST3000DM001-1CH166_Z1F1076E ONLINE 0 0 0 ata-ST3000DM001-1CH166_Z1F0ZPTW ONLINE 0 0 0 ata-ST3000DM001-9YN166_W1F0TZ5T ONLINE 0 0 0 ata-ST3000DM001-9YN166_W1F0NA2S ONLINE 0 0 0 ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ0966140 ONLINE 0 0 0 errors: No known data errors