ブラックフライデーで購入した64GBのUSBメモリをラズパイ2で外付けドライブとして使用します。
目的は、このブログを含めて運用してるWordPressのサイト、バックアップ系プラグインでバックアップを取ったファイルをラズパイ2でダウンロードしていますが、世代管理してると容量が大きくなるので保存先を内蔵マイクロSD32GBから外付けUSBメモリに変更するためです。
SSDの方が大容量なのですが、64GBのUSBメモリが1000円以下で購入できたのでこれを使います。
外付けケースに入れたSSDも同じ方法で使用できます(外付けHDDは電力問題があるかも)。
購入したUSBメモリは、ラズパイで使用する前にパソコンでフォーマットとエラーチェックしました。
- USBメモリをNTFSで完全フォーマット
- USBメモリのエラー(完全)チェック
パソコンでUSBメモリをフォーマットとエラーチェックをして、軽くファイル書込みで動作の確認もしました。
これから行うラズパイ作業は以下の流れ。
- USBメモリのパーティション作成
- USBメモリのファイルシステムをext4でフォーマット
- USBメモリの起動マウント設定
- sambaでUSBメモリをネットワークドライブとして使う
ラズパイでの作業は、WindowsパソコンからターミナルでSSH接続をして遠隔操作で行います。
基本的にrootに入った状態で作業します。CUI操作です。
素人作業です。用語や語句など間違った使い方をしているかもしれませんが、ご了承ください。
USBメモリのパーティション作成
パソコンのターミナルからSSH接続して遠隔操作で作業します。
まず最初に接続されてるドライブを確認します。
# fdisk -l
Disk /dev/sda: 57.74 GiB, 62002298880 bytes, 121098240 sectors
Disk model: TransMemory
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: 0x3ce8494b
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 63 121097087 121097025 57.7G 7 HPFS/NTFS/exFAT
一覧に表示しているディスクの中から接続しているUSBメモリを探します。
ディスクの場所は環境により違うかもしれませんが、この場合USBメモリは「/dev/sda」になります。
USBメモリはNTFSでフォーマットしているので、パーティションが「/dev/sda1」になっています。パーティション分割してないので1つだけになります。
次に、パーティション操作で既存のパーティションを削除して新しいパーティションを作成します。
パーティション操作に入ります。
# fdisk /dev/sda
fdiskコマンドに入りまして、また現在のパーティション構成を確認します。
fdiskコマンドから抜けるには「quit」と打つと抜けれます。「exit」だと抜けれない。
# p
Disk /dev/sda: 57.74 GiB, 62002298880 bytes, 121098240 sectors
Disk model: TransMemory
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: 0x3ce8494b
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 63 121097087 121097025 57.7G 7 HPFS/NTFS/exFAT
先ほど確認した時と同じ「sda1」のパーティションがあります。
続いて、パーティション削除。
# d
Selected partition 1
Partition 1 has been deleted.
1個のパーティションが削除されました。
またパーティション構成を確認。
# p
Disk /dev/sda: 57.74 GiB, 62002298880 bytes, 121098240 sectors
Disk model: TransMemory
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: 0x3ce8494b
「sda1」のパーティションが消えました。
パーティションを作成します。
# n
対話式で作業するので、聞かれた入力して【Enter】で次へ進みます。
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-121098239, default 2048):【Enter】
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-121098239, default 121098239):【Enter】
セクターの最初と最後のセクターは、容量全て使うので何も入力せずに【Enter】キーを押します。
対話式でパーティションを作成すると以下のメッセージが表示されます。
Created a new partition 1 of type 'Linux' and of size 57.7 GiB.
再びパーティション構成を確認。
# p
Disk /dev/sda: 57.74 GiB, 62002298880 bytes, 121098240 sectors
Disk model: TransMemory
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: 0xfe4ee06c
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 121098239 121096192 57.7G 83 Linux
新しいパーティション作成されました。
ただ、まだパーティション構成しただけなのでパーティション構成の情報を書き込みます。
# w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
パーティション作成は完了です。
USBメモリのファイルシステムをext4でフォーマット
先ほど新規にパーティション作成したUSBメモリをext4でフォーマットします。
mkfs.ext4 -L usbdisk /dev/sda1
「-L」オプションで「usbdisk」のラベル名を付けていますが、無くてもいいかなと思います。
確認。
# parted -l
Model: KIOXIA TransMemory (scsi)
Disk /dev/sda: 62.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 62.0GB 62.0GB primary ext4
ext4でフォーマットされました。
USBメモリの起動マウント設定
まず、マウント用のディレクトリを作成
# mkdir /mnt/KIOXIA_64GB/
ディレクトリ名はUSBメモリの「ブランド+容量」にしました。
起動時のマウント設定する前にUSBメモリのUUIDを確認します。
#blkid /dev/sda1
/dev/sda1: LABEL="usbdisk" UUID="1d712063-98b4-45d7-841a-0f7451341a67" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="fe4ee06c-01"
UUIDは[1d712063-98b4-45d7-841a-0f7451341a67]になります。
ファイルシステムはext4になってます。
起動マウントの設定をします。
viエディタを使用。
# vi /etc/fstab
末行に追記します。
UUID=1d712063-98b4-45d7-841a-0f7451341a67 /mnt/KIOXIA_64GB ext4 defaults 0 0
UUIDとマウント先のディレクトリ、ファイルシステムが間違っていないか確認して上書き保存します。
ラズパイを再起動します。
# reboot
再起動したら現在マウントされているファイルシステムを確認します。
# cat /etc/mtab
一覧から
/dev/sda1 /mnt/KIOXIA_64GB ext4 rw,relatime 0 0
があれば起動時のマウント設定は完了です。
sambaでUSBメモリをネットワークドライブとして使う
sambaでUSBメモリをネットワークドライブとして使えるように設定しますが、既に内蔵ドライブをネットワークドライブとして設定しているのでUSBメモリを追加で設定するだけなので、sambaのインストールと初期設定などは省略します。
viエディタを使用。
# vi /etc/samba/smb.conf
「smb.conf」を開いたら
[KIOXIA_64GB]
comment = RaspberryPiServer
path = /mnt/KIOXIA_64GB
browsable = yes
writable = yes
public = no
valid users = @smbuser
force user = smbuser
上記を追記したら上書き保存。
ラズパイを再起動。
# reboot
ユーザー権限と書き込み権限を変更します。
# chown -R smbuser:smbuser /mnt/KIOXIA_64GB/
# chmod -R 777 /mnt/KIOXIA_64GB/
[smbuser]は外部のパソコンからアクセスる時のユーザー名、ファイルの書き込み権限もローカルネットワークなので[777]にしてます。
Windowsパソコンからネットワークドライブを追加したら作業完了です。
容量が56.5GBと、外部のパソコンからラズパイに接続したUSBメモリにアクセスできました。
アクセス権限を変えているので、パソコンからファイルの保存やディレクトリの作成も問題なくできました。
サーバーからバックアップファイルをダウンロードするプログラムの保存先もUSBメモリの「/mnt/KIOXIA_64GB/」に変更したら全ての作業完了です。
権限の問題でアクセスできない場合は、個人的な経験談になりますがネットワークドライブに設定してるディレクトリの権限の問題やsambaの設定ミス等があります。
アクセス権限やsambaの設定を修正してもラズパイの外からアクセスできない場合は、意外にもパソコン側の共有フォルダに関するキャッシュが原因だったりもします。
ラズパイのネットワークドライブのアクセス権限がまだない状態でパソコンからアクセスしようとして失敗すると、その時の情報がキャッシュで残ってるようでラズパイの方で直してもアクセスできない状態のままで、だいたいパソコンの再起動で解決します。
他のパソコンやスマホからラズパイのネットワークドライブにアクセスできれば、アクセスできないパソコンが原因なのですが、これに気づくまで小一時間かかって意外と厄介でした。
今回使用したキオクシアのUSBメモリ。
USB2.0ですが他のUSB2.0のUSBメモリより書き込み速度が遅いです。
ラズパイで組んだプログラムを自動で走らせてサーバーにFTP接続してバックアップファイルをダウンロードする保存先なので、ラズパイ2のLANは100Mbpsなのもあるので、ファイルサーバーとして頻繁にファイルを書込みしなければ速度はそこまで気にしなくていいかなと思います。