ZFS auf root mit FreeBSD 9.1

Danke dann habe ich doch richtig überlegt. Mich würde jetzt aber noch etwas interessieren bezüglich "beadm".
Kannst du mal einen Auszug von "zfs list" posten? Sehe ich das richtig, dass wenn du "beadm create TEST" machst, von deinem "/usr" kein Snapshot gemacht wird?

offtopic:
Warum wird mein Profilbild nicht angezeigt?
 
Danke dann habe ich doch richtig überlegt. Mich würde jetzt aber noch etwas interessieren bezüglich "beadm".
Kannst du mal einen Auszug von "zfs list" posten? Sehe ich das richtig, dass wenn du "beadm create TEST" machst, von deinem "/usr" kein Snapshot gemacht wird?

Bei beadm werden alle Filesysteme unterhalb des Root mitgenommen.
Code:
root@mcp:/root # zfs list
NAME                                            USED  AVAIL  REFER  MOUNTPOINT
sys                                            1.74T  28.7G   144K  none
sys/ROOT                                       1.47G  28.7G   144K  none
sys/ROOT/default                               1.47G  28.7G  1.31G  legacy
sys/ROOT/default/var                            164M  28.7G   164M  /var
root@mcp:/root # beadm list
BE      Active Mountpoint  Space Created
default NR     /            1.5G 2012-09-25 09:15
root@mcp:/root # beadm create test
Created successfully
root@mcp:/root # beadm list
BE      Active Mountpoint  Space Created
default NR     /            1.5G 2012-09-25 09:15
test    -      -           16.0K 2012-09-27 04:43
root@mcp:/root # zfs list
NAME                                            USED  AVAIL  REFER  MOUNTPOINT
sys                                            1.74T  28.7G   144K  none
sys/ROOT                                       1.47G  28.7G   144K  none
sys/ROOT/default                               1.47G  28.7G  1.31G  legacy
sys/ROOT/default/var                            164M  28.7G   164M  /var
sys/ROOT/test                                    16K  28.7G  1.31G  legacy
sys/ROOT/test/var                                 8K  28.7G   164M  /var
Nach der Aktivierung von "test" wird es beim nächsten Neustart gebootet.
Code:
root@mcp:/root # beadm list
BE      Active Mountpoint  Space Created
default NR     /            1.5G 2012-09-25 09:15
test    -      -          236.0K 2012-09-27 04:43
root@mcp:/root # beadm activate test
Activated successfully
root@mcp:/root # beadm list
BE      Active Mountpoint  Space Created
default N      /          508.0K 2012-09-25 09:15
test    R      -            1.5G 2012-09-27 04:43
Alles Notwendige dafür wurde von beadm erledigt.
Code:
root@mcp:/root # zpool get bootfs sys
NAME  PROPERTY  VALUE          SOURCE
sys   bootfs    sys/ROOT/test  local
 
Wie sieht es eigentlich mit der atime aus? Gerade für SSDs und andere Flash-Datenträger schaltet das man ja gerne aus. Benötigt irgendein gängiges Programm die atime?
 
Soweit mir bekannt benötigt mutt atime. Das war wohl auch der Grund, warum unter linux relatime eingeführt wurde.
 
Das einzig mir bekannte Tool was atime benötigt, ist das lpd Drucksystem. Ohne atime spinnt die Spool, man kann z.B. Druckaufträge nicht nachträglich ändern. Davon einmal abgesehen, bringt die atime die SSD auch nicht um...
 
OK, alles was ich nicht benötige... von daher kann das aus. Habe mein System jetzt auf 2 CF-Karten im Mirror installiert. Mal gucken wie lange die halten.

Code:
NAME       SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
datapool  4,06T  3,94T   121G    97%  1.00x  ONLINE  -
datatank  8,12T   374G  7,76T     4%  1.00x  ONLINE  -
zroot     5,44G  1,01G  4,43G    18%  1.00x  ONLINE  -
 
Bei beadm werden alle Filesysteme unterhalb des Root mitgenommen.
Ja genau ich habe bei mir eine andere Variante. Nur dachte ich, "-Nuke-" wollte das auch noch einbauen aber so wie seine Config ist, kann es nicht funktionieren. Hier mal noch meine:

Code:
NAME                USED  AVAIL  REFER  MOUNTPOINT
tank               2.04G  15.6G    31K  legacy
tank/ROOT          2.02G  15.6G    31K  legacy
tank/ROOT/default  2.02G  15.6G  2.02G  legacy
tank/tmp           37.5K  15.6G  37.5K  /tmp
tank/usr           19.6M  15.6G    31K  legacy
tank/usr/home      19.5M  15.6G  19.5M  /usr/home

Bei einem Snapshot mit "beadm" wird "/usr/home" und "/tmp" ignoriert. Somit habe ich wirklich einen Snapshot des kompletten Systems :)
 
Hallo,

Habe das als Script gespeicher und wollte das über ssh auf das system Kopiert.
Nun bekomme ich beim ausfürhen folgende fehlermeldung:

zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot mirror /dev/gpt/disk0.nop /dev/gpt/disk1.nop

cannot create 'zroot': invalid argument for this pool operation

kennt einer das Problem ich weis gerade garnicht wo ich da ansetzten muss.

Jörg
 
Hast du vllt. irgendwo einen anderen Device-Namen? Sonst nimm mal das Skript:

Code:
#configure skript
DISK0=ada0
DISK1=ada1

#boot from install cd and choose "Live CD"
#add devices and install bootloader
gpart create -s gpt $DISK0
gpart create -s gpt $DISK1
gpart add -a 4k -s 512k -t freebsd-boot $DISK0
gpart add -a 4k -s 512k -t freebsd-boot $DISK1

##gmirror-swap##
gpart add -a 4k -s 4G -t freebsd-swap -l swap0 $DISK0
gpart add -a 4k -s 4G -t freebsd-swap -l swap1 $DISK1
##gmirror-swap##

gpart add -a 4k -t freebsd-zfs -l disk0 $DISK0
gpart add -a 4k -t freebsd-zfs -l disk1 $DISK1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $DISK0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $DISK1

#create pool
gnop create -S 4096 /dev/gpt/disk0
gnop create -S 4096 /dev/gpt/disk1
zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot mirror /dev/gpt/disk0.nop /dev/gpt/disk1.nop
zpool export zroot
gnop destroy /dev/gpt/disk0.nop
gnop destroy /dev/gpt/disk1.nop
zpool import -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot

#setup pool
zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot
zfs set atime=off zroot

zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=gzip-9 -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=gzip-9 -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

#create swap
#zfs create -V 4G -o org.freebsd:swap=on -o checksum=off -o sync=disabled -o primarycache=none -o secondarycache=none zroot/swap

##gmirror-swap##
gmirror label -b prefer swap gpt/swap0 gpt/swap1
##gmirror-swap##

#fix permissions
chmod 1777 /mnt/tmp
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/var/tmp

#install FreeBSD
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz kernel.txz doc.txz src.txz; #ports.txz lib32.txz
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

#final configuration
cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
echo 'LOADER_ZFS_SUPPORT=YES' > /mnt/etc/src.conf
echo 'WRKDIRPREFIX=/usr/obj' >> /mnt/etc/make.conf
touch /mnt/etc/fstab

##gmirror-swap##
echo '/dev/mirror/swap none swap sw 0 0' >> /mnt/etc/fstab
echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
##gmirror-swap##

zfs set readonly=on zroot/var/empty

#reboot into the new system
#passwd root
#tzsetup
#cd /etc/mail ; make aliases
#echo 'WITH_PKGNG=yes' >> /etc/make.conf
#...edit rc.conf
#in login.conf eintragen:
##:charset=UTF-8:\
##:lang=de_DE.UTF-8:\
#cap_mkdb /etc/login.conf

Das ist leichter im Anpassen der Device-Namen.
 
Super Sache.

Habe das Ganze kombiniert mit GELI. Funktioniert einwandfrei.

Code:
root@nas:/root # df -h
Filesystem        Size    Used   Avail Capacity  Mounted on
rpool/root        1.3T    120M    1.3T     0%    /
devfs             1.0k    1.0k      0B   100%    /dev
rpool/root/tmp    1.3T    176k    1.3T     0%    /tmp
rpool/root/usr    1.3T    125M    1.3T     0%    /usr
rpool/root/var    1.3T    980k    1.3T     0%    /var
root@nas:/root # zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

        NAME                   STATE     READ WRITE CKSUM
        rpool                  ONLINE       0     0     0
          mirror-0             ONLINE       0     0     0
            label/rpool.disk1  ONLINE       0     0     0
            label/rpool.disk2  ONLINE       0     0     0

errors: No known data errors
root@nas:/root # glabel status
                                      Name  Status  Components
                         label/rpool.disk1     N/A  ada0.eli
                         label/rpool.disk2     N/A  ada1.eli
root@nas:/root #

Dank PXE-Boot brauch ich für FreeBSD keine extra Boot-Partition. Auf dem Rechner sind nur 2 GELI-Platten, direkt mit ZFS drauf. Edit: ohne Partitionen.

Danke für die Anleitung.

Edit: Wenn man mit GELI arbeitet, braucht man GNOP nicht, da man beim GELI-Setup auch die Blocksize angeben kann.

Code:
Geom name: ada0.eli
State: ACTIVE
[...]
Flags: BOOT
KeysAllocated: 350
KeysTotal: 350
Providers:
1. Name: ada0.eli
   Mediasize: 1500301905920 (1.4T)
   Sectorsize: [COLOR="Red"]4096[/COLOR]
   Mode: r1w1e2
Consumers:
1. Name: ada0
   Mediasize: 1500301910016 (1.4T)
   Sectorsize: [COLOR="Red"]512[/COLOR]
   Mode: r1w1e1
 
Zuletzt bearbeitet:
ZFS auf root -> swp -> indefinite wait-buffer

Bei der Swap liegt das Problem darin, dass ein Schreiben in den Zpool zu einem Schreiben in den ARC führt, was RAM kostet. Wenn man nun die Swap auf einem Zvol hat, will der Kernel sie nutzen, wenn ihm der RAM ausgeht. Aber durch das Nutzen wird noch mehr RAM verbraten, etc. Früher führte dies zwangsläufig zum Teufelskreis mit Crash am Ende, heute erkennt ZFS die Speicherknappheit und gibt einen Teil seines ARC frei. Allerdings klappt das nur bis zu einem bestimmten Punkt. Ich würde daher die Swap weiterhin in eine richtige Partition legen. Das tut nun wirklich niemandem weh.
Ich kann das nur bestätigen ich habe hauf meinem ZenBook UX31 swap auf ZFS liegen. Im Normalbetrieb geht alles gut, compiliere ich aber z.B chromium oder firefox aus den Ports unter einer X-Oberfläche (KDE4) hängt sich mein Rechner früher oder später mit der Fehlermeldung "indefinite wait-buffer" auf. Und das ist kein Problem der Hardware (SSD). Ich interpretiere das wie Yamagi es beschreibt, swap space wird benötigt und dann setzt der Teufelskreis ein.

Georg
 
Hast du die swap eigentlich mit:

zfs create -V 4G -o org.freebsd:swap=on -o checksum=off -o sync=disabled -o primarycache=none -o secondarycache=none zroot/swap

angelegt?

Ich hab das nämlich jetzt nicht getestet (darum im Skript auskommentiert). Hatte das nur im Netz gefunden.
 
Hast du die swap eigentlich mit:

zfs create -V 4G -o org.freebsd:swap=on -o checksum=off -o sync=disabled -o primarycache=none -o secondarycache=none zroot/swap

angelegt?

Ich hab das nämlich jetzt nicht getestet (darum im Skript auskommentiert). Hatte das nur im Netz gefunden.

Liegt schon etwas zurück, aber in meinen Notizen steht:

create swap filesystem
# zfs create -V 4G rpool/swap
# zfs set org.freebsd:swap=on rpool/swap
# zfs set checksum=off rpool/swap

Wenn jemand noch Vorschläge hat, as zu verbessern ....

Georg
 
-o sync=disabled -o primarycache=none -o secondarycache=none hinzufügen? Wenn man überlegt, sind das ja die Funktionen, die RAM brauchen und für Swap ungeeignet sind.
 
Ich würde die Prüfsummen auf der Swap nicht abschalten. Einen Performanceeinfluss dürften sie nicht haben, da die Swap die CPU in jedem Fall bremst. Sie verhindern aber, dass defekte Daten aus der Swap in den RAM gelesen werden. Andererseits kann man natürlich so argumentieren, dass man ein sehr viel größeres Problem hat, wenn dort defekte Daten auftauchen... :)
 
Am Rande:

Code:
#fix permissions
chmod 1777 /mnt/tmp
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/var/tmp

#install FreeBSD
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz kernel.txz doc.txz src.txz; #ports.txz lib32.txz
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

Die richtigen permissions sind im .txz enthalten, die muss man nicht von Hand setzen.
 
Hallo,

pkg_add: the package info for package '.zfs' is corrupt

diese meldung erhalte ich beim installieren von software.
weis einer was ich verändern muss.

Gruss

Joerg
 
Hallo,

pkg_add: the package info for package '.zfs' is corrupt

diese meldung erhalte ich beim installieren von software.
weis einer was ich verändern muss.

Gruss

Joerg

Scheint, als wäre pkg_add Grütze. Setz snapdir=hidden bei dem dataset. Edit: Ich gehe davon aus, dass snapdir nicht auf hidden steht. Eigentlich ist das default.
 
Hallo,

gnop create -S 4096 /dev/gpt/disk0
gnop create -S 4096 /dev/gpt/disk1

leider bekomme ich bei meinem Hetzner Server immer die Meldung:
Code:
[root@rescue ~]# gnop create -S 4096 /dev/gpt/disk0
gnop: geom_nop module not available!

Komischerweise kann ich jedoch gnop direkt aufrufen:

Code:
[root@rescue ~]# gnop
usage: gnop create [-v] [-e error] [-o offset] [-r rfailprob] [-s size] [-S secsize] [-w wfailprob] dev ...
       gnop configure [-v] [-e error] [-r rfailprob] [-w wfailprob] prov ...
       gnop destroy [-fv] prov ...
       gnop reset [-v] prov ...
       gnop help
       gnop list [-a] [name ...]
       gnop status [-ags] [name ...]
       gnop load [-v]
       gnop unload [-v]

Ich habe auf auf dem nach einem modul für gnop gesucht zum nachladen aber leider nichts gefunden.

Kann ich statt dem gnop Kommando etwas anderes benutzen oder irgendwie das Modul nachladen ?


Gruß Mardor
 
Zurück
Oben