ラズベリーパイ4Bでファイルサーバー作ってみた。

## 背景
メインPCで作業していたものを、ラズベリーパイ、ノートPC、スマホで閲覧したいけどファイル転送が面倒に感じてきました。
↓
常時稼働のファイルサーバーを作ります。

## 完成イメージ

![IMG20241026084343.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/dbab3166-7193-8dc5-159e-bd386d3e76bd.jpeg)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/3d2bbefe-9187-7c96-af01-19f7c11053bb.png)


各機器からAPへは無線接続でインターネットにつなぐ。
ラズパイファイルサーバーとメインPCはイーサネットケーブルでつなぐ。メインPCからファイルサーバーへデータを転送して、ファイルサーバーに入ったデータをノートPCやスマホで閲覧する構造です。

ファイルサーバーメインPC間をイーサネットで繋いでいるのは転送速度を最大1Gbpsにするためです。



## 手順
用意するものを買う
ラズパイセットアップ
ラズパイ＆メインPCのIPアドレス設定
ラズパイファイルサーバーにSSDをマウントする
ラズパイファイルサーバーをRAID1構成にする。
ファイル転送速度のテスト

完了

## 用意するもの
ラズベリーパイ4B
ラズベリーパイ電源
ラズベリーパイ モニタ接続用HDMI
ラズベリーパイ OSインストール用マイクロSD
LANケーブル cat6
SSD1TB 2.5インチ 2個
SSDケース 2.5インチ 2個入るやつ
SATA3からUSBに変換するやつ。
※ファイル転送速度は最大1Gbpsになる予定です。
## ラズパイセットアップ
セットアップ
https://qiita.com/arisaEN/items/476399577755da1fcd86
IP固定
https://qiita.com/arisaEN/items/78caa649b89a4eb9f92b


## メインPCとラズパイ4Bをイーサネットで繋ぐ
LANケーブルで物理的につなぐ

### ラズパイ4Bのイーサネットインターフェース(eh0)に対して固定IPアドレスを割り当てる

https://qiita.com/arisaEN/items/78caa649b89a4eb9f92b
これ参考にしてet0 イーサネットの方に固定IPアドレスを設定する。
IPアドレス 192.168.0.101
サブネット 255.255.255.0
GW 192.168.0.1
DNS 8.8.8.8

### メインPCのほうにも割当
**「設定」**を開きます。

「ネットワークとインターネット」→ **「アダプターのオプションを変更する」**をクリックします。

イーサネットアダプターを右クリックし、**「プロパティ」**を選択します。

**「インターネット プロトコル バージョン4 (TCP/IPv4)」をクリックして、「プロパティ」**を選択します。

**「次のIPアドレスを使う」**を選択し、以下を入力します：

IPアドレス: 192.168.0.151
サブネットマスク: 255.255.255.0
デフォルトゲートウェイ: 設定なし ※インターネットと接続しないときはデフォルトゲートウェイ設定なし
優先DNSサーバー: 8.8.8.8


pingコマンド飛ばして応答ありなら接続できてる。
```
ping 192.168.1.101
```
```
ping 192.168.1.151
```
成功した写真
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/28fe6aab-9b80-63df-b75c-07b49b417a75.png)



## RAID 1の設定
RAID1では2台のディスクが同じデータを保持します。ディスクが壊れた場合でもデータの保護が可能です。

2TBのディスクを接続

RAIDを構成するためのmdadm、ファイル共有のためのSambaをインストールします。
```
sudo apt update
sudo apt install mdadm samba
```


### ★写真
```
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
```
Continue creating array? に対して、yesと答えればOK↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/4c74c0ed-7cbd-3fd9-9a3d-d2eff9118a5b.png)

RAIDの状態を確認 
```
cat /proc/mdstat
```
```
arisa4@raspberrypi:~ $ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb[1] sda[0]
      976630464 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  1.5% (15134400/976630464) finish=81.1min speed=197508K/sec
      bitmap: 8/8 pages [32KB], 65536KB chunk

unused devices: <none>
```
現在、RAID 1のアレイが正常に稼働しており、/dev/md0で再同期（resync）が進行中です。同期は1.5%完了しており、約81.1分で終了する見込みです。再同期中でもRAIDは利用可能ですが、同期が完全に終わるまでパフォーマンスが低下する可能性があります。

```
arisa4@raspberrypi:~ $ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb[1] sda[0]
      976630464 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>
arisa4@raspberrypi:~ $ 

```
このメッセージでRAID完了

## ファイルシステムの作成
```
sudo mkfs.ext4 /dev/md0
```
## マウントポイントの設定
```
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1
```

## 自動マウントのために/etc/fstabファイルを編集します。
```
sudo nano /etc/fstab
```
以下の行を追加します。
```
/dev/md0 /mnt/raid1 ext4 defaults,nofail 0 2
```

## 読取 追加 削除 編集 可能なアカウントを作成
sambaを設定して他デバイスからraidを見れるようにする。

参考

https://qiita.com/SHIJIMI_EN/items/9904ae0f17b5d329f192
```
sudo smbpasswd -a arisa4
pw:admin 
```
## 読取のみ可能なアカウントの作成
```
sudo adduser readuser
```
```
pw: readonly
フルネーム：readuser
```
sambaユーザーに追加
```
sudo smbpasswd -a readuser
pw:readonly
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/d9b1eca4-62ef-becf-1539-4277ad60888e.png)

色々聞かれるけど全部EnterでスキップでOK


## sambaファイルの編集
```
sudo nano /etc/samba/smb.conf
```
```
[RAID1]
   path = /mnt/raid1
   browseable = yes
   guest ok = no
   # アクセスを許可するユーザーを指定
   valid users = arisa4, readuser
   # readuserは読み取り専用
   write list = arisa4
   read list = readuser
   # arisa4はフルアクセス
   force user = arisa4
   create mask = 0777
   directory mask = 0777
   read only = no
```
valid users = arisa4, readuser: この共有フォルダーにアクセスできるユーザーを arisa4 と readuser に制限します。
write list = arisa4: arisa4 には書き込み権限（読み取り・書き込み・削除・追加）を与えます。
read list = readuser: readuser には読み取り専用のアクセスを許可します。
force user = arisa4: すべてのファイルの作成者がarisa4として扱われるため、arisa4にフルアクセスを確保します。
create mask = 0777, directory mask = 0777: ファイルとディレクトリのパーミッションを指定し、arisa4がフルアクセスできるように設定します。

samba再起動
```
sudo systemctl restart smbd
```

arisa4 が既存のファイルやディレクトリにもフルアクセスできるように、必要に応じて権限を設定します。
```
sudo chown -R arisa4:arisa4 /mnt/raid1
sudo chmod -R 0777 /mnt/raid1
```


## windowsからアクセスしてみる
アクセス先
\\192.168.0.101\RAID1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/541bec7b-fd99-bdc7-51ab-919a7bdff001.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/4a0772a6-28c0-6110-224a-a4b185cdae54.png)