UbuntuでZFSを使ってみよう 第29回 ZFSのプロパティを見てみよう(11)
前回に引き続き、今回もZFSの設定可能なプロパティについて説明します。
設定可能なZFS ネイティブプロパティ(6)
readonly=on|off
このデータセットが読み書き不可能かどうかを制御します。 デフォルト値はoffです。 値 on/off を設定すると、マウントオプションにおける ro/rw と同じように動作します。
このプロパティは、短縮された列名である rdonly でも参照できます。
recordsize=size
ファイルシステム内のファイルに対する推奨ブロックサイズを指定します。 このプロパティは、固定サイズのレコードでファイルにアクセスするデータベースワークロードでの使用のみを目的として設計されています。
ZFSは、一般的なアクセスパターンに最適化された内部アルゴリズムに従って、ブロックサイズを自動的に調整します。非常に大きなファイルを作成し、小さなランダムチャンクでアクセスするデータベースでは、これらのアルゴリズムは最適でない場合があります。 データベースのレコードサイズ以上のレコードサイズを指定すると、パフォーマンスが大幅に向上します。この特性を汎用ファイルシステムへの使用することは強く推奨されず、性能に悪影響を与える可能性があります。
指定するサイズは、512以上128KB以下の2の累乗でなければなりません。 プールで large_blocks 機能が有効な場合、サイズは 1Mbyte まで可能です。ファイルシステムのレコードサイズを変更すると、その後に作成されるファイルにのみ影響し、既存のファイルには影響がありません。
このプロパティは、短縮されたカラム名であるrecsizeでも参照できます。
redundant_metadata=all|most
どのような種類のメタデータを、冗長化して保存するかを制御します。 ZFS はメタデータの追加コピーを保存するため、1 つのブロックが破損した場合でも、失われるユーザーデータの量を少なくできます。デフォルト値はallです。
allを設定すると、ZFSはすべてのメタデータの追加コピーを保存します。 ディスク上の単一のブロックが破損した場合、最悪の場合、ユーザデータ(レコードサイズバイト長)の単一ブロックが失われます。
mostを設定すると、ZFSはほとんどのタイプのメタデータの余分なコピーを保存します。 これは、書き込まなければならないメタデータが少ないため、ランダム書き込みのパフォーマンスを向上できます。しかし実際には、ディスク上の1ブロックが破損した場合、最悪の場合ユーザーデータの約100ブロック(各レコードサイズバイト)が失われます。この追加コピーは、プールレベルで提供されるミラーリングやRAID-Zなどの冗長性に加えて、copiesプロパティで指定された追加コピー(最大3つのコピー)にも使用されます。
例えば、ミラーリングされたプール、copies=2、redundant_metadata=mostの場合、ZFSはほとんどのメタデータのコピーを6部、データと一部のメタデータのコピーを4部保存します。
どのメタデータ・ブロックを冗長化して保存するかについての正確な動作は、今後変更される可能性があります。
refquota=size|none
データセットが消費できる容量を制限します。 このプロパティは、使用する容量にハードリミットをかけます。 このハードリミットは、ファイルシステム、スナップショットを含みますが、子孫の使用するスペースは含まれません。
refreservation=size|none|auto
データセットに保証される最小限の容量で、その子孫は含まれません。使用容量が指定した値を下回ると、そのデータセットはrefreservation で指定された容量を占有しているものとして扱われます。refreservation は、親データセットの使用容量に含まれ、親データセットのクォータと予約に 対してカウントされます。
refreservation が設定されている場合、スナップショットは、 データセットの現在の「参照」バイト数を格納するのに十分な空きプール領域が、refreservation の領域外にある場合にのみ許可されます。
refreservationがautoに設定されている場合、ボリュームはシックプロビジョニング(スパースボリュームと)されます。シンプロビジョニングとスパースボリュームについては、次回説明します。
このプロパティは、短縮された列名である refreserv でも参照できます。
relatime=on|off
atime=onが設定されている場合のアクセスタイムの更新方法を制御します。
このプロパティをオンにすると、アクセスタイムは修正時刻か変更時刻を基準として更新可能になります。アクセスタイムは、前回のアクセスタイムが今回の修正・変更タイムより早い場合、または過去24時間以内に既存のアクセスタイムが更新されていない場合のみ更新されます。
デフォルトはoffです。 値on/offは、マウントオプションにおける relatime/norelatime と同じように動作します。
reservation=size|none
データセットとその子孫に保証される最小限のスペースを設定します。
使用容量がこの値を下回ると、データセットは予約で指定された容量を占有しているものとして扱われます。reservationは、親データセットの使用量に含まれ、親データセットのクォータや予約に対してカウントされます。
このプロパティは、短縮されたカラム名である reserv でも参照できます。
secondarycache=all|none|metadata
2次キャッシュ(L2ARC)にキャッシュされる内容を制御します。 このプロパティが all に設定された場合、ユーザーデータとメタデータの両方がキャッシュされます。
none に設定すると、ユーザデータとメタデータの両方がキャッシュされません。 このプロパティを metadata に設定すると、メタデータのみがキャッシュされます。 デフォルトは all です。
setuid=on|off
ファイルシステムで setuid ビットを尊重するかを制御します。 デフォルト値はonです。 値 on および off は、suid および nosuid マウントオプションと同等です。
sharesmb=on|off|opts
sharesmbは、Samba USERSHARESを使用してファイルシステムを共有するかどうかを設定します。また、どのようなオプションを使用するかも制御します。それ例外の場合では、ファイルシステムは zfs share と zfs unshare コマンドで自動的に共有、共有解除できます。このプロパティが on に設定されている場合、net コマンドが起動され、USERSHARE が作成されます。
SMB共有はリソース名を必要とするため、データセット名から一意のリソース名が構築されます。構築された名前は、データセット名のコピーですが、リソース名では無効となるデータセット名の文字をアンダースコア(_)文字に置き換えます。
sharesmb プロパティが off に設定されている場合、ファイルシステムは非共有となります。
SMB共有はデフォルトで、ACL (Access Control List) を “Everyone:F”、ゲストアクセスなしで作成されています。”Everyone:F” は「full permissions」の意で、すべてのユーザに読み取りと書き込み許可を付加することを意味します。ゲストアクセスなしは、アクセスするユーザが実際のユーザー、つまりシステムのpasswd/shadow、またはLDAP/smbpasswdベースで認証できることを意味します。
これは、特定のユーザーの特定のアクセスを禁止する等の追加のアクセス制御は、基礎となるファイルシステム上で行われなければならないことを意味します。
sharenfs=on|off|opts
sharenfsは、ファイルシステムを NFS 経由で共有するか、またどのようなオプションを使用するかを制御します。sharenfs プロパティが off のファイルシステムは、exportfs(8) コマンドと /etc/exports ファイル内のエントリで管理されます。それ以外の場合、ファイルシステムは zfs share および zfs unshare コマンドで自動的に共有および非共有されます。
このプロパティがonに設定されている場合、データセットはデフォルトのオプション(sec=sys,rw,crossmnt,no_subtree_check)を使用して共有されます。このオプションの意味は exports と同じで、これ以外のオプションを指定する場合は、 exportfs コマンドが呼び出され、設定します。
データセットに対して sharenfs プロパティが変更されると、そのデータセットとプロパティを継承する子プロパティは新しいオプションで再共有されます。ただし、そのプロパティが以前は off だった場合、またはプロパティが変更される前に共有されていた場合のみです。 新しいプロパティが off の場合、ファイルシステムは非共有となります。
logbias=latency|throughput
このデータセットにおける同期要求の処理について、ZFS にヒントを与えます。このプロパティは、プールログデバイスが設定されている場合にのみ有効です。logbias デフォルトである latency に設定されている場合、 ZFS はプールログデバイスを使って低レイテンシーでリクエストを処理します。
logbias がスループットに設定されている場合、ZFS は設定されたプールログデバイスを使用しません。その代わりに、ZFS はグローバルなプールのスループットとリソースの効率的な使用のために同期操作を最適化します。
終わりに
次回も、今回に引き続き、ZFSの設定可能なプロパティについて説明します。次回をお楽しみに。
さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。
DHT OSS導入コンサルティングサービス