皆さんはスマートフォンなどの画像や動画のデータをどうしていますか。ほとんどの人はクラウドストレージにデータを保存していると思います。でも中には安くて高速のデータのやり取りができるほうがいいという人もいるでしょう。この記事ではその悩みを解決できる方法を紹介します。
ズバリ!ファイルサーバを自分で作ることです。
一見難しそうに見えますがこの記事を読めば誰でもファイルサーバを作ることができます。ぜひ最後までご覧ください。
ファイルサーバとは?
ファイルサーバとは、LAN(家庭内や社内などの内部からしか使えないネットワーク)上にファイルを保存し共有できるように構成されたコンピュータのことです。
スマートフォンのデータをファイルサーバに保存すれば、パソコンでそのデータを閲覧やダウンロードできます。またその逆も可能になります。パソコン同士の共有もできるので、USBスティックメモリでデータを移動する手間もなくなります。
準備
今回ファイルサーバを作るにあたって必要なものを紹介します。
・Raspberry Pi
・Raspberry Pi ケース(必要なら)
・AC電源アダプター
・microSDカード
・コンピュータ(Mac,Windows)
・ネットワーク
・ 外付けストレージ (オプション)
です。
以下のリンクは購入先リンクになります。参考までにどうぞ!
環境については「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キーを同時押しすると小さなウィンドウが出てきます。
iOS・iPadOS
iPhoneやiPadからアクセスする方法を解説します。
まとめ
Raspberry Piでファイルサーバの構築のやり方を解説しました。ファイルサーバがあればファイルの共有が便利になったり違うOS間での共有がスムーズになります。ぜひこの機会に構築してみてください。
コメント