メインコンテンツへスキップ
見出し画像

NASの夢、朝の断片

朝10時、白い壁に向かって絶叫した

一体、何が起こったのか説明をしていく必要があるだろう

はじまりは何気ない一言

2日前、自宅で動画データでPCの容量が一杯になったので、データを移したいという相談を受けた

僕は多少なりともITの心得があると思っていて、インターネットで外付HDDやNASを調べ始めた。2TBの容量があれば十分だろうと考えたが、NASは15,000円ほどするじゃないか

今回の目的を満たすための選定をする

  • 外付けHDDは毎回、USBをPCに接続するのが手間だ

  • NASであれば、ネットワーク経由でPCからファイルサーバにアクセスできるので、毎回、ケーブルで接続する手間が省ける。外付HDDよりは少し値が張るがこちらがいい

しかし、一方で市販品を使うことに問題を感じた。これってHDDとOS(パソコン)を混ぜたものではないのか。もし、HDDの部分が壊れたらOSやCPUの部分も交換しないといけないことになる。丸ごと交換するのはもったいない

そこで、格安のRaspberry PIを使えばいくらか安くなるのではないかと考えた。つまり、NASのシステムの部分を自前で用意しようというわけだ

そうすれば、HDDとOS(PC)の部分を分離できるので、故障したときに丸ごと交換しなくてよくなり、メンテナンスをしやすくなる

NASのイメージはこんな感じだ

画像
接続イメージ

試算をした

画像
試算表

上記の見積りでは1,000円ほど安くなる計算だ。実際には、PCとHDDをつなぐケーブル等が必要になるので、もう少し価格は高くなるのだが・・・。流石にコスト面とDIYの時間を掛けるメリットを感じにくくなってきた

DIYをするのは、多少なりとも金額的なコストを減らせる、自由にカスタムできることにあるだろう

もう少し、金額を安くする方法はないのか・・・
そうだ、家にある資産を活かせばコストが減らせられるぞ

自宅には3年前に買ったRaspberry PI ZERO Wがある。見積りのRaspberry PI ZERO 2 Wと比較しても性能差はそこまでないようだ。Raspberry PIを購入したときにUSBケーブルや変換アダプタもある

もし、成功すれば12,000円のコストで済むのでNASを購入するより3,000円ほど安くなって、Raspberry PIという資産を活用して目的を満たせる

今はClaudeもあるので構築をはじめられそうだ

楽しい構築の時間・・・

まずは、HDDを購入してセットアップを始める前に自宅にあるUSBメモリを使って試験的に動作するか確認をしていこう。予行演習として機能するだろう

Raspberry Piのセットアップは完了しているので、Remote DesktopでSamabaの構築をするだけだ。Raspberry Piの画面を見ながらセットアップをする

ターミナルの画面を開く
まずはSambaのインストールをはじめていこう

sudo apt install samba samba-common-bin

インストールを進めていくと、次の画面が表示されるので「いいえ」を選択した。Claudeともやりとりをしたが、特別、NetBIOSは設定しなくてよいと判断した

画像

次に、接続したUSBメモリを確認する

# デバイスの確認
sudo fdisk -l

# 自分のUSBメモリを探す
Disk /dev/sda: 14.5 GiB, 15527313408 bytes, 30326784 sectors
Disk model: STORE N GO      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     2048 30326767 30324720 14.5G  7 HPFS/NTFS/exFAT

いくつかパーティションが表示されるが、接続したのは16GBのUSBメモリなので、Deviceにある/dev/sda1であろう

画像

次にRaspberry PiにUSBメモリをマウントする。ここでは本番で使うことを想定して、自分が分かるマウント名とした。これならば、HDDと交換したときにパーティション名が分かれば入れ替えることができる

# NAS用のマウントポイント作成
sudo mkdir /mnt/nas

# 本番時(HDD)
sudo mount /dev/sda1 /mnt/nas

また、OS起動時に自動的にマウントするように設定しておく

sudo nano /etc/fstab

# 以下の行を追加
/dev/sda1    /mnt/nas    auto    defaults    0    0

次にSambaの設定をする

テキストエディタはnanoを使う。Linuxのエディタの中でも比較的、Windowsユーザーにも優しい仕様となっている。コマンドラインの中にテキストの内容が表示されるが、ctrl+oで保存、ctrl+xで終了となっているので、この2つのショートカットキーを覚えて、文字の入力を行えばファイルの編集ができる

# Sambaの設定
sudo nano /etc/samba/smb.conf

# 設定ファイルの末尾に以下の設定を追加
[nas]
path = /mnt/nas
valid users = pi
read only = no
browsable = yes

# また、設定ファイルの下記の部分を";"でコメントアウト
;[homes]
;    browseable = No
;    comment = Home Directories
;    create mask = 0700
;    directory mask = 0700
;    valid users = %S

また、Raspberry PiのpiユーザーとしてSambaにアクセスするため、ログインのパスワードとは別にSambaのpiユーザーのパスワードを設定する

# Sambaユーザーのパスワードを設定
sudo smbpasswd -a pi

設定を読み込むため、Sambaを再起動する

# Sambaの再起動
sudo systemctl restart smbd

さて、WindowsからSambaにアクセスできるかテストをしてみる
エクスプローラーのアドレスバーに\\raspberrypi\nasと打ち込む

# Windowsでは¥¥マークと表示されます
\\raspberrypi\nas

そうすると、Raspberry PiのSambaへの認証を求められるので、事前に設定したユーザー名piとsmbpasswdコマンドで設定したパスワードを入力する

画像

ここで問題が発生した。画面を見るとSambaに対してファイルを追加できているように見えるが、実は"Sambaを再起動する"前にアクセスしたときにはファイルが追加できたが、"Sambaを再起動した"後にはファイルの編集は疎か、ファイルの追加も出来なくなっていた。なぜ、再起動する前にはファイルを追加できるのか分からない。いずれにしてもこのままでは運用することが出来ない

画像

原因が分からないままRaspberry Piの再起動を行ってみたところ、emergency modeの文字が・・・。何だこれ・・・。ClaudeやChatGPTなどに質問して対処法を聞いても文字の入力も受け付けないので対処できない。そもそも、ENTERキーしか押せず問題がループするだけなので一切解決することが出来ないじゃないか。AIの言うことに不信感を抱いた瞬間だった

Timed out waiting for device 〜
Dependency failed for /mnt/nas
Dependency failed for Local File System

You are in emergency mode.

Cannot open access to console, the root account is locked.

Press Enter to continue

どうやら、システム起動時にデバイスを読み込む"fstab"の設定を失敗したようだ。手動ではUSBメモリをマウント出来ていたので、にわかに信じられない。少し設定を失敗しただけでOSが起動しないなんて・・・。そんな融通が効かないことなんてあるのか?と思ったが、事実として起動しないことを受け入れる他なかった・・・。このとき一発勝負であることを自覚し恐怖を覚えた

ここで、いくつかの問題を自覚した

  • fstabの設定は適切か?(※1)

  • なぜ、Sambaに書き込めないか?

1点目の問題は分からないので2点目から考えていく。ClaudeやChatGPT、そしてインターネットの記事も見ていってヒントを探していった

そのためには、もう一度、Raspberry PiのインストールとSambaのセットアップをした。バックアップを取得していなかったので、Raspberry Piに入れていたプログラムが消えたのはストレスだった。そこまで重要なプログラムはなかったのでよかったのだが、それでも過去に時間を掛けたことが消える瞬間は喪失感があったし、更に2時間を掛けて復旧することは大きなストレスとなった

さて、samba.confの設定を見直す限り、記述は問題なさそうだ

[nas]
path = /mnt/nas
valid users = pi
read only = no
browsable = yes

ClaudeやChatGPTに聞くと後出しで設定のパラメータを言ってくる。しかし、意味を聞くと「書き込み」が出来る前提のパラメータで問題の解決にはならないと判断した。実際に何も考えずにパラメータを追加してsamabaを再起動しても問題は解決しない。結局、なぜ、ファイルを書き込めないのかという問題にAIは答えてくれなかった

create mask
directory mask

質問を繰り返していくなかで、create mask=0700などの数字を見ていたら、ひとつ思い立った

フォルダやファイルのアクセス権限はどうなっているのか?

ls -l
drwxr-xr-x 

すると、所有者は「書き込み」「読み込み」「実行」の権限が全て与えられており、グループとその他は「読み込み」と「実行」の権限が与えられていた。sudoでmnt/nasを作成しているので所有者はrootだ

つまり、piユーザーには書き込みの権限が与えられていないのだ

chmod 777

piユーザに書き込み権限を持たせるため上記のchmodコマンドが頭をよぎった。ClaudeやChatGPTは勧めないという発言をしてきたが本質的な問題はどこにあるか解決を提示しないので苛立ちが募る。たぶん、今回の問題ではなく一般論のセキュリティについて答えているのだろう。しかし、今回の問題について答えず他人事のように話していると思えたからだ

  • rootが所有者のときはpiユーザーはその他に当たる

  • しかし、セキュリティ上はpiユーザーに許可を与えない。それではファイルの書き込みが出来ず目的を達成できない

この成立できない問題(矛盾)に頭を抱えた

ClaudeやChatGPTにこの矛盾をやりとりし続けたところ、/mnt/nasの所有者を変更したらいいのでは?という回答を得た。しかしながら、rootでmountするフォルダの所有者を変えることに違和感を感じる。mountはrootによって行われるという発言を見たからだ(ただし、真意は不明)。一方で一般ユーザーでmountできることを明確に言及しているインターネットの記事を見つけられなかった。従って、ClaudeもChatGPTも真意不明なままの記事を学習しているので、今回の問題を解決する根拠ある正しい回答ではないと判断した

そこで、所有者を変えることはおかしいのでは?と問いただしグループを変えるだけならばという発言をした。自分の中では腑に落ちたので試す。piユーザを任意のグループに所属させて、そのグループをmountするフォルダのグループとして所属させればいいという考え方だ

sudo groupadd nas_group
sudo usermod -aG nas_group pi
# 失敗
sudo chown -R root:nas_group /mnt/nas
sudo chmod -R 775 /mnt/nas

# 失敗
sudo mkdir /nas/shared
sudo chown -R root:nas_group /mnt/nas/shared
sudo chmod -R 775 /mnt/nas

しかし、結果的には権限を変更することが出来なかった。ファイルフォーマットがexfatであるためだ。ext4がLinuxで管理するファイルフォーマットである。Sambaであれば、ext4を介してもWindowsからアクセスできるという記事も見たが、調べたフォーマット方法が理解できなかったので試せなかった。もし、ファイルフォーマットを出来れば、この問題が解決できて、無事にSambaを構築までできるかもしれない(※2)

ただ、exfatは4GB以上のファイル転送と、WindowsとMacをサポートしていることから選んでいる。従って、ext4でフォーマットが出来ない状況ではexfatで進めたい。振り返ればfstabの設定に関してファイルフォーマットまで意識した設定にはしていなかった。解決の道筋が見えた瞬間だった

# exfatを読み込むライブラリ
sudo apt install exfat-fuse exfat-utils
 
# ClaudeやChatGPTが示したfstabの書き方の例
UUID=ABC123-DEF456  /mnt/exfat  exfat  defaults,nofail,uid=1000,gid=1000  0  0

UUID、uidとgidを設定することで、exfatでもアクセス権を設定できるという回答(話の筋)に納得がいったので、UUIDの値を調べてOSを再起動した

非常な現実

この時点で2日目の朝方を迎えていた。やっと苦労が報われると思った瞬間だった

しかし、無情にも2度目の文字が

You are in emergency mode.

Cannot open access to console, the root account is locked.

頭が真っ白になった
と同時に、自分の人格が否定された様な気分に陥った

君にコンピュータは向いていないよ
この先、どんなに頑張っても、人生を逆転できることはないよ
そんな宣告を受けたようだった

頭では何か道はないかと否定しようと思ったが、 
徹夜が無駄になった事実は変わらない

このまま、自分は結果を出せない未来を受け入れることが自分にとって正しいと感じた瞬間、何も描かれていない白い壁に向かって咆哮した

※ 今思えば、このコマンドでOSが起動できるのか自分なりの証明ができておらず、そのまま進めたのが失敗だったのだが、うまく行くことを信じることにすがっている状態だったのだろう

同日、Claudeも12月末で解約した

何も考えられない時間が続いた。結局、その日は寝込んだ。途中で起きたのだが激しい頭痛が起こり止まらなかった。神経が疲れていたのだろう

結局、4日目になって起き上がれるようになった
また、結果的には市販品を買っても製品として期待した年数を持てば、丸ごと交換するのも変わらないと考えるようになった

でも、市販品を買ったときにどんな感じになるのかは分からない

このまま諦めることは否定はしないが、それと同時に、睡眠をとって1日、パソコンから離れたおかげかとあるアイディアが浮かんだ。最後に試せることは試してから購入でも遅くはないと

これから示すのはネットには書かれていない自分だけのストーリーだ

変らないまま(現実のまま)で解決を

この記事が参加している募集

 
 

e

 
 
ライフハッカー

あなたへのおすすめ