RaspberryPiで、大事なデータを書込回数に制限があるマイクロSDに保存しておくのは少し不安なので、データを外付けHDDに保存できるようにします。外付けHDDにデータを保存しておくと、マイクロSDが寿命を迎えたり、突然クラッシュしたときでも、大事なデータを救出しやすくなります。
今回は、説明のためにUSBメモリを使用していますが、基本的には外付けHDDの場合と操作は同じです。
もくじ
接続ポイントを確認
自動でマウントされている場合
df -Th
dattesar@raspberry:~ $ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
udev devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 393M 5.8M 387M 2% /run
/dev/sda1 ext4 8.9G 5.9G 2.6G 70% /
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 393M 4.0K 393M 1% /run/user/1001
/dev/sdb1 ext4 15G 86M 14G 1% /media/dattesar/d701a9fc-5f2a-4568-a000-af30d4c671fe
外付けHDDが/dev/sdb1に接続されていることがわかったので、アンマウントします。
sudo umount /dev/sdb1
マウントされていない場合
自動でマウントされていない場合は、接続されている場所を確認します。
blkidの場合
sudo blkid
dattesar@raspberry:~ $ sudo blkid
/dev/sr0: UUID="2021-01-11-15-55-51-00" LABEL="Debian RPD M-A 1" TYPE="iso9660" PTUUID="44c9feb7" PTTYPE="dos"
/dev/sda1: UUID="76197a60-3cfb-40ec-a645-d2bd67142bfd" TYPE="ext4" PARTUUID="3b947c65-01"
/dev/sda5: UUID="27696d82-e720-4bba-ae60-0a3de4e67ecd" TYPE="swap" PARTUUID="3b947c65-05"
/dev/sdb1: UUID="d701a9fc-5f2a-4568-a000-af30d4c671fe" TYPE="ext4" PARTUUID="0034f06d-01"
dmesgの場合
sudo dmesg
dattesar@raspberry:~ $ sudo dmesg
(省略)
[ 85.321625] sdb: sdb1
[ 85.324420] sd 33:0:0:0: [sdb] Attached SCSI removable disk
[ 85.615824] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null)
パーティションの作成と削除
/dev/sdbに接続されていることがわかったので、fdiskでパーティションを確認します。
sudo fdisk /dev/sdb
dattesar@raspberry:~ $ sudo fdisk /dev/sdb
fdisk (util-linux 2.33.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 14.5 GiB, 15518924800 バイト, 30310400 セクタ
ディスク型式: TransMemory
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0034f06d
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 * 2048 30310399 30308352 14.5G c W95 FAT32 (LBA)
パーティションをすべて削除して、新しくパーティションを作成してみます。
dattesar@raspberry:~ $ sudo fdisk /dev/sdb
fdisk (util-linux 2.33.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 14.5 GiB, 15518924800 バイト, 30310400 セクタ
ディスク型式: TransMemory
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0034f06d
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 * 2048 30310399 30308352 14.5G c W95 FAT32 (LBA)
コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。
コマンド (m でヘルプ): d
パーティションは何も設定されていません!
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p):
既定の回答 p であるものとみなします。
パーティション番号 (1-4, 既定値 1):
最初のセクタ (2048-30310399, 既定値 2048):
最終セクタ, +/-セクタ番号 または +/-サイズ{K,M,G,T,P} (2048-30310399, 既定値 30310399):
新しいパーティション 1 をタイプ Linux、サイズ 14.5 GiB で作成しました。
パーティション #1 には ext4 署名が書き込まれています。
署名を削除しますか? [Y]es/[N]o: Y
署名は write (書き込み)コマンドを実行すると消えてしまいます。
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
dattesar@raspberry:~ $ sudo fdisk /dev/sdb
fdisk (util-linux 2.33.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 14.5 GiB, 15518924800 バイト, 30310400 セクタ
ディスク型式: TransMemory
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0034f06d
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 2048 30310399 30308352 14.5G 83 Linux
コマンド (m でヘルプ): q
よく使うコマンドは、このあたり。
変更する場合は、最後にwで書き込むのを忘れないように。
d | パーティションを削除します |
n | 新しいパーティションを追加します |
p | パーティション情報を表示します |
w | パーティション情報をディスクに書き込んで終了します |
q | 変更点を保存せずに終了します |
dattesar@raspberry:~ $ sudo fdisk /dev/sdb
fdisk (util-linux 2.33.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): m
ヘルプ:
DOS (MBR)
a 起動可能フラグを切り替えます
b 入れ子の BSD ディスクラベルを編集します
c DOS 互換フラグを切り替えます
一般
d パーティションを削除します
F パーティションのない領域を一覧表示します
l 既知のパーティションタイプを一覧表示します
n 新しいパーティションを追加します
p パーティション情報を表示します
t パーティションタイプを変更します
v パーティション情報を検証します
i パーティションの情報を表示します
その他
m このメニューを表示します
u 表示項目の単位を変更します
x 特殊機能に移動します (熟練者向け機能)
スクリプト
I ディスクのレイアウトを sfdisk 互換のスクリプトから読み込みます
O ディスクのレイアウトを sfdisk 互換のスクリプトに書き出します
保存と終了
w パーティション情報をディスクに書き込んで終了します
q 変更点を保存せずに終了します
新しいラベルを作成します
g 新しい (何もない) GPT パーティションテーブルを作成します
G 新しい (何もない) SGI (IRIX) パーティションテーブルを作成します
o 新しい (何もない) DOS パーティションテーブルを作成します
s 新しい (何もない) Sun パーティションテーブルを作成します
HDDをフォーマット
今回は、ext4でフォーマットします。
sudo mkfs -t ext4 /dev/sdb1
dattesar@raspberry:~ $ sudo mkfs -t ext4 /dev/sdb1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 3788544 4k blocks and 948416 inodes
Filesystem UUID: ab6ed304-b4e9-4937-a313-5968d0393c69
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
dattesar@raspberry:~ $ sudo fdisk /dev/sdb
fdisk (util-linux 2.33.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 14.5 GiB, 15518924800 バイト, 30310400 セクタ
ディスク型式: TransMemory
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0034f06d
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 2048 30310399 30308352 14.5G 83 Linux
コマンド (m でヘルプ): q
HDDをマウント
/USBHDDにマウントします。
マウント先のディレクトリを作成してから、マウントします。
sudo mkdir /USBHDD
sudo mount /dev/sdb1 /USBHDD
マウントできているか、確認。
dattesar@raspberry:~ $ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
udev devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 393M 5.8M 387M 2% /run
/dev/sda1 ext4 8.9G 5.9G 2.6G 70% /
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 393M 4.0K 393M 1% /run/user/1001
/dev/sdb1 ext4 15G 41M 14G 1% /USBHDD