ZFS allows fine-tuning dataset properties for specific workloads. This post provides optimal configurations for common file types, balancing performance, compression efficiency, and storage utilization. Each dataset type has different characteristics that benefit from specific tuning.
ZFSでは、特定のワークロードに対してデータセットプロパティを細かく調整できます。この投稿では、一般的なファイルタイプに対する最適な設定を提供し、パフォーマンス、圧縮効率、ストレージ使用率のバランスを取ります。各データセットタイプには、特定の調整から利益を得る異なる特性があります。
Understanding Key Properties / 主要プロパティの理解
Record Size / レコードサイズ
• Small (64K): Better for random access and small files
• Medium (128K): Default, good general-purpose size
• Large (1M): Optimal for large sequential files
• 小 (64K): ランダムアクセスと小さなファイルに適している
• 中 (128K): デフォルト、汎用的なサイズ
• 大 (1M): 大きなシーケンシャルファイルに最適
Compression Types / 圧縮タイプ
• lz4: Fast with moderate compression
• zstd: Slower but better compression ratio
• off: For already-compressed data
• lz4: 高速で適度な圧縮
• zstd: 遅いがより良い圧縮率
• off: すでに圧縮されたデータ用
Dataset Configurations by Type / タイプ別データセット設定
Music Files / 音楽ファイル
sudo zfs create pool/music sudo zfs set recordsize=128k pool/music sudo zfs set compression=lz4 pool/music sudo zfs set atime=off pool/music
Music files (MP3, FLAC, etc.) are already compressed, so compression provides minimal benefit. The 128K recordsize works well for typical music file sizes. Disabling atime reduces unnecessary metadata updates.
音楽ファイル(MP3、FLACなど)はすでに圧縮されているため、圧縮の利点は最小限です。128Kのレコードサイズは典型的な音楽ファイルサイズに適しています。atimeを無効にすると、不要なメタデータの更新が減少します。
Documents / ドキュメント
sudo zfs create pool/documents sudo zfs set recordsize=64k pool/documents sudo zfs set compression=zstd pool/documents sudo zfs set atime=off pool/documents
Documents benefit from smaller recordsize for better space efficiency with small files. ZSTD compression works excellently on text-based formats (PDF, DOCX, TXT), often achieving 2-3x compression ratios.
ドキュメントは小さなレコードサイズから利益を得て、小さなファイルでのスペース効率が向上します。ZSTD圧縮はテキストベースのフォーマット(PDF、DOCX、TXT)で優れた効果を発揮し、しばしば2-3倍の圧縮率を達成します。
Archives / アーカイブ
sudo zfs create pool/archives sudo zfs set recordsize=1M pool/archives sudo zfs set compression=off pool/archives sudo zfs set atime=off pool/archives
Archive files (ZIP, TAR.GZ, 7Z) are already compressed. Large recordsize reduces metadata overhead for these typically large files. Compression is disabled to avoid CPU waste on incompressible data.
アーカイブファイル(ZIP、TAR.GZ、7Z)はすでに圧縮されています。大きなレコードサイズは、これらの通常大きなファイルのメタデータオーバーヘッドを削減します。圧縮不可能なデータでのCPUの無駄を避けるため、圧縮は無効にされています。
Videos / ビデオ
sudo zfs create pool/videos sudo zfs set recordsize=1M pool/videos sudo zfs set compression=off pool/videos sudo zfs set atime=off pool/videos sudo zfs set primarycache=metadata pool/videos
Video files are large, sequential, and already compressed. The `primarycache=metadata` setting saves valuable ARC (RAM cache) space by only caching metadata, not the video data itself, which is rarely accessed repeatedly.
ビデオファイルは大きく、シーケンシャルで、すでに圧縮されています。`primarycache=metadata`設定は、繰り返しアクセスされることが少ないビデオデータ自体ではなく、メタデータのみをキャッシュすることで、貴重なARC(RAMキャッシュ)スペースを節約します。
Photos (JPEG/PNG) / 写真(JPEG/PNG)
sudo zfs create pool/pictures sudo zfs set recordsize=128k pool/pictures sudo zfs set compression=lz4 pool/pictures sudo zfs set atime=off pool/pictures
JPEG/PNG files are already compressed, but LZ4 can still help with metadata and provides minimal overhead. Medium recordsize balances between small thumbnails and larger images.
JPEG/PNGファイルはすでに圧縮されていますが、LZ4はメタデータで役立ち、最小限のオーバーヘッドを提供します。中程度のレコードサイズは、小さなサムネイルと大きな画像のバランスを取ります。
RAW Photos / RAW写真
sudo zfs create pool/photos-raw sudo zfs set recordsize=1M pool/photos-raw sudo zfs set compression=zstd pool/photos-raw sudo zfs set atime=off pool/photos-raw sudo zfs set copies=2 pool/photos-raw
RAW photo files are large and compress well with ZSTD (often 20-40% savings). The `copies=2` setting provides extra redundancy for these irreplaceable files by storing two copies at the ZFS level.
RAWフォトファイルは大きく、ZSTDでよく圧縮されます(しばしば20-40%の節約)。`copies=2`設定は、ZFSレベルで2つのコピーを保存することで、これらの取り替え不可能なファイルに追加の冗長性を提供します。
eBooks / 電子書籍
sudo zfs create pool/ebooks sudo zfs set recordsize=64k pool/ebooks sudo zfs set compression=zstd pool/ebooks sudo zfs set atime=off pool/ebooks
eBooks (EPUB, MOBI, PDF) compress exceptionally well with ZSTD. Small recordsize is optimal for these typically small files.
電子書籍(EPUB、MOBI、PDF)はZSTDで非常によく圧縮されます。小さなレコードサイズは、これらの通常小さなファイルに最適です。
Downloads (Mixed Content) / ダウンロード(混合コンテンツ)
sudo zfs create pool/downloads sudo zfs set recordsize=1M pool/downloads sudo zfs set compression=lz4 pool/downloads sudo zfs set atime=off pool/downloads
Downloads often contain large files (ISOs, installers). LZ4 provides fast compression for compressible content without significantly slowing incompressible files.
ダウンロードには大きなファイル(ISO、インストーラー)が含まれることが多いです。LZ4は、圧縮不可能なファイルを大幅に遅くすることなく、圧縮可能なコンテンツに高速圧縮を提供します。
Special Configurations / 特別な設定
Deduplication Dataset / 重複排除データセット
⚠️ Warning: Deduplication requires approximately 5GB of RAM per TB of data!
sudo zfs create pool/dedup-store sudo zfs set recordsize=128k pool/dedup-store sudo zfs set compression=lz4 pool/dedup-store sudo zfs set dedup=on pool/dedup-store sudo zfs set atime=off pool/dedup-store
Only enable deduplication if you have sufficient RAM and expect significant duplicate data (like VM images or backup datasets).
十分なRAMがあり、重要な重複データ(VMイメージやバックアップデータセットなど)が予想される場合のみ、重複排除を有効にしてください。
Quick Reference Table / クイックリファレンステーブル
File Type | Record Size | Compression | Special |
---|---|---|---|
Music | 128K | lz4 | - |
Documents | 64K | zstd | - |
Archives | 1M | off | - |
Videos | 1M | off | primarycache=metadata |
Photos (JPEG) | 128K | lz4 | - |
Photos (RAW) | 1M | zstd | copies=2 |
eBooks | 64K | zstd | - |
General Best Practices / 一般的なベストプラクティス
Always disable atime: Unless you specifically need access time tracking, disable it to reduce metadata writes and improve performance.
常にatimeを無効化:アクセス時間追跡が特に必要でない限り、メタデータの書き込みを減らしパフォーマンスを向上させるために無効にします。
Test compression ratios: Use `zfs get compressratio pool/dataset` to verify compression effectiveness.
圧縮率をテスト:`zfs get compressratio pool/dataset`を使用して圧縮効果を確認します。
Monitor performance: Use `zpool iostat -v` to observe I/O patterns and adjust recordsize if needed.
パフォーマンスを監視:`zpool iostat -v`を使用してI/Oパターンを観察し、必要に応じてレコードサイズを調整します。
Setting Ownership / 所有権の設定
After creating datasets, set appropriate ownership:
データセット作成後、適切な所有権を設定:
# Set ownership for user access sudo chown -R username:username /pool/dataset # Or set during creation sudo zfs create -o mountpoint=/data/music pool/music sudo chown username:username /data/music
These configurations provide a solid starting point. Monitor your actual usage patterns and adjust as needed. Remember that ZFS properties can be changed on live datasets without downtime.
これらの設定は確実な出発点を提供します。実際の使用パターンを監視し、必要に応じて調整してください。ZFSプロパティはダウンタイムなしでライブデータセットで変更できることを覚えておいてください。
Ara / アラ
Questions about ZFS dataset optimization? Feel free to reach out.
ZFSデータセット最適化について質問がありますか?お気軽にお問い合わせください。