UbuntuサーバのHDDを交換して容量を増やす手順とは

大まかに以下の手順を実施します。

  1. cronezillaでHDDをコピー
    160GBから500GBに交換
  2. パーティションを拡張

環境はUbuntu 18.04LTS Server、オンプレミスです。

cronezillaでHDDをコピーしよう

バージョンの古いcronezillaだとbitmapの計算でエラーになったので、最新版をダウンロードしました。ISOでダウンロードし、USBに書き込んでPCをブートし、160GBのHDDから500GBのHDDにコピーをします。
cronezillaは初心者モードとエキスパートモードがあり、エキスパートモードを使用すれば、パーティションを拡張できるのかもしれませんが、今回は初心者モードでコピーしました。
くれぐれも、160GBのHDDに書き込まないよう、細心の注意を払います。

cronezillaでコピーしただけでは、パーティションとファイルシステムは160GBのままで増えません。そこで、次のとおりコマンドラインでパーティションの拡張作業を行います。

パーティション領域を拡張しよう

partedコマンドを起動し、”print free”サブコマンドでパーティションの並びと未使用領域を確認します。

$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  160GB   160GB   ext4
        160GB   500GB   340GB   Free Space

160GB-500GB領域の340GBが空き領域だとわかります。
#2のext4領域を拡張します。#2のすぐ次が空き領域なので、作業は楽です。
resizepartサブコマンドで、パーティションの拡張を行います。私は100%(フル領域)を指定しました。

(parted) resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? Y
End?  [160GB]? 100%
(parted) print free
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  500GB   500GB   ext4

(parted) quit
Information: You may need to update /etc/fstab.

この時点では、まだファイルシステムとして認識されていません。

$ df -lh
Filesystem      Size  Used Avail Use% Mounted on
udev            2.9G     0  2.9G   0% /dev
tmpfs           588M  1.1M  587M   1% /run
/dev/sda2       146G  9.9G  129G   8% /
tmpfs           2.9G     0  2.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.9G     0  2.9G   0% /sys/fs/cgroup
/dev/loop0       99M   99M     0 100% /snap/core/10823
/dev/loop1       98M   98M     0 100% /snap/core/10583
tmpfs           588M     0  588M   0% /run/user/1000

そこで、resize2fsによるファイルシステムの拡張を行います。引数の”/dev/sda2″の2はpartedコマンドの”print free”を実行したときの番号と対応します。

$ sudo resize2fs /dev/sda2
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 19, new_desc_blocks = 59
The filesystem on /dev/sda2 is now 122096129 (4k) blocks long.

以下の通り、”/”の領域が拡張されました。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.9G     0  2.9G   0% /dev
tmpfs           588M  1.1M  587M   1% /run
/dev/sda2       458G  9.9G  428G   3% /
tmpfs           2.9G     0  2.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.9G     0  2.9G   0% /sys/fs/cgroup
/dev/loop0       99M   99M     0 100% /snap/core/10823
/dev/loop1       98M   98M     0 100% /snap/core/10583
tmpfs           588M     0  588M   0% /run/user/1000

最後に

おそらく、もっとスマートにHDDを拡張する方法やツールがあると思いますが、みなさんの参考になればさいわいです。