VMware ESXi で、サーバーを再起動せずにHDDサイズを拡張する手順をまとめます。
同様のことを様々なコマンドで実現可能なので、他の記事を見ているときに混乱しないよう、各方法を記載します。
環境・目的
- VMware ESXi 7
- Ubuntu 20.04 Server
- HDDを10GBとして初期構築
- HDDを15GBにし、
/
パーティションを最大にしたい。
ほかのOSでもコマンドは変わりません。コマンドが見つからない場合はdnfコマンドなどでインストールしてください。
事前準備
コマンドはすべてrootユーザーで作業していきます。
なので、事前にrootになっておきます。
user@ubuntu:~$ sudo -s
root@ubuntu:~#
非LVMの場合
作業前の構成は次のようなイメージです。
HDDサイズを拡張する
HDDのサイズを拡張して、次のイメージの構成を目指します。
まずは現在の容量をdf
コマンドで確認します。
root@ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 445M 0 445M 0% /dev
tmpfs 98M 2.4M 96M 3% /run
/dev/sda2 9.8G 4.3G 5.0G 47% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop1 33M 33M 0 100% /snap/snapd/12704
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
tmpfs 98M 0 98M 0% /run/user/1000
Mounted on が /
となっているFilesystem /dev/sda2
を大きくすればよいことがわかりました。
次に、パーティションの配置状況を、fdisk
コマンドで確認します。
root@ubuntu:~# fdisk -l
(略)
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
/dev/sda のサイズが 10GB であり、目的のパーティション /dev/sda2
がディスクの末尾に存在することが確認できました。
目的のパーティションがディスク末尾ではないところに存在する場合は、目的のパーティションの後ろに存在するパーティションが邪魔をして、パーティションを大きくすることができません。
では/dev/sda のサイズを大きくしましょう。ESXiの設定画面で、容量を増やしてOKを押すだけです。
このとき、OSはシャットダウンしていなくても大丈夫です。
ただし、スナップショットがあるとHDDのサイズは大きくできませんので、すべてのスナップショットを統合しておく必要があります。
ESXiでHDDを大きくしても、Linuxは自動で認識はしてくれません。
/dev/<ディスク名>
のサイズ変更を認識させるには、/sys/class/block/<ディスク名>/device/rescan
に 1 を書き込むことで、
最新のHDDサイズをLinuxに認識させることができます。
root@ubuntu:~# echo 1 > /sys/class/block/sda/device/rescan
改めて、fdisk
で、HDDサイズを確認しましょう。
root@ubuntu:~# fdisk -l
(略)
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
GPT PMBR size mismatch
の警告が表示されていればOK
です。
パーティションを拡張する
次の構成を目指します。
方法1 growpart
パーティションを拡張するのに、growpartコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
もしコマンドが見つからない場合は、cloud-guest-utils
パッケージをインストールすることで導入できます。
root@ubuntu:~# apt install cloud-guest-utils
ではパーティションを大きくしましょう。
まずは現在のパーティションサイズをfdisk
で確認します。
root@ubuntu:~# fdisk -l
(略)
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
/dev/sda2
のサイズは 10G です。
次に、growpart
コマンドでパーティションを大きくします。
/dev/sda
と 2
の間にはスペースを入れることに注意してください。
# growpart /dev/<ディスク> <パーティション番号>
root@ubuntu:~# growpart /dev/sda 2
CHANGED: partition=2 start=4096 old: size=20965376 end=20969472 new: size=31453151 end=31457247
結果を、fdisk
で確認します。
root@ubuntu:~# fdisk -l
(略)
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 31457246 31453151 15G Linux filesystem
GPT PMBR size mismatch
の警告がなくなり、/dev/sda2
のサイズが 15GB になりました。
方法2 parted
パーティションを拡張するのに、partedコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
ではパーティションを大きくしましょう。
parted
を、/dev/sda
を引数として実行します。
root@ubuntu:~# parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
(parted)
というプロンプトが表示されるので、print free
と入力して実行します。
(parted) print free
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 10485760 blocks) or continue with the current
setting?
Fix/Ignore?
HDDのサイズが変更になったため、HDDの最後に書かれているはずのGPTが最後にないことが検出されています。
GPTをHDDの最後に移動してよいか聞いているので、Fixと入力します。
ここでFixしないと、パーティションを大きくすることはできません。
Fix/Ignore? Fix
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16.1GB
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 10.7GB 10.7GB ext4
10.7GB 16.1GB 5370MB Free Space
現在の状況が表示されます。/dev/sda
が 16.1GB (だいたい15GB)であること、
パーティション番号2 が 10.7GB (だいたい10GB)であること、
パーティション番号2 の後ろに、5370MBの空き領域が存在し、そのEndは 16.1GBであることがわかります。
空き領域を最大限使い切るため、表示の単位をセクタ単位にしておきます。
(parted) unit s
再度、print free
します。
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 31457280s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
34s 2047s 2014s Free Space
1 2048s 4095s 2048s bios_grub
2 4096s 20969471s 20965376s ext4
20969472s 31457246s 10487775s Free Space
ディスクのEndのセクタ番号31457246s
を後で使いますのでメモしておいてください。
では、パーティションを大きくします。resizepart
コマンドで2
番のパーティションを大きくします。
(parted) resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No?
現在使われている(マウントされている)パーティションだが、本当に続行してよいか聞いてきています。
よいので、yesを入力します。
Yes/No? yes
End? [20969471s]?
2番のパーティションのEndを、何セクタの場所まで大きくするかを聞いてきています。先ほどメモしたEndである 31457246s を入力します。(parted version 3.0以上であれば、100%という入力も受け付けます)
End? [20969471s]? 31457246s
再びprint free
します。
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 31457280s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
34s 2047s 2014s Free Space
1 2048s 4095s 2048s bios_grub
2 4096s 31457246s 31453151s ext4
ディスク末尾の空き領域がなくなり、2番パーティションのEndが先ほど入力したセクタ番号になっていることがわかりました。
セクタ番号表示だとわかりにくいので、単位をcompact(人間が読みやすいようにいい感じにする)にして、print free
してみます。
(parted) unit compact
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16.1GB
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 16.1GB 16.1GB ext4
2番パーティションのサイズが16.1GB(だいたい15GB)に増えていることがわかりました。
quit
でpartedを終了します。
(parted) quit
方法3 fdisk
パーティションを拡張するのに、fdiskコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
拡張というよりは、2番パーティションを一度消して、大きいサイズで改めて作成するというイメージです。
ではパーティションを大きくしましょう。
fdisk
を、/dev/sda
を引数として実行します。
root@ubuntu:~# 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.
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Command (m for help):
現在の状況を p
(print) で表示させます。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
Command (m for help):
さて、ここからパーティションを削除して、再作成していきます。
なお、パーティション削除作業をしても、結果がすぐにHDDに反映されるわけではなく、
再作成も含めて最後にまとめてHDDに反映する形となります。
よって、操作を間違ったら、落ちついて q
でfdisk
を終了すればなにも問題ありません。
では、/dev/sda2 (2番パーティション)を d
(delete)で削除しましょう。
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help):
正しく削除されたか、p
で確認しましょう。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2
がなくなったことがわかります。
それでは、/dev/sda2
を大きなサイズで作成しましょう。n
(new)を入力し、2
を入力し、そのあとは空白のままエンターを2回押します。
Command (m for help): n
Partition number (2-128, default 2): 2
First sector (4096-31457246, default 4096):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4096-31457246, default 31457246):
Created a new partition 2 of type 'Linux filesystem' and of size 15 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o:
新たにパーティションを作成したところ、古いファイルシステムの痕跡が残っているが、削除するかを聞かれています。
これはnoをします。削除してしまうとファイルシステム(ext4)の情報が消えるため、復旧が面倒になります。
Do you want to remove the signature? [Y]es/[N]o: n
Command (m for help):
これでパーティションが大きなサイズで作成されました。p
で確認します。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: 332D6C26-2C88-408B-95E1-E9916F0705EB
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 31457246 31453151 15G Linux filesystem
Sizeが 15GB と、大きくなっていることがわかります。
それでは、ここまでの作業結果を、w
(write)でHDDに反映させます。
Command (m for help): w
The partition table has been altered.
Syncing disks.
root@ubuntu:~#
ファイルシステムを拡張する
最後に、ファイルシステムを拡張します。
方法1 resize2fs
resize2fs
コマンドを使ってファイルシステムを拡張します。
まず、現在のファイルシステムサイズを、df
コマンドで確認します。
root@ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 445M 0 445M 0% /dev
tmpfs 98M 2.4M 96M 3% /run
/dev/sda2 9.8G 4.3G 5.0G 47% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop1 33M 33M 0 100% /snap/snapd/12704
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
tmpfs 98M 0 98M 0% /run/user/1000
/dev/sda2
のSizeが 9.8GB であることがわかります。
では、resize2fs
コマンドでパーティションを拡張します。
root@ubuntu:~# resize2fs /dev/sda2
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/sda2 is now 3931643 (4k) blocks long.
結果をdf
コマンドで確認します。
root@ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 445M 0 445M 0% /dev
tmpfs 98M 2.4M 96M 3% /run
/dev/sda2 15G 4.3G 9.8G 31% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop1 33M 33M 0 100% /snap/snapd/12704
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
tmpfs 98M 0 98M 0% /run/user/1000
/dev/sda2
のSizeが 15GB になりました。これで作業終了です。
LVMの場合
作業前の構成は次のようなイメージです。
HDDサイズを拡張する
HDDのサイズを拡張して、次のイメージの構成を目指します。
まずは現在の容量をlsblk
コマンドで確認します。
root@ubuntu:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 55.4M 1 loop /snap/core18/2128
loop1 7:1 0 32.3M 1 loop /snap/snapd/12704
loop2 7:2 0 70.3M 1 loop /snap/lxd/21029
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 9G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 9G 0 lvm /
sr0 11:0 1 1.2G 0 rom
MOUNTPOINT が /
となっているNAME /dev/mapper/ubuntu--vg-ubuntu--lv
を大きくすればよいことがわかりました。
そしてそれを大きくするには、sda3
を大きくしなければならないこともわかりました。
次に、sda3
パーティションの配置状況を、fdisk
コマンドで確認します。
root@ubuntu:~# fdisk -l /dev/sda
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 20969471 18868224 9G Linux filesystem
/dev/sda のサイズが 10GB であり、目的のパーティション /dev/sda3
がディスクの末尾に存在することが確認できました。
目的のパーティションがディスク末尾ではないところに存在する場合は、目的のパーティションの後ろに存在するパーティションが邪魔をして、パーティションを大きくすることができません。
では/dev/sda のサイズを大きくしましょう。ESXiの設定画面で、容量を増やしてOKを押すだけです。
このとき、OSはシャットダウンしていなくても大丈夫です。
ただし、スナップショットがあるとHDDのサイズは大きくできませんので、すべてのスナップショットを統合しておく必要があります。
ESXiでHDDを大きくしても、Linuxは自動で認識はしてくれません。
/dev/<ディスク名>
のサイズ変更を認識させるには、/sys/class/block/<ディスク名>/device/rescan
に 1 を書き込むことで、
最新のHDDサイズをLinuxに認識させることができます。
root@ubuntu:~# echo 1 > /sys/class/block/sda/device/rescan
改めて、fdisk
で、HDDサイズを確認しましょう。
root@ubuntu:~# fdisk -l /dev/sda
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 20969471 18868224 9G Linux filesystem
GPT PMBR size mismatch
の警告が表示されていればOK
です。
パーティションを拡張する
次の構成を目指します。
方法1 growpart
パーティションを拡張するのに、growpartコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
もしコマンドが見つからない場合は、cloud-guest-utils
パッケージをインストールすることで導入できます。
root@ubuntu:~# apt install cloud-guest-utils
ではパーティションを大きくしましょう。
まずは現在のパーティションサイズをfdisk
で確認します。
root@ubuntu:~# fdisk -l /dev/sda
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 20969471 18868224 9G Linux filesystem
/dev/sda3
のサイズは 9G です。
次に、growpart
コマンドでパーティションを大きくします。
/dev/sda
と 3
の間にはスペースを入れることに注意してください。
# growpart /dev/<ディスク> <パーティション番号>
root@ubuntu:~# growpart /dev/sda 3
CHANGED: partition=3 start=2101248 old: size=18868224 end=20969472 new: size=29355999 end=31457247
結果を、fdisk
で確認します。
root@ubuntu:~# fdisk -l /dev/sda
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 31457246 29355999 14G Linux filesystem
GPT PMBR size mismatch
の警告がなくなり、/dev/sda3
のサイズが 14GB (だいたい15GB)になりました。
方法2 parted
パーティションを拡張するのに、partedコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
ではパーティションを大きくしましょう。
parted
を、/dev/sda
を引数として実行します。
root@ubuntu:~# parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
(parted)
というプロンプトが表示されるので、print free
と入力して実行します。
(parted) print free
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 10485760 blocks) or continue with the current
setting?
Fix/Ignore?
HDDのサイズが変更になったため、HDDの最後に書かれているはずのGPTが最後にないことが検出されています。
GPTをHDDの最後に移動してよいか聞いているので、Fixと入力します。
ここでFixしないと、パーティションを大きくすることはできません。
Fix/Ignore? Fix
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16.1GB
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 1076MB 1074MB ext4
3 1076MB 10.7GB 9661MB
10.7GB 16.1GB 5370MB Free Space
現在の状況が表示されます。/dev/sda
が 16.1GB (だいたい15GB)であること、
パーティション番号3 が 9661MB (だいたい10GB)であること、
パーティション番号3 の後ろに、5370MBの空き領域が存在し、そのEndは 16.1GBであることがわかります。
空き領域を最大限使い切るため、表示の単位をセクタ単位にしておきます。
(parted) unit s
再度、print free
します。
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 31457280s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
34s 2047s 2014s Free Space
1 2048s 4095s 2048s bios_grub
2 4096s 2101247s 2097152s ext4
3 2101248s 20969471s 18868224s
20969472s 31457246s 10487775s Free Space
ディスクのEndのセクタ番号31457246s
を後で使いますのでメモしておいてください。
では、パーティションを大きくします。resizepart
コマンドで3
番のパーティションを大きくします。
(parted) resizepart 3
End? [20969471s]?
3番のパーティションのEndを、何セクタの場所まで大きくするかを聞いてきています。先ほどメモしたEndである 31457246s を入力します。
End? [20969471s]? 31457246s
再びprint free
します。
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 31457280s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
34s 2047s 2014s Free Space
1 2048s 4095s 2048s bios_grub
2 4096s 2101247s 2097152s ext4
3 2101248s 31457246s 29355999s
ディスク末尾の空き領域がなくなり、3番パーティションのEndが先ほど入力したセクタ番号になっていることがわかりました。
セクタ番号表示だとわかりにくいので、単位をcompact(人間が読みやすいようにいい感じにする)にして、print free
してみます。
(parted) unit compact
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16.1GB
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 1076MB 1074MB ext4
3 1076MB 16.1GB 15.0GB
3番パーティションのサイズが15.0GBに増えていることがわかりました。
quit
でpartedを終了します。
(parted) quit
方法3 fdisk
パーティションを拡張するのに、fdiskコマンドを使います。
Ubuntu 20.04 Server にはデフォルトでインストールされています。
拡張というよりは、3番パーティションを一度消して、大きいサイズで改めて作成するというイメージです。
ではパーティションを大きくしましょう。
fdisk
を、/dev/sda
を引数として実行します。
root@ubuntu:~# 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.
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Command (m for help):
現在の状況を p
(print) で表示させます。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 20969471 18868224 9G Linux filesystem
Command (m for help):
さて、ここからパーティションを削除して、再作成していきます。
なお、パーティション削除作業をしても、結果がすぐにHDDに反映されるわけではなく、
再作成も含めて最後にまとめてHDDに反映する形となります。
よって、操作を間違ったら、落ちついて q
でfdisk
を終了すればなにも問題ありません。
では、/dev/sda3 (3番パーティション)を d
(delete)で削除しましょう。
Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.
Command (m for help):
正しく削除されたか、p
で確認しましょう。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3
がなくなったことがわかります。
それでは、/dev/sda3
を大きなサイズで作成しましょう。n
(new)を入力し、3
を入力し、そのあとは空白のままエンターを2回押します。
Command (m for help): n
Partition number (3-128, default 3): 3
First sector (2101248-31457246, default 2101248):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2101248-31457246, default 31457246):
Created a new partition 3 of type 'Linux filesystem' and of size 14 GiB.
Partition #3 contains a LVM2_member signature.
Do you want to remove the signature? [Y]es/[N]o:
新たにパーティションを作成したところ、古いファイルシステムの痕跡が残っているが、削除するかを聞かれています。
これはnoをします。削除してしまうとシグネチャ(LVM)の情報が消えるため、復旧が面倒になります。
Do you want to remove the signature? [Y]es/[N]o: n
Command (m for help):
これでパーティションが大きなサイズで作成されました。p
で確認します。
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
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: D18BFAE1-C432-49C6-AF34-4901543CB719
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 31457246 29355999 14G Linux filesystem
Sizeが 14GB と、大きくなっていることがわかります。
それでは、ここまでの作業結果を、w
(write)でHDDに反映させます。
Command (m for help): w
The partition table has been altered.
Syncing disks.
root@ubuntu:~#
LVMの物理ボリュームの拡張(pvresize)
pvresize
を使って、LVMの物理ボリュームを拡張します。
終了時には次の構成になっています。ボリュームグループも一緒に大きくなります。
まずは、pvdisplay
で状況を確認します。(-C
オプションでカラム表示させる)
root@ubuntu:~# pvdisplay -C
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <9.00g 0
/dev/sda3
はubuntu-vg というボリュームグループに組み込まれており、サイズは9.00gぐらいということがわかりました。
では、物理ボリューム /dev/sda3
を pvresize
で拡張します。
root@ubuntu:~# pvresize /dev/sda3
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
結果を確認します。
root@ubuntu:~# pvdisplay -C
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <14.00g 5.00g
14.00g に拡張されました。
LVMの論理ボリュームの拡張(lvresize)
次に、lvresize
を使って、論理ボリュームを拡張します。
似たコマンドとしてlvextend
(拡張専用)、lvreduce
(縮小専用)がありますが、
lvresize
はこれらのコマンドの機能を兼ね備えたコマンドです。
まずは、lvdisplay
で状況を確認します。(-C
オプションでカラム表示させる)
root@ubuntu:~# lvdisplay -C
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- <9.00g
論理ボリューム ubuntu-lv
はubuntu-vg
というボリュームグループから切り出されており、サイズは9.00gぐらいということがわかりました。
では、論理ボリューム ubuntu-lv
を lvresize
で拡張します。
-l +100%FREEE
で、ボリュームグループの空き領域100%分を+
(拡張)するという意味になります。
root@ubuntu:/home/user# lvresize -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.00 GiB (2303 extents) to <14.00 GiB (3583 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
結果を確認します。
root@ubuntu:/home/user# lvdisplay -C
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- <14.00g
14.00g に拡張されました。
ファイルシステムを拡張する
最後に、ファイルシステムを拡張します。
方法1 resize2fs
resize2fs
コマンドを使ってファイルシステムを拡張します。
まず、現在のファイルシステムサイズを、df
コマンドで確認します。
root@ubuntu:/home/user# df -h
Filesystem Size Used Avail Use% Mounted on
udev 445M 0 445M 0% /dev
tmpfs 98M 2.5M 96M 3% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 8.8G 4.0G 4.4G 48% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda2 976M 108M 801M 12% /boot
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop1 33M 33M 0 100% /snap/snapd/12704
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
tmpfs 98M 0 98M 0% /run/user/1000
/dev/mapper/ubuntu--vg-ubuntu--lv
のSizeが 8.8GB であることがわかります。
では、resize2fs
コマンドでパーティションを拡張します。
root@ubuntu:/home/user# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 3668992 (4k) blocks long.
結果をdf
コマンドで確認します。
root@ubuntu:/home/user# df -h
Filesystem Size Used Avail Use% Mounted on
udev 445M 0 445M 0% /dev
tmpfs 98M 2.5M 96M 3% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 14G 4.0G 9.1G 31% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda2 976M 108M 801M 12% /boot
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop1 33M 33M 0 100% /snap/snapd/12704
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
tmpfs 98M 0 98M 0% /run/user/1000
/dev/mapper/ubuntu--vg-ubuntu--lv
のSizeが 14GB(だいたい15GB) になりました。これで作業終了です。
備考:GUIの場合
GUIの場合は、gparted を使います。
Ubuntu 20.04 Desktop にはデフォルトではインストールされていないので、次のコマンドでインストールします。
root@ubuntu:~# apt install gparted
gparted
で起動できます。
root@ubuntu:~# gparted
あとは直感的に使えるので、解説は割愛します。