Raspberry Piでファイルサーバをつくってみた!

スポンサーリンク

皆さんはスマートフォンなどの画像や動画のデータをどうしていますか。ほとんどの人はクラウドストレージにデータを保存していると思います。でも中には安くて高速のデータのやり取りができるほうがいいという人もいるでしょう。この記事ではその悩みを解決できる方法を紹介します。
ズバリ!ファイルサーバを自分で作ることです。
一見難しそうに見えますがこの記事を読めば誰でもファイルサーバを作ることができます。ぜひ最後までご覧ください。

ファイルサーバとは?

ファイルサーバとは、LAN(家庭内や社内などの内部からしか使えないネットワーク)上にファイルを保存し共有できるように構成されたコンピュータのことです。
スマートフォンのデータをファイルサーバに保存すれば、パソコンでそのデータを閲覧やダウンロードできます。またその逆も可能になります。パソコン同士の共有もできるので、USBスティックメモリでデータを移動する手間もなくなります。

準備

今回ファイルサーバを作るにあたって必要なものを紹介します。
・Raspberry Pi
・Raspberry Pi ケース(必要なら)
・AC電源アダプター
・microSDカード
・コンピュータ(Mac,Windows)
・ネットワーク
・ 外付けストレージ (オプション)
です。
以下のリンクは購入先リンクになります。参考までにどうぞ!

Seagate 外付ハードディスク 1TB TV録画対応 ポータブルHDD 【PS5/PS4】動作確認済 データ復旧3年付き 3年保証 2.5インチ STEA1000307
システム要件 Windows 10、Windows 8、Windows 7 オペレーティング・システム テレビ互換に関して ・互換性の詳細に関しては下記に記したSeagateコールセンターにお問い合わせください。 ・互換性の内容についてはSeagateの独自調査によるものであり、各TVメーカーへのお問い合わせはご容赦く...


環境については「Raspberry Pi サーバ化の初期セットアップガイド」を参考に環境を構築しておいてください。

ファイルサーバ構築

実際にファイルサーバを構築していきます。

必要なソフトのインストール

まずシステムをアップデートします。

$ sudo apt update
$ sudo apt upgrade

アップデートが終わったら必要なソフトをインストールします。今回は、「samba」というソフトをインストールします。

$ sudo apt install samba

外付けストレージのマウント(オプション)

外付けストレージに保存したい人はこの作業をしてください。

外付けストレージをRaspberry PiのUSBポートに接続します。
外付けストレージを持っていなかったので8GBのUSBスティックメモリで代用します。
接続した外付けストレージが認識しているか確認します。以下のコマンドを入力して確認してください。

$ sudo fdisk -l | grep /dev/sda
Disk /dev/sda: 7.46 GiB, 8015314944 bytes, 15654912 sectors
/dev/sda1  *     2048 15654911 15652864  7.5G  c W95 FAT32 (LBA)

ストレージのフォーマット

認識の確認ができたのでストレージをフォーマットします。

注意:接続している外付けストレージのデータがすべて消えます。なので必要なデータは必ずバックアップを取ってから実行してください。

$ sudo fdisk /dev/sda
Command (m for help): d    ←dでパーティションを削除
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p   ←pで現状の確認
Disk /dev/sda: 7.46 GiB, 8015314944 bytes, 15654912 sectors
Disk model: USB Flash Disk  
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: dos
Disk identifier: 0x1eac031c

Command (m for help): n    ←nでパーティションを作成
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):          ←Enter

Using default response p.
Partition number (1-4, default 1):    ←Enter
First sector (2048-15654911, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15654911, default 15654911):                   ←Enter

Created a new partition 1 of type 'Linux' and of size 7.5 GiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: y  ←yを入力してEnter

The signature will be removed by a write command.

Command (m for help): p
Disk /dev/sda: 7.46 GiB, 8015314944 bytes, 15654912 sectors
Disk model: USB Flash Disk  
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: dos
Disk identifier: 0x1eac031c

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1        2048 15654911 15652864  7.5G 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

Command (m for help): w      ←wで変更を書き込み
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

ストレージをext4でフォーマットします。

$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 1956608 4k blocks and 489600 inodes
Filesystem UUID: a67c319e-e168-4eae-b530-cc7abc99bdac
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks):        ←Enter
done
Writing superblocks and filesystem accounting information: done

ストレージをマウントする

フォーマットしたストレージをマウントします。マウントポイントを作成します。自分の好きな場所に作ればいいのですが今回は[/mnt/disk/]にしようと思います。

$ sudo mkdir /mnt/disk/

UUIDを調べます。以下のコマンドを実行してください。次の設定でUUIDが必要になるのでメモを取っておいてください。

$ sudo blkid /dev/sda1
/dev/sda1: UUID="a67c319e-e168-4eae-b530-cc7abc99bdac" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1eac031c-01"

起動時に自動でマウントされるように設定ファイルを変更します。

$ sudo nano /etc/fstab

ファイルの一番下以下の文字を入力します。
※改行されている場合がありますが一行ですべて入力してください

             自分のUUIDを入力        マウント場所
          ↓              ↓
UUID=a67c319e-e168-4eae-b530-cc7abc99bdac   /mnt/disk ext4    defaults   0   0

そして再起動します。

$ sudo reboot

マウントされているか確認します。

$ sudo cat /etc/mtab
/dev/root / ext4 rw,noatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=3879284k,nr_inodes=74939,mode=755 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,size=1617660k,nr_inodes=819200,mode=755 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0
none /sys/fs/bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
sunrpc /run/rpc_pipefs rpc_pipefs rw,relatime 0 0
tracefs /sys/kernel/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,nosuid,nodev,noexec,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,nosuid,nodev,noexec,relatime 0 0
configfs /sys/kernel/config configfs rw,nosuid,nodev,noexec,relatime 0 0
/dev/mmcblk0p1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
/dev/sda1 /mnt/disk ext4 rw,relatime 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=808828k,nr_inodes=202207,mode=700,uid=1000,gid=1000 0 0

たくさん出てきますが一列目のデバイス名(/dev/sda1)と二列目(マウント先)が自分の指定した場所と同じであればOKです。

共有フォルダーを作成

共有するフォルダーを作成します。僕は外部ストレージに作成します。本体に作成したい人は、/home/[ユーザー名]/[ファイル名]みたいな感じで作成してください。

$ sudo mkdir [作成したいディレクトリ]

設定ファイル編集

設定ファイルを編集します。いろいろごちゃごちゃしていますが一番最後に以下の内容を記載してください。

$ sudo nano /etc/samba/smb.conf

[(共有名)]
path = (共有するフォルダーのパス)
read only = (読み込み書き込みの有無  Yes or No )
guest ok = (ゲスト権限の有無   Yes or No)
force user = (ファイル操作のユーザー名)


例:
[share]
path = /mnt/disk/share
read only = No
guest ok = Yes
force user = pi

これですべての設定が終わりました。設定を反映させるために再起動をしてください。

動作確認

最後に動作を確認します。いろいろなOSでの確認方法を紹介します。

WindowsPC

キーボードのWindowsキーとRキーを同時押しすると小さなウィンドウが出てきます。

左みたいなウィンドウが出たら
「\\(raspberrypiのIPアドレス)」
を入力してアクセスします。

アクセスするためにはユーザー名とパスワードを入力しないといけないので設定ファイルのファイル操作のユーザー名で入力した情報を入力してください。

アクセスできたら左の画像みたいに共有フォルダーが見れるはずです。

ios iPadOS

iPhoneやiPadからアクセスする方法を解説します。

ファイルを開きます。

右上の3つの点がついているところを選択すると項目がいくつか出てくるので「サーバへの接続」を選択します。

サーバの接続先を入力します。「smb://」の後に今回構築したファイルサーバのIPアドレスを入力します。

ユーザー情報を入力します。設定ファイルで「ファイル操作のユーザー名」に指定したユーザー名とパスワードを入力してください。

アクセスできたら共有したフォルダーが見れます。ここにファイルをコピーして共有します。

まとめ

Raspberry Piでファイルサーバの構築のやり方を解説しました。ファイルサーバがあればファイルの共有が便利になったり違うOS間での共有がスムーズになります。ぜひこの機会に構築してみてください。

コメント

タイトルとURLをコピーしました