バックアップ媒体を選択する際、OSSをバックアップのターゲットとして使用することを推奨します。OSSはステートレスなオブジェクトストレージであり、ステートを持つNFS4よりも高い安定性を誇ります。
NFSをバックアップターゲットとして使用する必要がある場合は、このセクションを参照してNFSをデプロイしてください。NFSにはソフトウェア型とハードウェア型の2種類がありますが、ソフトウェアNFSは不安定でNFSハングが発生しやすく、バックアップタスクが停止したり、NFSにマウントされたマシンが正常に動作しなくなったりする可能性があるため、専用のNFSハードウェアデバイスの使用を推奨します。
注意事項
NFS環境を使用する場合は、NFSをマウントしてからバックアップを開始する必要があります。バックアップ中にNFSで問題が発生した場合は、データバックアップとログアーカイブを一時停止してから、NFSの問題を解決する必要があります。
OceanBaseデータベースの現在のバージョンは、NFS 3以降をサポートしています。
NFSのパフォーマンス不足による不安定な動作を避けるため、SSDを搭載したNFSサービスの使用を推奨します。
NFSをバックアップ媒体として使用する場合は、すべてのOBServerノードが同一サーバーのNFSにマウントされていることを確認する必要があります。また、バックアップがスムーズに進行するためには、本ドキュメントで推奨されているパラメータを使用してNFSをマウントする必要があります。NFSのマウント手順の詳細については、このセクションのNFSクライアントのデプロイを参照してください。
OBServerノードを再起動する際は、まずNFSを起動してから、OBServerノードを起動する必要があります。
新しいマシンを追加した後、OBServerノードを起動する前に、新しいマシンがNFSに正常にマウントされているか、他の媒体にバックアップできることを確認する必要があります。
NFSソフトウェアのサーバー側のデプロイ
注意
NFSハードウェアデバイスを使用している場合は、この操作をスキップし、直接NFSクライアントをデプロイできます。
NFSサーバーにログインします。
以下のコマンドを実行し、YUMパッケージマネージャーを使用してNFSをインストールします。
sudo yum install nfs-utilsエクスポートを設定します。
バックアップに必要な容量とパフォーマンスを考慮して、適切なディレクトリを共有ディレクトリとして選択します。
例えば、このドキュメントで選択された共有ディレクトリは
/data/nfs_server/です。sudo vim /etc/exportsコマンドを使用して設定ファイルを開き、以下の情報を設定します。/data/nfs_server/ xx.xx.xx.xx/16(rw,sync,all_squash)ここで、
xx.xx.xx.xxはアクセスを許可するネットワークセグメントを表します。以下のコマンドを実行して、匿名ユーザーに権限を付与し、
exportsで指定されたディレクトリへのアクセス権限を確保します。CentOS 7CentOS 8CentOS 7バージョンでは、NFSはデフォルトで
nfsnoboodyを匿名ユーザーとして使用します。コマンドは以下のとおりです:sudo chown nfsnobody:nfsnobody -R /data/nfs_serverCentOS 8以降のバージョンでは、NFSはデフォルトで
noboodyを匿名ユーザーとして使用します。コマンドは以下のとおりです:sudo chown nobody:nobody -R /data/nfs_server
以下のコマンドを実行して、NFSを再起動します。
sudo systemctl restart nfs-serverスロットテーブルを設定します。
sudo vim /etc/sysctl.confコマンドを実行して、sysctl.conf設定ファイルを開き、ファイルに以下の情報を一行追加します:sunrpc.tcp_max_slot_table_entries=128以下のコマンドを実行して、同時に発信されるNFSリクエスト数を128に変更します。
sudo sysctl -w sunrpc.tcp_max_slot_table_entries=128コマンドが正常に実行された後、
cat /proc/sys/sunrpc/tcp_max_slot_table_entriesコマンドを実行して設定が有効になっているか確認できます。戻り値が128であれば、変更は成功です。(オプション)マシンを再起動します。
NFSクライアントのデプロイ
NFSクライアントをデプロイする際には、すべてのOBServerノードで操作を実行する必要があります。
以下は、あるOBServerノードでの操作を例にした手順です。
OBServerノードにログインします。
以下のコマンドを実行し、YUMパッケージマネージャーを使ってNFSをインストールします。
sudo yum install nfs-utilsスロットテーブルを設定します。
sudo vim /etc/sysctl.confコマンドを実行して、sysctl.conf設定ファイルを開き、ファイルに以下の情報を一行追加します:sunrpc.tcp_max_slot_table_entries=128以下のコマンドを実行して、同時に発信されるNFSリクエスト数を128に変更します。
sudo sysctl -w sunrpc.tcp_max_slot_table_entries=128コマンドが正常に実行された後、
cat /proc/sys/sunrpc/tcp_max_slot_table_entriesコマンドを実行して設定が有効になっているか確認できます。戻り値が128の場合、変更は成功です。(オプション)マシンを再起動します。
適切なディレクトリをマウントポイントとして選択し、以下のコマンドを実行してNFSをマウントします。
NFS 3.xNFS 4.x例えば、このドキュメントでは
/data/nfsディレクトリへのマウントを前提としています。適切なディレクトリがない場合は、新しいディレクトリを作成できます。sudo mount -tnfs -o rw,nfsvers=3,sync,lookupcache=positive,hard,nolock,timeo=600,wsize=1048576,rsize=1048576,namlen=255 10.10.10.1:/data/nfs_server /data/nfs例えば、このドキュメントでは
/data/nfsディレクトリへのマウントを前提としています。適切なディレクトリがない場合は、新しいディレクトリを作成できます。sudo mount -tnfs -o rw,nfsvers=4.1,sync,lookupcache=positive,hard,timeo=600,wsize=1048576,rsize=1048576,namlen=255 10.10.10.1:/data/nfs_server /data/nfsステートメント内で:
nfsvers:使用するNFSバージョンを示します。NFS 4.xを使用する場合は、NFS 4.1以降のバージョンを選択することを推奨します。NFS 4.0では、ファイル名を変更した後に古いファイルを読み取るリスクがあるため、使用は推奨されません。sync:同期書き込みを使用して、データがサーバー側にタイムリーにフラッシュされることを保証し、データの一貫性を確保します。lookupcache=positive:オペレーティングシステムカーネルが指定されたマウントポイントのディレクトリキャッシュを管理する方法を指定します。有効なパラメータはall/none/pos/postiveです。postiveは、ディレクトリやファイルへの同時アクセス時に誤って存在しないと報告される問題を回避し、データの一貫性を保証するために使用されます。hard:NFSが利用不可の場合、システムはアプリケーションの読み書き要求をブロックし、データの一貫性を保証します。softオプションは使用できません。データエラーのリスクがあります。lock/nolock:サーバー上でファイルをロックするためにNLMプロトコルを使用するかどうかを選択します。デフォルトはlockです。NFS 4.xプロトコルはファイルロックを統合していますが、NFS 3.xプロトコル自体はファイルロックをサポートしていません。NFS 3.xプロトコルを使用する場合は、マウント時にnolockを追加することを推奨します。timeo:リトライの待機時間を0.1秒単位で指定します。設定時には、値を大きく設定しすぎないようにし、600を推奨値とします。wsize:書き込むデータブロックのサイズを表します。1048576に設定することを推奨します。rsize:読み取るデータブロックのサイズを表します。1048576に設定することを推奨します。namlen:255に設定することを推奨します。10.10.10.1:NFSサーバーのIPアドレスを表します。
注意
- NFS 3/4をマウントする際は、バックアップ用のマウント環境パラメータに、例で推奨されているパラメータが含まれていることを確認する必要があります。
- Docker環境では、ホスト上にNFSをマウントしてから、Docker内にマッピングする必要があります。Docker内部で直接NFSをマウントすると、クライアントがフリーズする可能性があります。
マウントが完了したら、以下のコマンドを実行して、NFSのパフォーマンスを検証します。
fio -filename=/data/nfs/fio_test -direct=1 -rw=randwrite -bs=2048K -size=100G -runtime=300 -group_reporting -name=mytest -ioengine=libaio -numjobs=1 -iodepth=64 -iodepth_batch=8 -iodepth_low=8 -iodepth_batch_complete=8例えば、実行結果は次のとおりです:
Run status group 0 (all jobs): WRITE: io=322240MB, aggrb=1074.2MB/s, minb=1074.2MB/s, maxb=1074.2MB/s, mint=300006msec, maxt=300006msec
Mount NFS 3時のエラー処理方法
NFSをデプロイする際、Mount NFS 3時に requested NFS version or transport protocol is not supported エラーが発生した場合、以下の方法を参考に処理できます。
NFSサーバーにログインします。
NFSサーバーがサポートするバージョンを確認します。
sudo cat /proc/fs/nfsd/versions次の情報が返されたことが確認されました:
-2 -3 +4 +4.1 +4.2ここで、
-3はNFS 3が無効であることを示しています。設定を調整します。
NFS 3を有効にするには、以下の操作を行います:
/etc/nfs.confファイルが存在するか確認します。存在する場合、/etc/nfs.confファイル内のvers3=yの前の#を削除する必要があります。変更後のサンプルファイルは次のとおりです:
[nfsd] # debug=0 # threads=8 # host= # port=0 # grace-time=90 # Tease-time=90 # udp=y # tcp=y # vers2=n vers3=y # vers4=y # vers4.0=y # vers4.1=y # vers4.2=y # rdma=n ##/etc/sysconfig/nfsファイルが存在するか確認します。存在する場合、/etc/sysconfig/nfsファイルのRPCNFSDARGSパラメータに-N 3が指定されていないか確認します。指定されている場合、-N 3を削除する必要があります。例えば、
-N 3を削除した後のRPCNFSDARGSパラメータの値は次のとおりです:RPCNFSDARGS="-N 2 -N 4"
以下のコマンドを実行して、NFSを再起動します。
sudo systemctl restart nfs-server再度、NFSサーバーがサポートするバージョンを確認します。
sudo cat /proc/fs/nfsd/versions次の情報が返されることが確認されました:
-2 +3 -4 -4.1 -4.2ここで、
+3はNFS 3が有効であることを示しています。