NFS(Network File System)およびiSCSI(Internet Small Computer Systems Interface)は、ネットワーク上でファイルの共有やストレージの提供を行うためのプロトコルです。これらは、特にLinuxサーバー環境において、効率的なファイルシステム管理やストレージ管理を行うために使用されます。本記事では、UbuntuでNFSとiSCSIを設定し、ネットワーク上でファイルの共有やストレージの提供を行う方法について、ステップバイステップで詳しく解説します。
NFS(Network File System)の設定
NFSは、LinuxやUnix系のシステムで広く使用されているファイル共有プロトコルです。クライアントとサーバー間で、ファイルシステムをネットワーク越しに共有することができます。以下に、UbuntuでNFSを設定する手順を示します。
1. NFSサーバーのインストール
最初に、NFSサーバーをインストールします。Ubuntuでは、nfs-kernel-server
パッケージを使用します。ターミナルを開き、以下のコマンドを実行します。
bashsudo apt update sudo apt install nfs-kernel-server
2. 共有するディレクトリの作成
次に、共有するディレクトリを作成します。例えば、/srv/nfs
というディレクトリを作成するとします。
bashsudo mkdir -p /srv/nfs
3. 共有ディレクトリの設定
作成したディレクトリを、他のクライアントに共有できるように設定します。/etc/exports
ファイルに設定を追加します。
bashsudo nano /etc/exports
このファイルに以下の内容を追加します。
bash/srv/nfs *(rw,sync,no_subtree_check)
*
は全てのクライアントを許可することを意味し、rw
は読み書き可能、sync
は同期モードで書き込む設定です。
4. NFSサーバーの再起動
設定を反映させるために、NFSサーバーを再起動します。
bashsudo systemctl restart nfs-kernel-server
5. ファイアウォール設定
ファイアウォールを使用している場合、NFSに必要なポートを開放する必要があります。以下のコマンドでポートを開放します。
bashsudo ufw allow from 192.168.1.0/24 to any port nfs
ここでは、192.168.1.0/24
というネットワークからのアクセスを許可しています。必要に応じて、IPアドレスやネットワーク範囲を変更してください。
6. NFSクライアントの設定
NFSサーバーをセットアップしたら、次はNFSクライアント側での設定です。クライアント側にもNFSクライアントツールをインストールします。
bashsudo apt install nfs-common
次に、NFSサーバーから共有されたディレクトリをマウントします。例えば、サーバーのIPアドレスが192.168.1.100
で、共有ディレクトリが/srv/nfs
であった場合、以下のコマンドでマウントします。
bashsudo mount 192.168.1.100:/srv/nfs /mnt
マウントが成功した場合、/mnt
ディレクトリ内でサーバーのファイルにアクセスできるようになります。
7. 自動マウントの設定
システム起動時に自動的にマウントされるようにするためには、/etc/fstab
ファイルに以下のエントリを追加します。
bash192.168.1.100:/srv/nfs /mnt nfs defaults 0 0
これで、システムが起動するたびにNFS共有が自動的にマウントされます。
iSCSI(Internet Small Computer Systems Interface)の設定
iSCSIは、ネットワーク越しにストレージを共有するためのプロトコルで、ブロックレベルでのストレージ共有を提供します。NFSがファイルレベルでの共有を行うのに対して、iSCSIはディスクをネットワーク上で直接接続するようなイメージです。以下に、UbuntuでiSCSIターゲットおよびiSCSIイニシエータを設定する手順を示します。
1. iSCSIターゲットのインストール
iSCSIターゲットを設定するには、まずtargetcli
というツールをインストールします。
bashsudo apt update sudo apt install targetcli-fb
2. iSCSIターゲットの作成
ターゲット用のディスクを作成し、そのディスクをiSCSIターゲットとして設定します。まず、ターゲット用のバックエンドディスクを作成します。
bashsudo dd if=/dev/zero of=/srv/iscsi-disk.img bs=1M count=1024
このコマンドは、1GBの空き領域を持つディスクイメージを作成します。
次に、targetcli
を使用してiSCSIターゲットを作成します。
bashsudo targetcli
以下のコマンドでターゲットを作成します。
bash/> backstores/block create name=iscsi-disk1 file_or_dev=/srv/iscsi-disk.img /> iscsi/target create iqn.2025-02.com.example:target1 /> iscsi/iqn.2025-02.com.example:target1/tpg1/luns create /backstores/block/iscsi-disk1 /> iscsi/iqn.2025-02.com.example:target1/tpg1/acl add 192.168.1.0/24
ここで、ターゲットのIQN(iSCSI Qualified Name)はiqn.2025-02.com.example:target1
とし、クライアントのIPアドレス範囲(192.168.1.0/24
)を指定しています。
3. iSCSIターゲットの有効化
ターゲット設定が完了したら、ターゲットを有効化し、iSCSIターゲットサービスを再起動します。
bash/> exit
sudo systemctl restart iscsitarget
4. iSCSIイニシエータの設定
次に、iSCSIターゲットに接続するクライアント側の設定です。iSCSIイニシエータをインストールし、ターゲットに接続します。
bashsudo apt install open-iscsi
ターゲットのIPアドレスが192.168.1.100
の場合、以下のコマンドでターゲットを検出します。
bashsudo iscsiadm -m discovery -t sendtargets -p 192.168.1.100
ターゲットが見つかったら、以下のコマンドで接続します。
bashsudo iscsiadm -m node -T iqn.2025-02.com.example:target1 -p 192.168.1.