Raspberry Pi 4で外付けHDDを使う!

engineer

2019年にメモリが強化されたRaspberry Pi 4Bが発売され、ラズパイをパソコンとしても十分実用的に使えるようになりました。ラズパイはSDカードにいろいろ保存しますが、それだけでは容量や寿命に不安が残りますよね?そこで今回は外付けのHDDをラズパイで使う方法を紹介します。普通のパソコンと違い、ラズパイにHDDやUSBメモリをつなぐだけでは使えるようにはならず、少々設定が必要になります。

OSは、Ubuntu Server 19.10,Ubuntu Server 20.04, Raspbian Busterで動作を確認しています。

今回紹介する方法と、この記事で紹介した方法を組み合わせることで、比較的安価で大容量なファイルサーバーを作ることもできます。

HDDの初期化

まず、他のPCでHDDを初期化します(今回は Windowsを使いました)。

Windowsマーク右クリック→「ディスクの管理」→対象HDDで右クリック(データが消えるので間違えちゃダメ)→「ボリュームの削除」(→複数に分かれている場合はすべて消す)でHDDの中身を完全に削除します。

下図のようになっていればOK。

パーティションの作成

次にラズベリーパイにUSB接続します。

接続したら、コマンドラインを使います。

sudo fdisk -l

このコマンドでUSBのHDDがOSから認識されていることを確認します。以下のような表示が出ると思います。

(前略)
Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HDPC-UT         
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: gpt
Disk identifier: 619BC024-66B9-4A55-9F73-76B49CFB73EE

容量のところを見ればHDDとわかると思いますが、/dev/sdaという場所でHDDが認識されています。

次に下のコマンドでパーティションを作成します。

sudo fdisk /dev/sda

すると、いくつか入力を求められると思いますが、以下と同じになるように入力すれば問題ありません。

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (34-1953525134, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525134, default 1953525134): 

Created a new partition 1 of type 'Linux filesystem' and of size 931.5 GiB.
Partition #1 contains a ntfs signature.

Do you want to remove the signature? [Y]es/[N]o: y

The signature will be removed by a write command.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

途中で「Partition #1 contains a ntfs signature.」というものがありましたが、これはもともと Windowsで使っていた時の名残です。今回は次の質問「Do you want to remove the signature? [Y]es/[N]o:」で「y」と答えてシグネチャを削除しているのでLinux専用ディスクとなっています(削除が正常に完了すると「The signature will be removed by a write command.」と出ます)。

※未検証ですが、HDDを Windowsと併用する場合は消してしまうと問題が起こる可能性があります。

上記完了後

sudo fdisk -l | less

を入力し

(前略)
Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
(中略)
Device     Start        End    Sectors   Size Type
/dev/sda1   2048 1953525134 1953523087 931.5G Linux filesystem

と表示されればOK。/dev/sdaのところに/dev/sda1が表記されるようになり、パーティションが無事に作成できました(出てきたやつはキーボードでqを押すと閉じられます)。

環境によっては/dev/sda1ではないかもしれません。その場合は以下では適宜読み替えてください。

HDDのフォーマット

パーティションが作成できたので、HDDをフォーマットします。以下のコマンドを入力してください。

sudo mkfs.ext4 /dev/sda1

すると以下のように表示されます(若干時間がかかるかもしれません)。

mke2fs 1.45.3 (14-Jul-2019)
Creating filesystem with 244190385 4k blocks and 61054976 inodes
Filesystem UUID: db2a7ad5-03c5-4e81-a854-234436e9815f
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

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

エラーが出なければ完了。

HDDのマウント

外付けHDDなどをアクセスできる状態にすることを「マウント」といいます。そして、HDDの中身を表示する「場所」を「マウントポイント」といいます。

まずはラズパイの中にマウントポイントとなるディレクトリをコマンドで作ります。

mkdir /home/ubuntu/hdd

今回は/home/ubuntu/hddというディレクトリを作りましたが、使いやすい場所に作ってください。

いよいよマウントを行います。以下のようなコマンドを入力してください。

sudo mount -t ext4 /dev/sda1 /home/ubuntu/hdd

これで/home/ubuntu/hddというディレクトリの中にHDDの中身が表示され、アクセスできるようになりました。

マウントを解除するには次のコマンドです。

sudo umount /home/ubuntu/hdd

マウントしたHDDの「所有権」変更

上記でマウントができましたが、マウントしたHDDの所有権は「root」という特別なユーザーが持っています。このままでも良いですが、少々不便なので変更します。マウントした状態で次のコマンドを入力してください。

sudo chown -hR ubuntu:ubuntu /home/ubuntu/hdd

このchownコマンドは

chown [オプション] ユーザー:グループ ファイル(orディレクトリ)

という書式に従っています。「ユーザー」と「グループ」は自分が普段使っているユーザーのものに変えてください。

起動時の自動マウント

ここまででマウント作業は完了ですが、このままだと毎回手動でコマンドを打たなければなりません。それは面倒ですよね。そこで、ラズパイを起動したら自動でHDDマウントしてくれるよう設定します。

まず、設定に必要な情報を確認します。以下のコマンドを入力してください。

sudo blkid /dev/sda1

すると、以下のような文字が出てくると思います。

/dev/sda1: UUID="XXX…XXXXX" TYPE="ext4" PARTUUID="xxxxx…-…-xx"

この「UUID」をメモなどで記録しておいてください。

次にfstabという、システム起動時にマウントされるデバイスが記述してあるファイルを編集します。以下のコマンドで編集モードにします。

sudo nano /etc/fstab

このファイルの末尾に

UUID=XXX…XXXXX /home/ubuntu/hdd ext4 defaults,nofail 0 0

と記述します。UUIDは先ほどメモしたものをを入力してください(確認したときは「”」が付いていましたが、ここでは除いてください)。

ここまでできたら、一度マウントを解除して以下のコマンドを入力してください(fstabに書いてあることを再度実行するコマンドです)。

sudo mount -a

マウントできていればOK!

ラズパイ起動時の注意

HDDをUSBに繋いだ状態でラズパイの電源を入れても、OSが起動しないということがありました。必ず起こるわけではなく、HDDの製品によって違いました。もしこれが発生した場合は、USBを抜いた状態で電源を入れてから接続してください。モノによるので、複数のHDDで試してみると良いかと思います。

ちなみに、ノートPCから取り出したHDDをつないだ場合はこのバグは一度も発生しませんでした。

コメント

  1. […] /mnt/dataの所有者をrootから/mnt/dataにアクセスしたいユーザーやそのユーザーが所属するグループに変更する必要があります。このサイトで紹介されているように、chownコマンドを用いるもあります。 […]

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