私は3つのhddを持っており、次のcamcotrol
が識別します。
root@cirmos:/root # camcontrol identify ada1
pass2: <WDC WD10EZEX-00RKKA0 80.00A80> ATA-8 SATA 3.x device
pass2: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
protocol ATA/ATAPI-8 SATA 3.x
device model WDC WD10EZEX-00RKKA0
firmware revision 80.00A80
serial number WD-WMC1S4587539
WWN 50014ee003930f6e
cylinders 16383
heads 16
sectors/track 63
sector size logical 512, physical 4096, offset 0
LBA supported 268435455 sectors
LBA48 supported 1953525168 sectors
PIO supported PIO4
DMA supported WDMA2 UDMA6
Feature Support Enabled Value Vendor
read ahead yes yes
write cache yes yes
flush cache yes yes
overlap no
Tagged Command Queuing (TCQ) no no
Native Command Queuing (NCQ) yes 32 tags
SMART yes yes
microcode download yes yes
security yes no
power management yes yes
advanced power management no no
automatic acoustic management no no
media status notification no no
power-up in Standby yes no
write-read-verify no no
unload no no
free-fall no no
data set management (TRIM) no
root@cirmos:/root #
上記のように、セクターサイズは次のように検出されます。
sector size logical 512, physical 4096, offset 0
4Kドライブのチューニングに関するトピックはすでにいくつかあります。上記の3つのドライブからZFS(raidz)を作成したいのですが、次の質問があります。
4k drives
ですか? (物理セクターのサイズは4kですが、論理は512bとして報告されているためです)correct alignment
を取得するために推奨されるgpart
は何ですか(1つのfreebsd-zfs
パーティションを作成したい)ポイント2から。すべてのベストプラクティスにおいて、ZFSは管理するドライブ全体に「供給」される必要があります。特別なパーティション分割は必要ありません。
それの残りに関して:
このリンク 役立つヒントがたくさんありますが、そのうちのいくつかを繰り返します。
各vdev(ミラーやraidzなど)には1つのシフトがあります。 ashift = 9は512バイトセクター、ashift = 12は4kセクターです。 (2 ^ ashift = ector-sizeとして計算)
後でプールを破棄して再作成することなく、将来の互換性を確保するために、実際のドライブ機能に関係なく、通常はashift = 12を使用することをお勧めします(vdevの作成後に変更できないため)。
リンクから:
# gnop create -S 4096 ada0
# zpool create tank raidz ada0.nop ada1 ada2
# zdb | grep ashift
ashift: 12
Gnopコマンドは、ada0の強制4kアライメントパススルーデバイスをada0.nopとして作成します。次に、プールが作成されます。 ZFSは、vdev全体にashift = 12を使用します。 pool/vdevを作成したら、ada0.nopパススルーデバイスを削除することをお勧めします。
# zpool export tank
# gnop destroy ada0.nop
# zpool import tank
これで、プールはデバイスada0、ada1、およびada2でインポートされます。そして、それはそれが作成されたときにロックインされたashift = 12をまだ持っています。
それでおしまい。 ZFSがドライブ全体を管理することで、準備が整い、準備が整います。
これらの4kドライブはありますか?はい、これの指標である4096バイトの物理を報告していることがわかります。 512バイトの論理レポートは、ドライブメーカーが下位互換性を試みた結果です(したがって、混乱を招きます)。
gpart?あなたの状況では、次のコマンドを使用してディスクをgpartします。
# -- 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には、私たちが認識している、または見たパフォーマンスのペナルティや欠点はありません。私たちはこれを何十もの生産場所に何年にもわたって展開してきました。また、次の利点もあります。
gpart show -l
は、これらのラベルが付いたGPTテーブルを表示します。また、上記の最初のことはsysctl vfs.zfs.min_auto_ashift=12;
を実行することであり、最後のことはその値をチェックすることです。 ZFSでは、ashift = 9がデフォルトであり、512バイトのディスクに適していますが、4kディスクの場合、書き込みの増幅とパフォーマンスの低下が見られます。これは事実上同様ですが、パーティションの不整合による原因ではありません。理由は不明ですが、GNOPを使用してもZFSがashift = 12を自動的に選択しないため、問題が発生することがわかりました。このページでは、すべてをうまく説明しています: http://savagedlight.me/2012/07/15/freebsd-zfs-advanced-format/
チューニング?作業負荷によって異なります。 LZ4圧縮は、最悪の場合無視できるオーバーヘッドであり、圧縮可能なファイルのパフォーマンスを大幅に向上させることが証明されているため、すべての新しい展開で有効になりました。
# -- Set compresison on
zfs set compression=lz4 zstorage;
# -- See compression performance
zfs get used,compressratio,compression,logicalused zstorage;
唯一の「欠点」は、これがベンチマークに影響を与えることです。これをオンにすると、bonnie++
は、実際のパフォーマンスを反映していない可能性のある非常識な(非常に素晴らしい)数値を報告します。 dd if=/dev/zero of=test.dat
スタイルのベンチマークと同じです。