memo:test

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
memo:test [2020-12-02 23:32]
Decomo
— (現在)
行 1: 行 1:
-27. ZFS Primer 
- 
-ZFSは先進的で現代的なファイルシステムで、特に伝統的なUNIXファイルシステムでは利用できなかった機能の提供を目的に設計されました。 
-オリジナルはSunにおいてソースのオープン化の意向とともに開発されたため、他のオペレーティングシステムへ移植することが可能でした。 
-OracleによるSunの買収後、ZFSのオリジナル開発者の何人かが、オープンソースバージョンの継続的な共同開発を提供するために[[http://open-zfs.org/wiki/Main_Page|OpenZFS]]を創設しました。 
- 
-ここにZFSの特徴の概要を記します: 
- 
-**ZFSはトランザクションを持つCopy-On-Write ([[https://en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model|COW]])なファイルシステムです。** 
-各書き込み要求について、関係するディスクブロックのコピーが作られ、そして全ての変更は元のブロックではなくコピーに対して作用します。 
-書き込みが完了すると、全てのブロックポインタの指す先がその新しいコピーに変更されます。 
-これは、ZFSは常に空き領域に書き込み、ほとんどの書き込みはシーケンシャルで、そして古いバージョンのファイルは新バージョンの書き込みが完全に成功するまで分離されないことを意味します。 
-ZFSはディスクへの直接アクセスを行い、複数の読み込み/書き込み要求をトランザクションにまとめます。 
-ほとんどのファイルシステムはこれを行わず、ただディスクブロックへアクセスするのみです。 
-完了か失敗どちらか一方に定まるトランザクションは、[[https://blogs.oracle.com/bonwick/raid-z|ライトホール]]は決して存在せず、そしてファイルシステムの確認ユーティリティは必要ないことを意味します。 
-このトランザクションベースの設計により、追加のストレージ領域が足されれば、それはすぐさま書き込み用に利用可能となります。 
-データの再均衡化のために、データをコピーして既存のデータを全ての利用可能なディスクに横断的に上書きすることができます。 
-128ビットファイルシステムなので、ファイルシステムとファイルの最大サイズは16エクサバイトです。 
- 
-**ZFSは自己修復ファイルシステムとして設計されました。** 
-ZFSはデータを書くたびに、対象のディスクブロックごとにチェックサムを生成し記録します。 
-ZFSはデータを読むたびに、対象のディスクブロックごとのチェックサムを読み込み検証します。 
-メディアのエラーや“ビット腐敗”はデータに変化を引き起こし、そのチェックサムが一致することはありません。 
-ZFSがミラーないしRAIDZ構成のプール上にディスクブロックのチェックサムエラーを検出した場合、ZFSは壊れたデータを正しいデータで置き換えます。 
-滅多に読まれないディスクブロックもあることから、定期的なscrubをスケジューリングし、ZFSが全データブロックを読んでチェックサムの検証と異常ブロックの訂正が行えるようにすると良いでしょう。 
-冗長性とデータ訂正の提供のために複数のディスクが要求される一方で、1ディスクのシステムにおいてもZFSはデータ異常検出を提供します。 
-FreeNAS®は各ZFSプールに対し月1回のscrubを自動的にスケジュールし、その結果は[[https://www.ixsystems.com/documentation/freenas/11.3-U5/storage.html#pools|Pools]]を選択し (Settings)→Statusとクリックすると表示されます。 
-scrub結果をチェックすることは、ディスクの潜在的な問題の早期発見につながる可能性があります。 
- 
-伝統的なUNIXファイルシステムと違い、**ファイルシステム作成時にパーティションサイズを決める必要はありません。** 
-代わりに、vdevと呼ばれるディスクのグループがZFSプールに組み込まれます。 
-ファイルシステムは必要に応じて、そのプールから生成されます。 
-より多くの容量が必要になった時は、同一のvdevをプールにストライピングすることができます。 
-FreeNAS®の[[https://www.ixsystems.com/documentation/freenas/11.3-U5/storage.html#pools|Pools]]はプールの作成と拡張に使われます。 
-プールの作成後、必要に応じて、プールから動的サイズのデータセットまたは固定サイズのzvolを切り出すことができます。 
-データセットを用い、格納されるデータの種類に応じたパーミッションや容量制限・圧縮といったプロパティをデータセット単位で設定し、ストレージを最適化することができます。 
-zvolは本質的には生の仮想ブロックデバイスで、iSCSIデバイスエクステントなどのローデバイスを必要とするアプリケーションで使用されます。 
- 
-**ZFSはリアルタイムデータ圧縮をサポートします。** 
-ブロックがディスクに書き込まれたときに圧縮が行われますが、そのデータが圧縮の恩恵を受けられる場合に限ります。 
-圧縮済みブロックにアクセスがあった時は、自動的に展開されます。 
-圧縮はファイルレベルではなくブロックレベルで行われるため、あらゆるアプリケーションが透過的に圧縮データにアクセスします。 
-FreeNAS®バージョン9.2.1以降で作られたZFSプールは、推奨のLZ4圧縮アルゴリズムを使います。 
- 
-**ZFSは低コストの即時スナップショットを提供します。**対象となるのはプール、データセット、あるいはzvolです。 
-COWのおかげで、スナップショットは最初は余分な領域を必要としません。 
-スナップショットのサイズは時間とともに、スナップショットに含まれるファイルがディスクに書き込まれ、変更があるにつれ増加します。 
-スナップショットを使うと、スナップショットを取得した時点のデータのコピーを提供することできます。 
-通常、ファイルが削除されると対応するディスクブロックは空きリストに追加されます。しかし、スナップショット内にファイルが存在する場合、参照するすべてのスナップショットが削除されるまで、ファイルブロックが空きリストに追加されることはありません。 
-これにより、スナップショットはファイルの履歴の保持、古いコピーや削除されたファイルの復元に便利な賢い手段となります。 
-こうした理由で, 多くの管理者は頻繁にスナップショットを取得し、一定期間保存し、そして別のシステムに保管します。 
-このような戦略は、管理者にシステムを特定の時点へロールバックすることを可能とします。 
-もし破滅的なデータ消失があった場合、オフサイトのスナップショットはシステムを最後の定期スナップショット─例えばデータ消失の直前15分の時点に、システムを復元することができます。 
-スナップショットはローカルに保管されますが、リモートのZFSプールにレプリケートすることもできます。 
-レプリケーションでは、ZFSはバイト単位のコピーは行わず、代わりにスナップショットをデータストリームへ変換します。 
-この設計は、受信側のZFSプール構成が同一である必要はなく、異なるRAIDZレベル、プールサイズ、あるいは圧縮設定が使用可能なことを意味します。 
- 
- 
-**ZFS Boot Environemtはシステム更新の失敗から復旧する手段を提供します。** 
-FreeNAS®では、アップグレードやシステム更新の前に、OSが存在するデータセットのスナップショットが自動取得されます。 
-この保存済みBoot Environmentは自動的にGRUBブートローダに追加されます。 
-万が一、アップグレードや設定変更が失敗したら、単にシステムを再起動し起動メニューから以前のBoot Environmentを選択します。 
-ユーザーは必要に応じて、例えば設定変更を行う前にSystem ➞ Bootで自身のBoot Environmentを作ることもできます。 
- 
-**ZFSはライトキャッシュを提供します。**オンメモリキャッシュとZFSインテントログ(ZIL)があります。 
-ZILは、[[https://pthree.org/2013/04/19/zfs-administration-appendix-a-visualizing-the-zfs-intent-log/|「同期書き込み」を、ZFSプールに書き込まれるまで一時的に保持する]]ストレージ領域です。 
-高速(低遅延)で電源保護されたSSDをSLOG (Separate Log)デバイスとして追加すると、はるかに高い性能を得られます。 
-これはESXi越しのNFSに不可欠で、またデータベースサーバや同期書き込みに依存する他のアプリケーションで強く推奨します。 
-SLOGの恩恵と使い方の詳細は、以下のブログとフォーラムの投稿をご覧ください: 
- 
-  * [[http://www.freenas.org/blog/zfs-zil-and-slog-demystified/|The ZFS ZIL and SLOG Demystified]] 
-  * [[https://forums.freenas.org/index.php?threads/some-insights-into-slog-zil-with-zfs-on-freenas.13633/|Some insights into SLOG/ZIL with ZFS on FreeNAS®]] 
-  * [[http://nex7.blogspot.com/2013/04/zfs-intent-log.html|ZFS Intent Log]] 
- 
-SMB、AFP、iSCSIでは同期書き込みは比較的まれで、すなわち、これらプロトコルの性能改善のためのSLOG追加は特別な場合のみであると意味します。 
-システムがSLOGの恩恵を受けられるかの判定のため、zilstatユーティリティをShellで実行することができます。 
-使い方の情報は[[http://www.richardelling.com/Home/scripts-and-programs-1/zilstat|このウェブサイト]]をご覧ください。 
- 
-現在のところZFSはSLOG用に16GiBの領域を使います。 
-より大きなSSDを組み込んでも、余分な領域は使用されません。 
-SLOGデバイスはプール間で共有できません。 
-それぞれのプールは別々のSLOGデバイスを要求します。 
-帯域とスループットの制約により、SLOGデバイスはこの単一目的のためだけに使用されなければなりません。 
-同一のSSDに他のキャッシュ機能を追加しようとしてはなりません。さもないと性能を損なうことになるでしょう。 
- 
-ミッションクリティカルなシステムでは、ミラー構成のSLOGデバイスを強く推奨します。 
-ミラー構成のSLOGデバイスはZFSバージョン19以前のZFSプールで要求されます。 
-ZFSプールのバージョンはShellで''zpool get version プール名''コマンドで確認します。 
-バージョン番号が「-」の場合、そのZFSプールは(Feature Flagとしても知られる)バージョン5000かそれ以降を意味します。 
- 
-**ZFSはリードキャッシュを提供します。**ARCとして知られる読み込みレイテンシを削減するオンメモリキャッシュです。 
-FreeNAS®はARCの状態をtop(1)に追加し、またARCの効率をモニタリングするためのarc_suymmary.pyとarcstat.pyツールを含みます。 
-SSDを専用キャッシュデバイスとして使う場合、それはL2ARCとして知られています。 
-追加の読み込みデータはL2ARCにキャッシュされ、ランダム読み込み性能を向上させます。 
-L2ARCは(ZFSにおける)十分なメモリの必要性を低減するものではありません。 
-事実、L2ARCは機能するのにメモリを必要とします。 
-ARC用に必要十分なメモリがない場合、L2ARCを追加しても性能は増加しません。 
-実際のところ、殆どの場合で性能が低下し、潜在的にシステムの不安定性を引き起こします。 
-RAMは常にディスクより速いので、システムがL2ARCデバイスからの恩恵を享受できるかどうかを考える前に、まずは可能な限りのRAMを追加します。 
- 
-アプリケーションがデータセットに対し、L2ARCに十分に収まるサイズ程度の膨大な量のランダム読み込みを行う場合、専用キャッシュデバイスの追加によって読み込み性能が向上する可能性があります。 
-SSDキャッシュデバイスは、活きているデータ量がシステムRAMより大きく、かつSSDの大きさに対し十分に小さい場合にのみ有効に働きます。 
-原則として、32GiBのRAMより小さなシステムにL2ARCを追加するべきではなく、L2ARCの大きさはRAM量の10倍を超えるべきではありません。 
-幾つかのケースにおいて、2つの別々のプールを持つ方が効率的かもしれません:1つはアクティブデータ用としてSSDに、そしてもう1つは稀に使われるコンテンツ用としてHDDに。L2ARCデバイスの追加後、arcstatなどのツールでその効率を監視します。 
-既存のL2ARCのサイズを増やすには、別のキャッシュデバイスを取り付けストライピングします。 
-ウェブインタフェースからは、L2ARCをミラーではなく常にストライピングで追加します。そして、L2ARCの内容は起動のたびに再生成されます。 
-プールのL2ARCを構成する個々のSSDの障害はプールの整合性に影響しませんが、読み込み性能にインパクトを与える可能性があり、これはワークロードおよびデータセットサイズとキャッシュサイズの比率に依存します。 
-専用L2ARCデバイスはZFSプール間で共有できないことに留意してください。 
- 
-**ZFSは冗長性を提供すると同時にハードウェアRAIDに内在する幾つかの問題に取り組むよう設計されました。**その問題とは、ライトホール問題とハードウェアコントローラが警告を出す前に、書き込まれたデータが時間とともに壊れる問題です。 
-ZFSは3レベルの冗長性を提供し、それはRAIDZとして知られ、そしてRAIDZの後ろの数値はデータを保ったまま失うことのできるvdevあたりのディスク数を示します。 
-ZFSはミラー構成にも対応し、ミラー中のディスク数に制限はありません。 
-ZFSは一般品のディスク向けに設計されたため、RAIDコントローラは必要ありません。 
-ZFSをRAIDコントローラとともに使うこともできますが、ZFSはディスクの全制御を行うため、コントローラをJBODモードにすることを推奨します。 
- 
-使用するZFS冗長性の種類を決定する際、 
-When determining the type of ZFS redundancy to use, consider whether the goal is to maximize disk space or performance: 
- 
-    RAIDZ1 maximizes disk space and generally performs well when data is written and read in large chunks (128K or more). 
-    RAIDZ2 offers better data availability and significantly better mean time to data loss (MTTDL) than RAIDZ1. 
-    A mirror consumes more disk space but generally performs better with small random reads. For better performance, a mirror is strongly favored over any RAIDZ, particularly for large, uncacheable, random read loads. 
-    Using more than 12 disks per vdev is not recommended. The recommended number of disks per vdev is between 3 and 9. With more disks, use multiple vdevs. 
-    Some older ZFS documentation recommends that a certain number of disks is needed for each type of RAIDZ in order to achieve optimal performance. On systems using LZ4 compression, which is the default for FreeNAS® 9.2.1 and higher, this is no longer true. See ZFS RAIDZ stripe width, or: How I Learned to Stop Worrying and Love RAIDZ for details. 
- 
-These resources can also help determine the RAID configuration best suited to the specific storage requirements: 
- 
-    Getting the Most out of ZFS Pools 
-    A Closer Look at ZFS, Vdevs and Performance 
- 
-Warning 
- 
-RAID AND DISK REDUNDANCY ARE NOT A SUBSTITUTE FOR A RELIABLE BACKUP STRATEGY. BAD THINGS HAPPEN AND A GOOD BACKUP STRATEGY IS STILL REQUIRED TO PROTECT VALUABLE DATA. See Periodic Snapshot Tasks and Replication Tasks to use replicated ZFS snapshots as part of a backup strategy. 
- 
-ZFS manages devices. When an individual drive in a mirror or RAIDZ fails and is replaced by the user, ZFS adds the replacement device to the vdev and copies redundant data to it in a process called resilvering. Hardware RAID controllers usually have no way of knowing which blocks were in use and must copy every block to the new device. ZFS only copies blocks that are in use, reducing the time it takes to rebuild the vdev. Resilvering is also interruptable. After an interruption, resilvering resumes where it left off rather than starting from the beginning. 
- 
-While ZFS provides many benefits, there are some caveats: 
- 
-    At 90% capacity, ZFS switches from performance- to space-based optimization, which has massive performance implications. For maximum write performance and to prevent problems with drive replacement, add more capacity before a pool reaches 80%. 
-    When considering the number of disks to use per vdev, consider the size of the disks and the amount of time required for resilvering, which is the process of rebuilding the vdev. The larger the size of the vdev, the longer the resilvering time. When replacing a disk in a RAIDZ, it is possible that another disk will fail before the resilvering process completes. If the number of failed disks exceeds the number allowed per vdev for the type of RAIDZ, the data in the pool will be lost. For this reason, RAIDZ1 is not recommended for drives over 1 TiB in size. 
-    Using drives of equal sizes is recommended when creating a vdev. While ZFS can create a vdev using disks of differing sizes, its capacity will be limited by the size of the smallest disk. 
- 
-For those new to ZFS, the Wikipedia entry on ZFS provides an excellent starting point to learn more about its features. These resources are also useful for reference: 
- 
-    FreeBSD ZFS Tuning Guide 
-    ZFS Administration Guide 
-    Becoming a ZFS Ninja Part 1 (video) and Becoming a ZFS Ninja Part 2 (video) 
-    The Z File System (ZFS) 
-    ZFS: The Last Word in File Systems - Part 1 (video) 
-    The Zettabyte Filesystem 
- 
-27.1. ZFS Feature Flags 
- 
-To differentiate itself from Oracle ZFS version numbers, OpenZFS uses feature flags. Feature flags are used to tag features with unique names to provide portability between OpenZFS implementations running on different platforms, as long as all of the feature flags enabled on the ZFS pool are supported by both platforms. FreeNAS® uses OpenZFS and each new version of FreeNAS® keeps up-to-date with the latest feature flags and OpenZFS bug fixes. 
- 
-See zpool-features(7) for a complete listing of all OpenZFS feature flags available on FreeBSD. 
- 
- 
  
  • memo/test.1606919547.txt.gz
  • 最終更新: 2020-12-02 23:32
  • by Decomo