GitLabのリポジトリデータ等を外部のNFSサーバーで管理する方法を試してみたいと思います。
今回はその事前準備としてNFSサーバーの使い方を学習します。
NFSとは
NFS(Network File System)は、名前の通りネットワーク越しでファイルのやり取りが可能となるシステムです。
Windowsで言う共有フォルダのようなものです。Windowsの場合はSMBというプロトコルを使用しています。
NFSサーバーの設定
それではNFSの設定を試していきたいと思います。
なお例として今回使用するNFSサーバーのIPは192.168.0.2
、NFSクライアントのIPは192.168.0.3
とします。
まずはNFSサーバー側にNFSサービスのインストールを行います。
sudo yum install -y nfs-utils
インストール完了後、共有ディレクトリを作成します。
ディレクトリの作成後、作成したディレクトリのパスをコピーしておきます。
mkdir <共有ディレクトリ名>
cd <共有ディレクトリ>
pwd #実行後に表示されたパスをコピー
例:
/home/nfs
続いて/etc/exports
ファイルに以下のように共有させるディレクトリのパスと共有させたいクライアントのIPアドレスを記載します。
オプションを指定する場合は、クライアントのIPアドレスの後ろに()をつけて、その中にオプションを記載します。
オプションを複数指定する場合は、「,」で区切ります。
<pwdコマンドでコピーしたパス> <クライアントのIPアドレス>(<オプション>)
オプション一例
rw:クライアントに書き込みを許可
async:非同期書き込みを有効にする
no_root_squash:クライアント側のroot権限にて実行可能とする
例:
/home/nfs 192.168.0.3(rw,async,no_root_squash)
NFS自体の設定は完了ですが、Firewallを設定していない為このままではNFSの通信が弾かれてしまいます。
以下のコマンドを実行し、NFSの通信を許可します。
ちなみにクライアント側はFirewallの穴あけは必要無いみたいです。
sudo firewall-cmd --permanent --zone=public --add-service=nfs
sudo firewall-cmd --reload
sudo firewall-cmd --list-all #serviceにnfsが追加されていればOK
準備が完了しましたら、NFSのサービスを起動させます。
ついでにOS起動時に自動でサービスを立ち上げるようにしています。
sudo systemctl status nfs-server
sudo systemctl start nfs-server
sudo systemctl status nfs-server
sudo systemctl enable nfs-server
以上でNFSサーバー側の作業は完了です。
#NFSクライアントの設定
次にクライアント側の設定を実施します。
まずは共有ディレクトリをマウントする為のディレクトリを作成します。
mkdir <マウントディレクトリ名>
cd <マウントディレクトリ>
pwd #実行後に表示されたパスをコピー
続いてmount
コマンドを使用してNFSサーバーの共有ディレクトリをマウントします。
この時、オプションで-t nfs
を指定します。
sudo mount -t nfs -o rw <NFSサーバーのIPアドレス>:<NFSサーバーの共有ディレクトリへのパス> <コピーしたマウントディレクトリへのパス>
例:
sudo mount -t nfs -o rw 192.168.0.2:/home/nfs /mnt/nfs
上記コマンドがエラー無しで通ったら、df -Th
コマンドを実行して正しくマウントされているか確認します。
sudo df -Th
例:
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 12K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 9.7M 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 4.4G 13G 26% /
/dev/vda1 xfs 1014M 150M 865M 15% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/0
192.168.0.2:/home/nfs nfs4 22G 1.4G 21G 6% /mnt/nfs
動作の確認
NFSサーバーとNFSクライアントにて設定が完了しましたら、クライアント側にて正しく共有ができているか確認してみます。
以下コマンドを実行します。
touch <マウントディレクトリへのパス>/test.txt
例:
touch /mnt/nfs/test.txt
エラーが返ってこなければ完了です。
続いて上記コマンドで作成したテストファイルが格納されているかサーバー側で確認します。
ll <共有ディレクトリへのパス>
例:
ll /home/nfs
上記コマンド実行後、クライアント側で作成したテストファイルtest.txt
が表示されていれば正しくNFSで共有できている事を確認できます。
以上で事前準備は完了です。
次回は今回実施した内容を応用し、GitLabのデータをNFSサーバーで管理するように設定します。