treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Raspberry Piに外付けHDDを追加する

玄箱Proが不定期にシステムダウンしてしまう、この症状でとうとう諦めがつきました。いままでDebian Stretchをインストールした玄箱をNASとして利用してきましたが、Raspberry Piにリプレイスすべく準備を進めます。

結果として前回の、

blog.treedown.netの症状は故障と判断し諦めることにしました。

玄箱Pro…いままでありがとう。
手に入れてから10年近くもの間よく頑張ってくれました。最後にはデータを損失することなく後進に道を譲ってくれた玄箱Proに感謝をしつつ、データ移行のための準備を進めます。
計画はちょうど2年前に考えた、

blog.treedown.netこれに沿って、RaspberryPiにUSB接続のRAIDケースをRAID1で用意し共有フォルダを配置するようにします。

Raspberry Piを用意

初期設定は、RaspberryPi 3 model B+を用意してRaspbian Stretch Liteを用意、

Raspbian Stretch Liteを試してみた - treedown’s Report
これに沿って完了させた状態からスタート。

Raspberry Piに外付けハードディスクを接続して…、と思ったとき、そういえば何か注意点があったな、と思いだして、過去記事を確認することにしました。

これ

blog.treedown.netと、これ

blog.treedown.net

がそのRaspberry Piに外付けハードディスクを追加した時の記事なのですが、これ、検証した順番で書いているものだから、失敗した手順も途中経過として含まれています。

うーん、ちょっとせっかくだから、一気に手順をまとめようかなと思い、今回スムーズな手順をまとめてみることにしました。

f:id:treedown:20190417025415p:plain
さっそく、USBハードディスクをRaspberry Piに接続し、作業スタート。

1:パーティション作成・NTFSのシグネチャ削除

「fdisk -l」コマンドでUSBハードディスク(パーティションなどはなく未使用の状態のHDDを今回使用)がOSから認識していることを確認します。
--------------------------------------------------------------
$ sudo fdisk -l | less
(中略)
Disk /dev/sda: 931.5 GiB, 1000204880896 bytes, 1953525158 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
--------------------------------------------------------------
「/dev/sda」が見えたので無事認識を確認。
fdiskコマンドでパーティション作成。
--------------------------------------------------------------
$ sudo fdisk /dev/sda
(中略)
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1953525157, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525157, default 1953525157):

Created a new partition 1 of type 'Linux' 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.」とメッセージが出ましたが、これはUSBハードディスクを元々Windowsで利用していたのでNTFSでフォーマットしていた時の名残になります。
次の行の質問「Do you want to remove the signature? [Y]es/[N]o:」にて「Y」を入力してシグネチャを削除することでLinux専用で利用するディスクとしています。「The signature will be removed by a write command.」とあるので、削除は正常に完了したようです。
※Windowsと併用する場合には消してしまうと問題が起きる(と思われる)のでご注意を。
完了後、プロンプトが返ってきてから確認したら、
--------------------------------------------------------------
$ sudo fdisk -l | less
(中略)
Disk /dev/sda: 931.5 GiB, 1000204880896 bytes, 1953525158 sectors
(中略)
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1953525157 1953523110 931.5G 83 Linux
--------------------------------------------------------------
/dev/sdaに「/dev/sda1」が新たに表記されるようになりました。パーティションが無事作成できたようです。

2:ディスクフォーマットする

パーティションが作成できたので、ファイルシステムをext4指定でフォーマットすることにします。
コマンドは「mkfs.ext4」で引数に作成したパーティション「/dev/sda1」を指定。
--------------------------------------------------------------
$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 244190388 4k blocks and 61054976 inodes
Filesystem UUID: e4230e5a-a0d9-4225-ad89-db31e607b68e
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
--------------------------------------------------------------
無事完了。

3:ディスクマウントする

早速マウント、手動でマウントして動作確認するのもいいのですが、手っ取り早くfstabで認識させたあと、OS再起動でちゃんとマウントされるところまで確認してしまいます。
まずはfstabに記述するため(ここ前回mdadm使ってた関係から勘違いで遠回りしてしまったところ)UUIDを取得するコマンド「blkid /dev/sda1」
--------------------------------------------------------------
$ sudo blkid /dev/sda1
/dev/sda1: UUID="XXXXXXXX…XXXXXXXX" TYPE="ext4" PARTUUID="xxxxxxxx-00"
--------------------------------------------------------------
これで確認したUUIDをfstabに書き込みします。
※文末に「UUID=XXXXXXXX…XXXXXXXX /home/samba ext4 defaults,nofail 0 0」と追記。
--------------------------------------------------------------
$ sudo vi /etc/fstab

$ sudo cat /etc/fstab
(中略)
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
UUID=XXXXXXXX…XXXXXXXX /home/samba ext4 defaults,nofail 0 0
--------------------------------------------------------------
これでOK。/etc/fstabに設定したUUIDのUSBハードディスクが起動時に「/home/samba」にマウントされるようになります。
あとは前回ハマった「/boot/cmdline.txt」を編集。
--------------------------------------------------------------
$ sudo cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-00 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
$ sudo vi /boot/cmdline.txt
$ sudo cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-00 rootfstype=ext4 elevator=deadline fsck.repair=yes rootdelay=10 rootwait
--------------------------------------------------------------
「rootdelay=10」を末尾の「rootwait」前に追記してOS起動時にディレイを入れるようにします。

確認してみる

ここまでやって、OSを再起動してUSBハードディスクがマウントされた状態で起動してくることを確認すると、
--------------------------------------------------------------
# df -m
ファイルシス 1M-ブロック 使用 使用可 使用% マウント位置
/dev/root 14644 1146 12872 9% /
devtmpfs 460 0 460 0% /dev
tmpfs 464 0 464 0% /dev/shm
tmpfs 464 12 452 3% /run
tmpfs 5 1 5 1% /run/lock
tmpfs 464 0 464 0% /sys/fs/cgroup
/dev/mmcblk0p1 44 22 22 50% /boot
/dev/sda1 937872 77 890087 1% /home/samba
tmpfs 93 0 93 0% /run/user/1001
--------------------------------------------------------------
無事にUSBハードディスクが「/home/samba」マウントされた状態でOSが起動しました。

ひとまず、これでsambaサーバを構築するための準備ができました。