Ubuntu Server上にNAS環境を構築する

少し気に入らないことがあるとツールの変更を検討してしまう、めぐみそです!

今回はUbuntu ServerにNASとして動作できるような環境を構築していきます。

TrueNASはどうしたの?(余談)

いきなり余談ですが、実は過去にTrueNASをインストールして記事にしていました。
ですが、TrueNASに使用されているZFSはメモリが少なくなると極端に不安定になるので、ZFSを使わない方法を取ることにしました。

材料

・Ubuntu Serverが入ったサーバー 1台(インストールは説明していません)
・ストレージ 複数台
・ネットワーク 1Gbps以上、 10Gbps以上推奨。

今回使用するサーバーは以下のスペックです。
CPU: Intel Core i3-2100
メモリ: DDR3 8GB
SSD: 120GB
HDD: 2TB x3
ネットワーク: 100Mbps

古いサーバーを持ってきたら何故か100Mbpsでした…そのうち1Gbps以上に変更しておきます。

RAID構築

まずはRAIDの構築を行います。
RAIDの構築には、今回は「mdadm」を使用します。
Ubuntu Serverには基本的に最初から入っているはずですが、入っていない場合は以下のコマンドでインストールできます。

sudo apt install mdadm

各HDDの準備

まずはそれぞれのHDDにパーティションを1つ作成します。
作成するパーティションは、作成できる限界のサイズを作成します。

パーティションの作成には、今回はfdiskを使用します。


使用する予定のHDDを確認するため、以下のコマンドで確認をします。

sudo fdisk -l

実行すると、現在接続されているディスクの一覧として、識別子と容量が表示されます。
今回は2TBと表示されているディスクがHDDなので、これらの3台を準備します。


ディスクのパーティションに変更を加えるため、以下のコマンドで設定を行います。

sudo fdisk /dev/<ディスク>

ディスクの値には、画像の赤枠で囲まれた部分を入力します。(/dev/sdb など)


まずは「p」を入力して、変更するHDDが正しいものかを確認します。

ここで間違っていることが判明したら、「q」を入力すると変更を破棄できます。


次に「d」を入力して、一旦残っているパーティションを全て削除します。

その後、「n」を入力して、最大容量のパーティションを1個作成します。
色々聞かれますが全てデフォルトでいいので、Enterを3回くらい押してれば作成されます。

最後に「w」で変更を書き込んで終了します。

この作業を、使用するHDDの回数分実行します。

RAID作成

準備ができたので、いよいよRAIDを作成します。

今回はRAID5で作成、作成するRAIDの名前(保存先)は、/dev/md0 としています。

mdadm --create /dev/md0 --level=raid5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd2

RAIDのレベルを変える場合は、 –level=raid5となっている部分を、raid1などに変更してください。
また、RAIDに使用するHDDの量を変える場合は、 –raid-devices=3の数字を台数に変更してください。

/dev/sdb1は、先程の識別子に1を追加したものを入力します。
1は具体的にはパーティションを表しますが、今回は1個しかないのでこれでいいはずです。


RAIDの作成が終わると、リビルドが始まります。
リビルド中に作業をするとパフォーマンスが悪い上にリビルドに時間がかかるようになってしまうので、リビルド中は違うことをしていた方が良いです。

リビルドの残り時間は、以下のコマンドで確認できます。

cat /proc/mdstat

finish=607.0min と書いてある部分が残り時間です。
分単位で表示されているので、この場合はあと10時間ということらしいです。なげえ!


作成したRAIDにパーティションを作成します。
ここからいよいよ保存用のパーティションを作成します。

先ほどと同じでfdiskを使用するので、以下のコマンドを入力します。

sudo fdisk /dev/md0

今回は最大容量を割り当てるので、「n」を入れた後にEnterを3回連打で設定します。
最後に「w」で書き込みです。


次にフォーマットをします。
今回はext4でフォーマットすることにします。

sudo mkfs.ext4 /dev/md0p1

このコマンドでフォーマットが実行されます。p1は1個目のパーティションということになります。


フォーマットをするとマウントができるようになります。

まずはマウント用のディレクトリを作成します。

sudo /mnt/raid

その後、作成したディレクトリにマウントします。

sudo mount /dev/md0p1 /mnt/raid

マウントが完了すると、そこに読み書きができるようになります。

cd /mnt/raid

ここからはいつもと同じようにファイルに書き込みができるようになります。
もちろん、この中のものは全てRAIDに書き込まれます。

Samba共有

ここからはWindows、Mac、iOS、Androidなどで共有できるよう、Samba環境を構築していきます。

Sambaインストール

Sambaのインストールは、以下のコマンドでできます。

sudo apt install samba

ユーザー追加

Sambaで接続可能にするためのユーザーを追加します。
UbuntuのユーザーをSambaで使用可能にするため、以下のコマンドを使用します。

sudo pdbedit -a <ユーザー名>

ユーザー名は、Ubuntuに存在するユーザーである必要があります。
入力すると、パスワードを設定するよう言われるので、Samba用のパスワードを設定します。

共有用のディレクトリの作成

先ほど作成したRAIDの中に、Sambaで共有するディレクトリを作成します。

sudo mkdir /mnt/raid/share

念の為、自分用のディレクトリを作成します。

sudo mkdir /mnt/raid/share/megumiso

自分用なので、自分だけがアクセスできるように設定します。

sudo chown <ユーザー名>:<グループ名> /mnt/raid/share/megumiso
sudo chmod 770 /mnt/raid/share/megumiso

設定ファイル変更

Sambaの設定を変更します。

今回の例ではvimをエディタとして使用していますが、適宜ご自身の使いやすいものに変更してください。

sudo vim /etc/samba/smb.conf
[megumiso] # 共有で表示される共有名
path = /mnt/main/share/megumiso # 共有するディレクトリ
writeable = yes # 書き込み可能にするか
guest ok = no # ゲストからのアクセス拒否
create mode = 0775 # 作成されるファイルの権限
directory mode = 0775 # 作成されるディレクトリの権限
valid users = @megumiso # アクセス可能となるグループ

ファイルの最後にこれらを追加します。
内容は適宜、適当な項目に変更してください。


書き込んだら、Sambaを再起動します。

sudo service samba restart

※失敗した場合は samba → smbd に置き換えてください

これで設定は終わりです。

接続確認

最後にPCから接続できるか確認します。

Windows

Windowsの場合はエクスプローラから接続します。

上部「コンピュータ」から、ネットワークドライブの割り当てを選択します


フォルダーに以下のような感じで入力します。

\\<IPアドレス>\\<共有名>

完了を選択すると、パスワードを入力する画面が現れる場合があるので、入力して接続をします。


成功すると、このように保存されている内容が表示されます。


ファイルの保存も試してみましょう。今回は成功しました。

ここで失敗した場合は、構築する段階で権限の設定が間違っていた可能性があります。

Mac

Macの場合は、Finderから接続を行います。

「移動」タブから、「サーバへ接続」を選択します。


アドレスに以下を入力します。

smb://<IPアドレス>

入力したら、接続を選択します。


接続先を選択して、OKを選択します。

ログインを求められたら、先ほど設定したアカウントでログインします。


成功すると、このように保存されているファイルが表示されるようになります。


データも転送できることを確認しましょう。

まとめ

今回はUbuntu Server上にNAS環境を構築してみました。

意外と簡単に作れて、接続も簡単にできたので、気になる方はお試しでも構築すると良いかもしれません。