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でデータを読み取るためにこれを悪用しないでください

推薦する

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装

目次序文グラフィックドライバーをインストールするCUDAをアンインストールするCUDAをインストール...

webpackのモバイル適応ソリューションの概要

目次レムフォルクスワーゲンサードパーティのUIフレームワークに適応する結論モバイル開発における最も一...

Webデザインの経験:ナビゲーションシステムをシンプルにする

<br />友人と話し合っていたとき、フレームワークのレイヤー設計の中で最も核となるのは...

Vue.js フロントエンドプロジェクト向け多言語ソリューションのアイデアと実践

目次1. 通常どのようなコンテンツを処理する必要があるか2. 基本的な考え方3. 具体的な実践の詳細...

React で複数の setStates が何回呼び出されるのでしょうか?

目次1. 2 つの setState を何回呼び出すのですか? 2. 2 つの setState の...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

Ubuntu 20.04は静的IPアドレスを設定します(異なるバージョンを含む)

Ubuntu 20.04はnetplanを通じてネットワークを管理するため、以前のバージョンとは少...

優れたユーザー インターフェース デザインのための 37 のヒント (画像付き)

1. 複数列レイアウトではなく、単一列レイアウトを使用する1 列のレイアウトにより、全体的な状況をよ...

MySQL 最適化: キャッシュ最適化

何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

関連記事:初心者が学ぶ HTML タグ (4)導入された HTML タグは、必ずしも XHTML 仕...

ゲーム着物メモ問題の簡単な分析

本日、ゲームを再起動した後、バックアップしたデータをターゲットデータベースにインポートできないことが...

TypeScript での関数オーバーロード

目次1. 関数シグネチャ2. 関数のオーバーロード2.1 オーバーロードされたシグネチャは呼び出し可...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...