勉強のためにUbuntuサーバーを建てたのでsambaでファイルサーバーを作って保存環境の質を高めたいと思います。
自分はBlenderやHoudiniを使って3DCG制作をしていますが、いろんなデータを多岐に使う必要があり、シミュレーションなどをやると大容量で大量のデータを管理しないといけませんので、ファイルサーバーがあると複数台での作業もやりやすくなるのかなと思っています。
今回はUbuntu環境でsambaを使ってWindowsからも見えるファイルサーバーを作る流れをまとめます。
sambaって何?
もともとはマイクロソフトがwindows用にファイル共有プロトコルであるSMBを開発していたのですが、そのプロトコルを使ってLinux-Win間でのファイルやり取りを行うために生まれたプログラムがsambaです。
開発は30年程度続いており、かなり歴史の古いプログラムの一つで、長い歴史のなかで十分に枯れた信頼性のあるプログラムに熟成されているが魅力です。
いまのところマルチOSでアクセスできるファイルサーバーとしてほぼ一択ではないかと思います。
今回の前提
- Ubuntu(Desktop / ServerどちらでもOK)
- ローカルネットワーク内で使用
- Windows、Linuxからアクセスしたい
家庭内・個人用途 を想定しています。外に公開するなどの内容ではありません。また設定も必要最低限で「とりあえずファイルを保存できる」を達成するのが目標です。
サーバーのIP
家庭内LANの中でのIPを固定しておくと便利です。
通常は家庭用ルーターでLANが組まれていると思いますが、ルーターには大抵DHCP割り当て機能があると思います。
自分の環境はNECのAtermルーターなので、DHCP固定割当設定からIPアドレスを設定しています。

今回は192.168.10.199がサーバーのIPとして進めます。
sambaのインストール
sambaを入れます。
sudo apt update
sudo apt install sambaインストールできたら、サービスが動いているか確認します。
systemctl status smbdactive (running) になっていればOKです。

共有用ディレクトリを作る
例として/srv/share を使います。srvディレクトリはサーバーが提供する保存場所の用途などで使われることの多い場所とのことですが、もちろん任意の場所でも問題ないです。
パーミッションと所有も変更しておきます。
sudo mkdir -p /srv/share
sudo chown -R user:user /srv/share
sudo chmod 775 /srv/share ここで user はLinuxのユーザー名です。自分の環境に合わせて変えてください。
samba用ユーザーを登録する
Linuxユーザーと、sambaユーザーは別管理です。このuserはLinuxのユーザーではなくsambaのユーザーのことです。
sudo smbpasswd -a userここで設定するパスワードは、Windows等ファイルサーバを使う側からアクセスするときに使うもの です。
ストレージの状態を確認・設定する
ファイルサーバー用に使いたいストレージ(HDDやSDD)を繋げたら、まず状況を確認しましょう。
フォーマット
まずフォーマットです。
lsblk -f /dev/sdx
Linuxでしか扱わないならext4がおすすめです。Windowsにも繋ぎたい場合はNTFSがいいと思います。
自分が購入したHDDはNTFSでのフォーマットがあらかじめされていましたが、Windows側で使う予定はないので、ext4にてフォーマットをし直しました。
sudo mkfs.ext4 /dev/sdx マウントの永続化
ストレージのマウントポイントを固定化しておきましょう。
ストレージのUUIDを調べます。
blkid /dev/sdx以下のような情報が表示されるので、UUIDを控えておきましょう。
/dev/sdc2: UUID="3dxxxacc-xxxx-xxxd-xxxx2-xxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Basic data partition" PARTUUID="xxxxxxxx-xxxxx-xxxxxxxxx-xxxxx"エディタでfstabの末尾に以下の設定を追加します。
sudo nano /etc/fstabUUID=3dxxxacc-xxxx-xxxd-xxxx2-xxxxxxxxx /srv/share ext4 defaults 0 2これで該当のストレージはリブート後などでも自動的に/srv/shareにマウントされるようになります。
smb.conf を編集する
設定ファイルを開きます。
sudo nano /etc/samba/smb.conf一番下に以下のように追記します。
先ほど作ったストレージをマウント予定のディレクトリを指定する感じですね。
[share]
path = /srv/share
browseable = yes
writable = yes
guest ok = no
valid users = user読み込みOK・書き込みOK・ゲスト禁止に設定し、アクセスを許可するユーザを設定しています。
保存したら、sambaを再起動します。
sudo systemctl restart smbdこの時点ですべての用意が整っているはずです。
Windowsからアクセスする
Windowsのエクスプローラで、アドレスバーに以下を入力します。
\\UbuntuのIPアドレス\share例:
\\192.168.10.199\share
アクセスはもちろんwindowsが既知であればホスト名でも問題ありません。
ユーザー名とパスワードを聞かれたら、smbpasswd で設定したものを入力します。資格情報を記憶するにチェックを入れるとアクセスが永続化します。

問題なければ、共有フォルダが開きます。
ネットワークドライブに割り当てると楽
毎回ファイルサーバーにアクセスするためにホスト名やIPを打つのが面倒ならネットワークドライブとしてドライブレターを付けると便利です。
エクスプローラーのPCを右クリックしネットワークドライブの割り当てを実行して、ネットワークドライブを登録するだけです。


追加できると、以下のようドライブレターが付きストレージのように扱えます。

ただし、ドライブレターはそのWindowsだけ有効です。パスとしてすべての環境で有効ではないので、たとえばドライブレターが入ったパスはLinuxシステム側ではアクセスすることはできません。
ファイル参照が多いツールなどでパスを利用する場合だと、このあたりは致命的なエラーになりかねないので注意が必要です。
よくあるハマりどころ
- ファイアウォールで445番ポートが塞がっている
- Linux側のディレクトリ権限不足
- sambaユーザーを作り忘れている
この3つが原因のことがほとんどです。自分は今のところトラブルらしいトラブルには出会ってませんが、sambaはネット上に情報も沢山あるので、大抵のことは解決し得るのかなと思います。
まとめ
別記事でも書いたのですが、ファイルサーバーを建てたことで保存先に悩むことがなくなり、非常に快適になりました。
Linuxの勉強のためもあって建てたのですが、3DCG作成環境の向上はもちろん、普段のファイル保存も管理がしやすくなり非常に満足しています。
Windows共有フォルダだと、PC電源を切ると使えませんが、常時起動のサーバーならではの使い勝手の良さがありますね。
このまま運用を続けてみて、より設定などを詰めていけるように勉強したいと思います。



コメント