Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

28.3. ファイルシステムダイレクトアクセスのための永続メモリーの設定

ファイルシステムの直接アクセスでは、名前空間を fsdax モードに設定する必要があります。このモードでは、直接のプログラミングモデルを使用できます。デバイスが fsdax モードで設定されている場合、その上にファイルシステムを作成して、-o fsdax マウントオプションでマウントできます。次に、このファイルシステムのファイルで mmap() 操作を実行するアプリケーションは、ストレージに直接アクセスします。以下の例を参照してください。
# ndctl create-namespace --force --reconfig=namespace0.0 --mode=fsdax --map=mem
{
   "dev":"namespace0.0",
   "mode":"fsdax",
   "size":17177772032,
   "uuid":"e6944638-46aa-4e06-a722-0b3f16a5acbf",
   "blockdev":"pmem0"
}
この例では、namespace0.0 は namespace fsdax モードに変換されます。--map=mem 引数を使用すると、ndctl はシステム DRAM にダイレクトメモリーアクセス(DMA)に使用されるオペレーティングシステムのデータ構造を追加します。
DMA を実行するには、カーネルにはメモリーリージョンの各ページにデータ構造が必要です。このデータ構造のオーバーヘッドは、4KiB ページにつき 64 バイトです。小さいデバイスでは、問題なく DRAM に収まるのに十分なオーバーヘッド量があります。たとえば、16-GiB の名前空間では、ページ構造には 256MiB のみが必要になります。NVDIMM デバイスは通常小さくて高価であるため、カーネルの追跡データ構造を DRAM に格納することが推奨されます。これは、--map=mem パラメーターによって示されているように推奨されます。
今後、NVDIMM デバイスはサイズがテラバイトになっている可能性があります。このようなデバイスの場合、ページトラッキングデータ構造の保存に必要なメモリー量は、システムの DRAM の量を超える可能性があります。永続メモリーの 1 TiB に対して、ページ構造だけで 16 GiB が必要です。これにより、--map=dev パラメーターを指定して永続メモリーにデータ構造を保存することが推奨されます。
fsdax モードで名前空間を設定したら、ファイルシステムの名前空間の準備が整います。Red Hat Enterprise Linux 7.3 以降、Ext4 ファイルシステムと XFS ファイルシステムの両方が、テクノロジープレビューとして永続メモリーの使用を可能にします。ファイルシステムの作成には特別な引数は必要ありません。DAX 機能を取得するには、dax マウントオプションでファイルシステムをマウントします。以下に例を示します。
# mkfs -t xfs /dev/pmem0
# mount -o dax /dev/pmem0 /mnt/pmem/
次に、アプリケーションは永続メモリーを使用し、ファイルを /mnt/pmem/ ディレクトリーに作成し、ファイルを開いて、mmap 操作を使用して直接アクセスのファイルをマッピングします。
直接アクセスに使用する pmem デバイスにパーティションを作成する場合は、パーティションをページ境界に調整する必要があります。Intel 64 アーキテクチャーおよび AMD64 アーキテクチャーでは、パーティションの開始と終了用に最低 4KiB のアライメントが必要ですが、2MiB が優先されるアライメントです。parted ツールは、デフォルトでは 1MiB の境界にパーティションをそろえます。最初のパーティションには、パーティションの開始部分として 2MiB を指定します。パーティションのサイズが 2MiB の倍数である場合は、その他のパーティションもすべて調整されます。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。