Linux mint 19.3でのネットワークストレージの設定諸々
こんにちは!
今回の記事では、前回の記事で書いたネットワークストレージについて、具体的な設定方法について備忘録的に書いていきたいと思います。まあ、ご参考適度に見ていただければと思います。
動作環境
Linux mint 19.3
外付けHDDのマウント設定
まずは、外付けHDDをLinuxにマウントするための設定をする必要があります。基本的にこの手の外部ストレージは接続すれば自動的にマウントはされるようですが、ファイル共有にあたって、特定のHDDを特定のフォルダにマウントするために設定が必要なわけです。
まずはfdiskコマンドを使って、今回NAS化したいHDDの名前を確認します。以前VirtualboxでWindowsを動かしたときに、インストールUSBを探したのと同じ手順ですね。
$ fdisk -l
接続されているディスクがズラッと表示されるので、お目当てのHDDの情報をそこから探します。今回の場合はこんな感じ。
ディスク /dev/sda: 465.8 GiB, 500107861504 バイト, 976773167 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xa2940d6c
デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sda1 64 976768064 976768001 465.8G c W95 FAT32 (LBA)
この前の記事にも書いたとおり、ディスク名は「/dev/sd_」になっているはずです。今回の場合は「/dev/sda」がディスク名です。このディスク名を使ってマウント設定しても良いのですが、この名前は接続されている機器の構成などによって変わってしまう値なので、この値を使うのはあまりよろしくないみたいです。
ということで、このディスク名の代わりにUUIDと呼ばれる固有の数字を使います。その数字の調べ方は以下の通り。
$ sudo ls -l /dev/disk/by-uuid
実行すると、各ディスクのUUIDが表示されるので、先程確認したディスク名の値をメモしておきます。出力結果は以下のような感じ。
lrwxrwxrwx 1 root root 10 5月 23 14:46 b7fc3b5b-ce14-4325-87de-f25a66d77bbb -> ../../sda1
今回の場合は「b7fc....bbb」というのがUUIDです。ここまででUUIDが確認できたら、一旦ディスクをアンマウント→マウントとしてみて動作を確認します。マウント先のフォルダはどこでも良いですが、今回は「/mnt/nas」というディレクトリを作って、そこにマウントすることにします。
$ sudo mkdir /mnt/nas # マウント先ディレクトリの作成
$ sudo umount /dev/sda1 # ディスクのアンマウント(ディスク名のあとに1をつける)
$ sudo mount /dev/sda /mnt/nas # 「/dev/sda」を「/mnt/nas」にマウント
$ ls /mnt/nas #/mnt/nasの中身を確認
最後のlsコマンドで、外付けHDDの中身が見えているようなら正常にマウントできています(ファイルマネージャで確認してももちろんOK)。HDDに何も入っていない状態だと上手くいっているかどうかがわかりにくいので、もし何も入っていない状態なら、予め適当なファイルを入れておくと良いと思います。
ここまでで外付けHDDのマウント自体はできているのですが、これだとPCの電源を落とすと初期化されてしまうので、次はこの設定を永続化します。起動時のファイルマウントの設定は「/etc/fstab」にかかれているらしいので、ここを編集して、起動時に自動的に「/mnt/nas」にマウントするように設定をしておきます。
$ sudo cp /etc/fstab /etc/fstab.bk # 念の為fstabのバックアップを取る
$ sudo vim /etc/fstab
テキストエディタはvimでなくてもviでもnanoでもお好きなものを使って頂いてOKです。fstabの中身はこんな感じ。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=d2d3b0c8-18a5-4b95-a73a-ebb08d21702d / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0
最終行に下記を追記すればOK。
UUID=b7fc3b5b-ce14-4325-87de-f25a66d77bbb /mnt/nas ext4 auto 0 0
「b7fc...bbb」の部分は先程調べたUUIDを入力して下さい。ファイルフォーマットがext4でない場合は、該当するフォーマットに変更する必要があります。ちなみにですが、FAT32を共有したい場合は、「ext4」を「vfat」に変更したうえで、「auto」の部分を「defaults, umask=000」にする必要があるはずです(その他のファイル形式は使ったことがないのでわかりません)。
この設定ができたら、もう一度アンマウント→マウントをして正常にマウントできるかどうかを確認します。
$ sudo umount /dev/sda1
$ sudo mount -a # fstabからのマウントのテスト
$ ls /mnt/nas # /mnt/nasの中身を確認
二行目のmountの-aは「fstabに記載されているディスクをすべてマウントする」と言うオプションで、fstabの編集が適切にできていれば先程と同様に「/mnt/nas」に外付けHDDが入っていることを確認できるはずです。
ここまでで、外付けHDDをLinux上に常にマウントする設定が完了しました。念の為、PCを再起動して、起動後に自動で/mnt/nasにマウントされているかどうかを確認してみてもいいと思います。ここまでやってようやく共有設定の準備が完了したことになります。
Sambaによるファイル共有設定
Linuxにおいて、共有ファイルの設定をするには「Samba」というソフトウェアを使うわけですが、そのまえに当該PCのプライベートIPアドレスを固定します(デフォルトでは自動設定になっているはずです)。ブラウザでWIMAXのipアドレスを打ち込んで(192.168.xxx.1の形式になっているはずです)ログインし、MACアドレスと固定ipアドレスを紐付けて設定すればOK(WIMAXに限らず、多くのルーターは大体同じような設定法だと思います)。
今回はノートPCのipアドレスを「192.168.179.6」に固定したので、他のデバイスからこのPCにアクセスしたいときは、このipアドレスを使えばいいというわけです。
更に、共有するフォルダを外部から読み書きできるようにファイル権限を以下のように設定。
$ sudo chmod 777 /mnt/nas
この設定までできたら、今回利用するソフトウェア「samba」をインストールします。
$ sudo apt-get install samba
そしてSambaの設定ファイルである「/etc/samba/smb.conf」を編集して、「/mnt/nas」フォルダを共有ファイルとして設定します。
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.confbk # 念の為smb.confをバックアップ
$ sudo vim /etc/samba/smb.conf # テキストエディタは何でも良いです
これでsambaの設定ファイルを編集できるので、このファイルを少し編集します。
まずは「# Networking」の上辺りに下記の行を追加(もしかしたら場所はどこでもいいかも知れません…)。Hosts allowの部分はご自身のプライベートipの値をご利用下さい。
security = user
unix charset = UTF-8
dos charset = CP932
hosts allow = 192.168.179.0/24
更に、ファイルの末尾に下記の文言を追加
[Share]
comment = Share Folder
browseable = yes
path = /mnt/nas
public = yes
writable = yes
guest ok = yes
force create mode = 0777
force directory mode = 0777
これでSambaの設定は完了です。その後(別にその前でも構いませんが)、sambaにユーザーを追加。
$ pdbedit -a {USER}
{USER}は任意のユーザー名をお使い下さい。このあとパスワードを聞かれるので、それも自分の好きなように決めてOKです(Linux自体のユーザー・パスと同一でも別に構わないと思います)。
これですべての設定が完了したので、下記のコマンドでSambaを再起動して設定を有効化。
$ sudo systemctl restart smbd # sambaの再起動
$ sudo systemctl restart nmbd
$ sudo systemctl enable smbd # 起動時のsambaの自動起動
$ sudo systemctl enable nmbd
これでSambaの設定は完了のはずです。これで他のデバイスからファイルにアクセスできる……かと思いきや、もう一つ必要な設定があります。それがFirewallの設定変更。はじめにやったときはそれに全く気づかなくて、やたらと四苦八苦してしまいましたw
FIrefallの設定変更
特に設定しない限り、Firewallが外部からの通信を遮断するので、設定を変更しないとファイルの共有ができません。Firewallの設定にはfirewalldというソフトをインストールして行います。
$ sudo apt install firewalld # Firewalldのインストール
$ firewall-cmd --permanent --add-service=samba --zone=public # sambaのポート開放設定
$ firewall-cmd --reload # 設定の有効化
これでようやくPC側の設定が完了しました。仮想マシンのときと同じように、文章だけ見るとスムーズに設定できているように見えるかも知れませんが、実際はハマりポイントもやたらと多くてかなり時間がかかっていますw
まあ、そうやって試行錯誤したおかげでこうしてきちんとまとめられていると考えればそう悪いことでもないでしょう。仕事でネットワークやサーバー管理をしている人から見れば全然大したことをしてないと思いますが、今回の設定でわずかながらネットワークや通信の仕組みが少し理解できてきた気がします。
クライアント側の設定
基本的に設定が大変なのはサーバー側だけなので、クライアント側でやることは大して多くありません。せいぜい必要なアプリをインストールするくらいです。
共有ファイルへのアクセスは「FE File Explorer」というアプリを使えばOKです。iOSおよびandroidようにリリースされているので、どちらの場合もこれをダウンロードすれば問題ありません。
ちなみに、上の図のオレンジのアイコンが無料版で、青色の背景の有料版も有ります(確か500〜1000円くらいだったかと)。おそらく色々と違いはあるのでしょうが、共有フォルダの利用という観点から見ると、接続サーバーの設定の保存数の制限が大きな違いとなります。無料版だと設定できるサーバーが一つしかできず、その状態で他のサーバーに接続することができないので、一つのサーバーを固定するか、サーバーを固定せずに毎回設定するかのどちらかの運用になります。
設定自体はかなりシンプルで、5分もかからないくらいですw
これがアプリを開いたときの画面で、右上の「+」を押して接続先の追加設定に移ります。
この中からLinuxを選択。
そうすると、自動的に同じネットワーク内の共有フォルダを拾ってくれるので、あとはこれを選択するだけです。写真のアップロードなどもこの「FE File Explorer」を通してできるので、ファイルのやりとりは非常にスムーズです。
ちなみに、iOSの場合はApple純正の「ファイル」アプリからもサーバーに接続できるので、そちらを利用してもいいと思います。「ファイル」は接続数に(多分)制限がないのがメリットですが、(おそらく)写真のライブラリに直接アクセスできないので割と一長一短な感じはします(これは完全に余談ですが、こういう感じで自由にファイルを閲覧・移動させずらいというあたりが個人的にApple製品を好きになれない理由の一つです)。
とまあ、こんな感じで無事にLinuxでネットワークストレージの構築し、それを利用できる環境が整いました。こういうことをやっていると、まさに「Linuxを使っているな」という気持ちになりますね。やはり、自分の課題を解決するための試行錯誤の中で得られるものは多いなと感じます。
同じようなことをやっているネット記事はいろいろとあるとは思いますが、そのうちの一つとして、読んでいる方にとってなにかしら参考になることがあったなら幸いです。もちろん、こういったことに全然興味ない人が、これを読んで少しでも興味を持つきっかけになったならそれはそれで嬉しいですね。
それでは、また。
この記事が気に入ったらサポートをしてみませんか?