自作サーバにファイルサーバを構築します。
ファイルサーバを構築すると以下のメリットがあります。
- ファイルが一か所に集中して管理できデータの整理や管理が容易になる
- 家庭内のデバイス間でファイルの共有が行える
- バックアップデータの保存・復元が可能になり可用性が上がる
- 大容量のデータを保存する場合、クラウドストレージサービスに依存せず、長期的にコストを削減できる
上記のようにメリットが多いのでぜひファイルサーバを構築しましょう。
外部ストレージの設置
既存の自宅サーバの容量が多くない場合、外部ストレージを設置することにより大容量のファイルサーバを構築できます。
外部ストレージを設置する方法を説明します。
機器の設置
一般的に大容量の外部ストレージといえば外付けHDDになると思います。
現在、USB接続の外付けHDDは6TB・1万円前後で購入できます。
最近はSSDも安くなってきたので外付けSSDも選択肢に入ります。
HDDのほうが安いのですが、中身は機械的な動作があるので音が気になる場合があります。
ちなみに私は、QNAP TR-004に8TBのHDDを4台入れてRAID10で運用しています。
QNAP TR-004
https://www.qnap.com/ja-jp/product/tr-004
パーティショニングとフォーマット
外部ストレージを接続しパーティショニングとフォーマットを行います。
parted というコマンドでパーティショニングを行います。
parted インストール
parted インストールします。
sudo apt install -y parted
ディスクデバイスの確認
ディスクデバイスのパーティション情報を表示します。
sudo parted -l
以下出力例です。
こちらを参考にすると /dev/sdb
に8002GBの外部ストレージが接続されています。
Model: ATA KINGSTON RBUSNS8 (scsi)
Disk /dev/sda: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 127GB 126GB ext4
3 127GB 128GB 1024MB linux-swap(v1) swap
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 8002GB 8002GB ext4
パーティション作成
ディスクデバイスのパーティションを作成します。
sudo parted /dev/sdb mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
:yes
sudo parted /dev/sdb mkpart internal 0% 100%
フォーマット
ext4 のファイルシステムでフォーマットします。
sudo mkfs.ext4 /dev/sdb
mke2fs 1.46.2 (28-Feb-2021)
Found a gpt partition table in /dev/sdb
Proceed anyway? (y,N)
:y
ディスクマウント
ディスクデバイスをマウントします。
マウントさせるディレクトリを作成します。
sudo mkdir /mnt/share
ディスクのUUIDを確認します。
sudo blkid
以下出力例です。
こちらを参考にすると、/dev/sdb
のUUIDが確認できます。
/dev/sda1: UUID="A8BE-2FC7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="e17fac60-0727-4969-8b3d-6f9a55eecbb0"
/dev/sda2: UUID="8d97e5da-bd76-4516-9a72-df2ee7693d31" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="2c8f0565-d2c6-47a9-940e-8b63e0b6fe0a"
/dev/sda3: UUID="0e1d2ea6-e4ec-4438-b0f2-ec790f8d2a0a" TYPE="swap" PARTUUID="99a0303b-c89a-4b7a-937d-1acf3ab612de"
/dev/sdb: UUID="8aef1f60-a4a5-4965-994a-e71596d62c75" BLOCK_SIZE="4096" TYPE="ext4"
外部ストレージのUUIDを使いマウントの設定を行います。
sudo vi /etc/fstab
UUID=8aef1f60-a4a5-4965-994a-e71596d62c75 /mnt/share ext4 defaults 0 0
外部ストレージをマウントします。
sudo mount /mnt/share
これで外部ストレージがマウントされます。
以下のコマンドで、容量確認してみましょう。
df -h
以下出力例です。
ファイルシス サイズ 使用 残り 使用% マウント位置
udev 3.8G 0 3.8G 0% /dev
tmpfs 778M 916K 777M 1% /run
/dev/sda2 116G 2.7G 107G 3% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 511M 5.8M 506M 2% /boot/efi
tmpfs 778M 0 778M 0% /run/user/1000
/dev/sdb 7.3T 28K 6.9T 1% /mnt/share
ファイルサーバの構築
Sambaというファイルサーバをインストールします。
サーバに直接インストールするとこも可能ですが、今回はDocker上で動かします。
Samba on Dockerの設定
ホームディレクトリ配下にディレクトリを作成します。
mkdir -p ~/docker/samba
cd ~/docker/samba
Docker Composeの設定ファイルを作成します。
vi compose.yaml
services:
samba:
image: dperson/samba
restart: always
volumes:
- /mnt/share:/mnt
ports:
- "139:139"
- "445:445"
environment:
- TZ=Asia/Tokyo
- USERID=1000
- GROUPID=1000
command: '-s "share;/mnt;no;no;no;[ ユーザ名 ]" -u "username;password"'
[ ユーザ名 ] はご自身のLinuxのユーザ名を設定してください。
-u "username;password"
この設定でファイルサーバのアカウント情報を設定できます。
Docker Samba起動
Docker Compose で起動します。
docker compose up -d
Dockerイメージ
今回は、dperson/samba
のDockerイメージを使用しました。
詳しくは以下を参考にしてください。
ファイルサーバへ接続
ファイルサーバーが構築できたら、クライアント側の設定を行います。
Windows
Windowsの場合、エクスプローラーで下記パスを入力してアクセスします。
\\[ IPアドレス ]\share
ユーザー名とパスワードを入力して接続します。
macOS
macOSの場合、Finderで「移動」メニューから「サーバへ接続」を選択し下記を入力します。
smb://[ IPアドレス ]/share
ユーザー名とパスワードを入力して接続します。
おわりに
Sambaを利用してファイルサーバを構築する方法を解説しました。
これにより、家庭内のデバイス間で簡単にファイル共有ができるようになります。
コメント