AIX マウント NFS の書き込み効率が低い場合の解決策

AIX マウント NFS の書き込み効率が低い場合の解決策

NFSが提供するサービス

マウント: サーバー上で /usr/sbin/rpc.mountd サーボ プロセスを有効にし、クライアント上でマウント コマンドを使用します。マウントされたサーボ プロセスは、クライアントの要求に応答する RPC です。

リモート ファイル アクセス: サーバーで /usr/sbin/nfsd を有効にし、クライアントで /usr/sbin/biod を有効にすると、クライアントのファイル要求が処理されます。しかし、クライアント上のユーザーがサーバー上のファイルを読み書きしようとすると、biod サーボ プロセスがこの要求をサーバーに送信します。

ブート パラメータ: サーバー上の /usr/sbin/rpc.bootparamd デーモンを有効にして、ディスクレス SunOS クライアントのブート パラメータを提供します。

PC認証: サーバー側で/usr/sbin/rpc.pcnfsdを起動してPC-NFSのユーザー認証サービスを提供します。

NFS サービスはステートレスです。つまり、NFS 転送はアトミックであり、1 回の NFS 転送は 1 回の完全なファイル操作に対応します。

背景:

Linux は NFS のサーバー側、AIX は NFS のクライアント側です (また、クライアント側としても Linux を使用した比較テストもあります)。

1. NFS に対応する基盤デバイスはフラッシュ カードであり、ローカル テスト I/O 書き込みパフォーマンスは 2GB/秒に達します。

2. サーバーはギガビット ネットワーク カードであり、FTP テスト転送は 100MB/秒に達します。

3. AIX は NFS を正常にマウントしますが、dd テストの書き込み速度はわずか 10MB/秒です。

4. Linux は NFS を正常にマウントし、同じ dd テストの書き込み速度は 100MB/秒に達します。

注: 上記の速度は主に桁違いを反映しており、実際のテストでは若干の偏差が生じます。

特定の環境:

  • NFS サーバー: RHEL 6.8
  • NFS クライアント: AIX 6.1、RHEL 6.8

マウントパラメータは MOS ドキュメントに従って設定されます。

NAS デバイス上の NFS で使用する場合の RAC データベースおよび Clusterware の Oracle ファイルのマウント オプション (ドキュメント ID 359515.1)

現時点での実際のニーズに応じて、設定する必要があるパラメータを調整します。

--MOS 推奨事項 (AIX):
cio、rw、bg、ハード、nointr、rsize=32768、
wsize=32768、プロトコル=tcp、noac、
vers=3、timeo=600

--MOS 推奨事項 (Linux):
rw、bg、ハード、nointr、rsize=32768、
wsize=32768、tcp、actimeo=0、
vers=3、timeo=600

AIX NFS マウント パラメータ:

マウント -o cio、rw、bg、hard、nointr、rsize=32768、wsize=32768、proto=tcp、noac、vers=3、timeo=600 10.xx.xx.212:/xtts /xtts

直接マウントすると次のエラーが表示されます。

# マウント -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts
マウント: 1831-008 諦める:
10.xx.xx.212:/xtts
vmount: 操作は許可されていません。

情報をチェックして、AIX で追加のネットワーク パラメータを設定する必要があることを確認します。

# nfso -p -o nfs_use_reserved_ports=1

再度マウントを試行してください:

マウント -o cio、rw、bg、hard、nointr、rsize=32768、wsize=32768、proto=tcp、noac、vers=3、timeo=600 10.xx.xx.212:/xtts /xtts

dd テストの速度は非常に不十分で、わずか 10MB/秒です。

--テストパフォーマンス; AIX NFS
# 時間 dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400
102400+0 件のレコードがあります。
102400+0 レコードが出力されました。

実数 0分43秒20
ユーザー 0m0.79s
システム 0分5.28秒
# 時間 dd if=/xtts/test-write of=/dev/null bs=8192 count=102400
102400+0 件のレコードがあります。
102400+0 レコードが出力されました。

実数 0分30秒86
ユーザー 0分0.84秒
システム 0分5.88秒

すべてのパラメータは、実際のニーズと MOS の推奨事項に従って設定されます。何か質問はありますか?

  • cio パラメータ テストを削除してみましたが、結果はほとんど変わりませんでした。
  • ハード パラメータ テストを削除してみましたが、結果はほとんど変わりませんでした。
  • プロトコルを TCP から UDP に変更してみましたが、結果はほとんど変わりませんでした。

ほぼすべての可能なパラメータを試しましたが、結果は理想的ではありませんでした。私たちはすぐにリソースを調整し、ホスト エンジニアを見つけて問題のトラブルシューティングを行う準備ができました。

この瞬間、突然インスピレーションが湧き、ある可能性を思いつきました。 AIX 上の NFS が単一プロセスの I/O スループットを制限する可能性はありますか?この推測に基づいて、並列テストを実行します。

5 つのウィンドウを開き、同時に dd を起動します。

時間 dd if=/dev/zero of=/xtts/test-write1 bs=8192 カウント=102400
時間 dd if=/dev/zero of=/xtts/test-write2 bs=8192 カウント=102400
時間 dd if=/dev/zero of=/xtts/test-write3 bs=8192 カウント=102400
時間 dd if=/dev/zero of=/xtts/test-write4 bs=8192 カウント=102400
時間 dd if=/dev/zero of=/xtts/test-write5 bs=8192 カウント=102400

5 つのウィンドウがすべて同時に 55 秒で完了したことに驚きました。これは 800M*5=4000M に相当し、すべて 55 秒で完了し、1 秒あたり 72MB/秒に達しました。この並列アプローチにより、効率を向上させるニーズが満たされました。

また、テストのために複数のウィンドウを開き続ける限り、基本的に 100 MB/秒 (ギガビット ネットワーク カードによって制限されます) のネットワーク制限に達する可能性があるようです。

P.S. 別の Linux サーバーにマウントされた同じ NFS をテストすると、並列化なしで dd 書き込み速度が 100MB/秒に達することがあります。これも以前私の考えに影響を与えた要因でした。
Linux NFS マウント パラメータ:

# マウント -o rw、bg、hard、nointr、rsize=32768、wsize=32768、tcp、actimeo=0、vers=3、timeo=600 10.xx.xx.212:/xtts /xtts

Linux NFS テスト結果:

--パフォーマンステスト; Linux NFS
# dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400
102400+0件のレコード
102400+0 レコードが出力されました
838860800 バイト (839 MB) をコピーしました、6.02451 秒、139 MB/秒
# dd if=/xtts/test-write of=/dev/null bs=8192 count=102400
102400+0件のレコード
102400+0 レコードが出力されました
838860800 バイト (839 MB) をコピーしました、8.55925 秒、98.0 MB/秒

私は AIX に精通しておらず、基礎となる原理については詳しく調べませんでした。当初、問題解決の過程で最も混乱したのは、Linux をクライアントとして使用した場合に、dd テストが並列化なしで 100MB/秒の速度に達することができる理由であり、これが固有の考え方に陥らせました。この事件から私が学んだ教訓は、突破口を開くためには時には既成概念にとらわれずに考えなければならないということだ。

最後に、フラッシュ メモリ カードの I/O 機能に対する私の感銘を表すために、NFS サーバー側でのローカル テストの結果も投稿しました。

# dd if=/dev/zero of=/dev/test-write2 bs=8192 count=1024000
1024000+0件のレコード
1024000+0 レコードが出力されました
8388608000 バイト (8.4 GB) をコピーしました、4.19912 秒、2.0 GB/秒

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Linux システム間で NFS ネットワーク ファイル システムをマウントする方法
  • MacOS は NFS をマウントできません 操作が許可されていません エラーの解決方法
  • Centos7 のインストールと NFS サービスの構成およびマウントのチュートリアル (推奨)

<<:  MySQL 5.7 のユニオンオール使用法のブラックテクノロジーを 5 分で学ぶ

>>:  Vueでデータを読み取るためにこれを悪用しないでください

推薦する

CSS3 での 2D および 3D 変換の実装

CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...

デプロイから基本操作までDocker Swarm

Docker SwarmについてDocker Swarm は次の 2 つの部分で構成されます。 D...

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

MySQL Shell import_tableデータインポートの実装

目次1. import_tableの紹介2. データのロードとテーブル関数のインポートの例2.1 L...

JavaScript 戦略パターンを使用してフォームを検証する方法

目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...

Vue3でアイコンを使用する2つの例

目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...

新しい Linux ファイル権限設定における umask の詳細な理解

序文起源は質問 1 です: umask が 022 に設定されている場合、作成するファイルのデフォル...

VueはSplitを使用して、ユニバーサルドラッグアンドスライドパーティションパネルコンポーネントをカプセル化します。

目次序文始める基本レイアウトデータバインディングイベントバインディング最適化ジッター問題を最適化する...

MySQLが日付フィールドインデックスを使用しない理由の要約

目次背景探検する要約する背景テーブルでは、dataTime フィールドは varchar 型に設定さ...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

CSS は、モバイル端末でクリックされたときに生成された要素の背景色を削除します (推奨)

クリック時に背景色を生成する要素の CSS スタイルに次のコードを追加します。 -webkit-ta...

HTML テーブルタグチュートリアル (26): セルタグ

<TD> タグの属性は、テーブル内のセルのプロパティを設定するために使用されます。表 &...

Centos7 システムでの MySQL マスター スレーブ同期構成スキーム

序文最近、高可用性プロジェクトに取り組む際には、データの同期が必要になっています。ノードが 2 つし...

mysqlは時間を自動的に追加し、時間を自動的に追加および更新する操作を実装します

時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...