RaspberryPi4の外付けHDDを2TB→6TBに入れ替え

2022/02/21

Amazon Linux RaspberryPi

t f B! P L

Raspberry Piの用途の一つとして、ファイルサーバとして使ってます。

その時の記事はこちら。


この時はMac miniのバックアップ用として2TBの外付けHDDをNAS領域として使っていたんだけど、

色々とファイルを保存していくうちに容量が枯渇。

買い替え、というか外付けHDDの買い増しをおこなった。

Amazonでタイムセールだったので、バッファローの6TBを購入!



たまたまなのか偶然なのか、このシリーズの4TBをリビングの録画用として使ってるw


WindowsPCならこのHDDを接続してフォーマットしてハイ終わり!なんだけど、

既に2TBに入っているデータを引っ越ししつつ、Linuxとして6TBのHDDとして認識させる、といったちょっと難しいことをやります。


ddコマンドでHDD丸ごとコピー

データのコピーはいろんなやり方があると思うけど、

何も考えずにddで丸ごとコピーしてからファイルシステム拡張というベタな方法で。


RaspberryPi4はUSB3ポートが2つ付いているので、新旧のHDDをそれぞれ接続。

初めはUSB3とUSB2でコピーしたんだが、想像以上に遅かったのでUSB3接続じゃないとダメだったw

Pi上で以下のコマンドを実行すればOK。

"/dev/sda"がコピー元のHDD、"/dev/sdb"がコピー先のHDDね。

事前に"fdisk -l /dev/sda"等で確認。

sudo dd if=/dev/sda of=/dev/sdb bs=1024k status=progress


ほぼほぼ2TBのデータコピーに4時間かかった。

2000367386624 bytes (2.0 TB, 1.8 TiB) copied, 14200 s, 141 MB/s
1907729+1 records in
1907729+1 records out
2000398934016 bytes (2.0 TB, 1.8 TiB) copied, 14200.3 s, 141 MB/s

パーティション拡張

ddコマンドでコピーが終えたらデータのコピーが終わっているんだけど、ディスクの容量も2TBのまま。

このままだと4TB分が損するので、領域を拡張してあげる。

まずはパーティションの拡張。

以下のコマンドを実行して現在の状況を確認。

sudo su
parted -l

途中でWarningが出て、「なんかおかしいで」って教えてくれるので修正(Fix)する。

Warning: Not all of the space available to /dev/sdb appears to be used, you can
fix the GPT to use all of the space (an extra 7814016000 blocks) or continue
with the current setting?
Fix/Ignore? Fix ←
Model: BUFFALO External HDD (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000GB  2000GB  ext4

次にパーティションの空き領域を増やす。

続けて以下のコマンドを実行。

parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free ←
Model: BUFFALO External HDD (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2000GB  2000GB  ext4
        2000GB  6001GB  4001GB  Free Space
                ^^^^^^

この一番最後(End)の値を覚えておく。

"resizepart"でパーティションを拡張。

(parted) resizepart 1
Warning: Partition /dev/sdb1 is being used. Are you sure you want to
continue?
Yes/No? yes ←
End?  [2000GB]? 6001GB ←
(parted)

再度"print free"で最大まで拡張されたことを確認する。

(parted) print free
Model: BUFFALO External HDD (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  6001GB  6001GB  ext4
        6001GB  6001GB  175MB   Free Space

あとは"quit"で終了。

次はファイルシステム拡張。HDDでマウントしてたらumountしておく。


ファイルシステムチェックと拡張

ext4というファイルシステムを使っているので、"resize2fs"でファイルシステムを拡張すればいいんだけど、

その前にe2fsckしろって怒られたので、先にファイルシステムのチェックを行う。

e2fsck -f /dev/sdb1

俺の場合は大量にファイルを保存していたのか、破損というかinodeの誤りが結構あった。

全て"Fix"ということでひたすら"y"キーを押す。

以下のような感じでファイルシステムの修復が完了と出ればOK。

/dev/sdb1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb1: 10165/122101760 files (0.3% non-contiguous), 488143207/488378385 blocks

次にやっとファイルシステム拡張。

resize2fs /dev/sdb1
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sdb1 to 1465087634 (4k) blocks.
The filesystem on /dev/sdb1 is now 1465087634 (4k) blocks long.

以上で拡張完了。

"mount -a"で再度マウントされる。不安なら再起動すればOK。


問題なく拡張されたどうかを確認する。

df -k /dev/sdb1
Filesystem      1K-blocks       Used  Available Use% Mounted on
/dev/sdb1      5767314544 1920833068 3846465092  34% /mnt/usbhdd

いやー、久々にこんなのやったわw

Linux系でもGUIであればポチポチ操作できるんだと思うけど、コマンドで操作するとより一層理解が深まって勉強になるね!

SEは日々勉強!


余った2TBはUSB2.0の方に繋いでMacのバックアップ用とかにしようかな。

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ