Sind das 4k-Laufwerke? Ja, Sie können sehen, dass sie 4096 Byte physisch melden, was der Indikator dafür ist. Das logische Berichtswesen mit 512 Byte ist das Ergebnis eines Versuchs der Laufwerkhersteller, die Abwärtskompatibilität zu gewährleisten (und verwirrt dadurch).
gpart In Ihrer Situation würde ich die folgenden Befehle verwenden, um die Platte herauszuschneiden:
# -- Force ashift to be at least 12 sysctl vfs.zfs.min_auto_ashift=12; # -- Create GPT tables gpart create -s gpt ada0 && gpart create -s gpt ada1 && gpart create -s gpt ada2; # -- Create paritions, align start/stop to 1 MiB boundaries gpart add -a 1m -t freebsd-zfs -l disk0 ada0 && gpart add -a 1m -t freebsd-zfs -l disk1 ada1 && gpart add -a 1m -t freebsd-zfs -l disk2 ada2; # -- Not needed under FreeBSD 10.1 but sometimes is on # older versions to get /dev/gpt to update. # Run if you don't see /dev/gpt/disk0 etc devices: true > /dev/ada0; true > /dev/ada1; true > /dev/ada2; # -- Create temporary GNOP 4k devices gnop create -S 4k /dev/gpt/disk0 && gnop create -S 4k /dev/gpt/disk1 && gnop create -S 4k /dev/gpt/disk2; # -- Create the zpool zpool create -f -m /mnt zstorage raidz /dev/gpt/disk0.nop /dev/gpt/disk1.nop /dev/gpt/disk2.nop; # -- Export zpool export zroot; # -- Remove temproary GNOP devices gnop destroy /dev/gpt/disk0.nop && gnop destroy /dev/gpt/disk1.nop && gnop destroy /dev/gpt/disk2.nop; # -- Bring back pool with "real" devices zpool import -d /dev/gpt zstorage; # -- Check status zpool status; # -- Verify ashift is 12 zdb | grep ashift
gpart-ing hat keine Leistungseinbußen oder -nachteile, die uns bekannt sind oder gesehen wurden. Wir haben dies seit vielen, vielen Jahren an Dutzenden von Produktionsstandorten eingesetzt. Es bietet auch die folgenden Vorteile:
- Sie können (die -l) Partitionen benennen (dh disk0, disk1), so dass Sie wissen, welche Festplatten welche sind, auch wenn sich deren Portnummern ändern (dh ada0 ist möglicherweise nicht immer disk0).
gpart show -l
zeigt die GPT-Tabelle mit diesen Bezeichnungen. - Während dies für Sie nicht zutrifft, können Sie ZFS booten und Partitionen austauschen (dh GMIRROR verwenden), die sich auf denselben Datenträgern befinden.
- Aufgrund der Ausrichtung von 1 MiB haben Sie am Ende der Festplatte etwas freien Speicherplatz, da Ihre Partition auf 1 MiB gerundet ist. Dies vermeidet eine Situation, in der Sie ein Laufwerk durch einen anderen Hersteller ersetzen und letztendlich immer kleiner werden und somit unbrauchbar werden.
Sie werden auch bemerken, dass das Erste, was Sie oben machen, zu tun ist, sysctl vfs.zfs.min_auto_ashift=12;
und das Letzte, was Sie tun, ist, diesen Wert zu überprüfen. Unter ZFS ist ashift = 9 der Standardwert, der für 512-Byte-Festplatten geeignet ist. Bei 4-KByte-Festplatten werden jedoch Schreibverstärkung und Leistungsverlust angezeigt, die zwar ähnlich sind, jedoch nicht aufgrund einer fehlerhaften Partitionierung der Partition auftreten. Wir haben gesehen, dass ZFS aus unbekannten Gründen selbst bei GNOP nicht automatisch eine Verschiebung = 12 auswählt, sodass das Problem erzwungen wird. Diese Seite beschreibt das Ganze schön: http://savagedlight.me/2012/07/15/freebsd-zfs-advanced-format/
Tuning Kommt auf deine Arbeitsbelastung an. Wir aktivieren jetzt die LZ4-Komprimierung für alle neuen Bereitstellungen, da sich im schlimmsten Fall ein vernachlässigbarer Overhead erwiesen hat und die Leistung für komprimierbare Dateien bestenfalls drastisch gesteigert wird.
# -- Set compresison on zfs set compression=lz4 zstorage; # -- See compression performance zfs get used,compressratio,compression,logicalused zstorage;
Der einzige Nachteil ist, dass dies Auswirkungen auf das Benchmarking haben bonnie++
wird. Es werden einige verrückte (wirklich beeindruckende) Zahlen angezeigt, wenn diese Option aktiviert ist und die tatsächliche Leistung wahrscheinlich nicht widerspiegelt. Gleiches gilt für dd if=/dev/zero of=test.dat
Style-Benchmarking.