Menu Close

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 は名前空間 fsdax モードに変換されます。--map=mem 引数を使用すると、ndctl は、ダイレクトメモリーアクセス (DMA) に使用されるオペレーティングシステムのデータ構造をシステム DRAM に配置します。
DMA を実行するには、カーネルに、メモリー領域の各ページのデータ構造が必要です。このデータ構造のオーバーヘッドは、4 KiB ページごとに 64 バイトです。小さいデバイスでは、問題なく DRAM に収まるのに十分なオーバーヘッド量があります。たとえば、16 GiB の名前区間のページ構造に必要なのは 256 MiB だけです。NVDIMM デバイスは通常小さくて高価であるため、--map=mem パラメーターで示すように、カーネルのページトラッキングデータ構造を DRAM に格納することが推奨されます。
将来的には、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 ツールは、デフォルトでは 1 MiB の境界にパーティションをそろえます。最初のパーティションには、パーティションの開始部分として 2MiB を指定します。パーティションのサイズが 2MiB の倍数の場合は、その他のパーティションも合わせてアライメントされます。