LVMじゃないcentos/7
のBoxでパーティション拡張したかったのでメモ。
⚠️(お約束ですが)操作する前に消えたら泣きそうになるファイルのバックアップは取ってください
TL;DR
-
fdisk
でパーティションを確認する -
fdisk
で拡張したいパーティションそのものを削除して、削除前と同じStart
の値・新しいサイズでパーティションを作る
- 新しいサイズでパーティションを作るまで
fdisk
で書き込まないこと
- 再起動する
-
xfs_growfs
で拡張したパーティションをXFSに認識させる
環境
centos/7
のBoxを用いて作成された仮想マシンを使います。
vagrant-disksizeのプラグインを導入して 仮想マシンのストレージを拡張します。
-
centos/8
のBoxも正しく拡張できました✌
$ vagrant box list
centos/7 (virtualbox, 1905.1)
centos/8 (virtualbox, 1905.1)
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.disksize.size = '240GB'
...
仮想マシンに入ったあと df -hT
でわかりやすいパーティションサイズ・ファイルシステムを表示します。
うーん増えていません🤔
CentOS 7からファイルシステムが xfs
になっています。 resize2fs
は使えません。
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 40G 4.7G 36G 2% / <-- 240GBになっていないこれを拡張する
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs tmpfs 783M 0 783M 0% /run/user/1000
1. fdisk -l
でパーティションを確認する
パーティションの拡張に fdisk
を使いますが、 -l
オプションを付けると詳細な情報を出して終了します。
拡張したいパーティションについて次の情報はメモしてください。
- Device
- Start
- Id
- System
$ sudo fdisk -l
Disk /dev/sda: 257.7 GB, 257698037760 bytes, 503316480 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
Disk label type: dos
Disk identifier: 0x0009ef88
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 83886079 41942016 83 Linux
2. fdisk
で元のパーティションを削除して新しいサイズでパーティションを作る
オプション無しで fdisk
を実行するとコマンドの入力を待っています。
d
と入力して 拡張したいパーティションの番号を入力して まずは削除します。
- このとき、
fdisk -l
で出した削除するパーティションのStart
の値をメモしておきます - 大丈夫です、ここで削除は実際に反映されていません
- 間違えてしまったときは
q
コマンドで反映させずにfdisk
を終了させましょう
- 間違えてしまったときは
$ sudo fdisk /dev/sda
Command (m for help): d
Selected partition 1
Partition 1 is deleted
次に n
コマンドで新規にパーティションを作成します。p
を入力してパーティションのタイプをプライマリーにします。
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティションの番号はそのままで良いでしょう。 何も入力せずEnterキーを押すとdefaultの値が採用されます。
Partition number (1-4, default 1):
(デフォルトで設定されていますが) 削除する前のパーティションに設定されていたStart
の値と同じものを設定します
ここでStart
の値を間違えたまま進めるとデータが消えます。
First sector (2048-503316479, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-503316479, default 503316479):
Using default value 503316479
Partition 1 of type Linux and of size 240 GiB is set
xfs signature を取り除くか質問されたときは Y
と答えてsignatureを取り除きます。
(centos/7
のBoxでは表示されませんでした)
Partition #1 contains a xfs signature.
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
p
コマンドを使って確認すると End
が増えました。 w
コマンドで反映させてから終了します。
Command (m for help): p
Disk /dev/sda: 257.7 GB, 257698037760 bytes, 503316480 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
Disk label type: dos
Disk identifier: 0x0009ef88
Device Boot Start End Blocks Id System
/dev/sda1 2048 503316479 251657216 83 Linux
Command (m for help): w
The partition table has been altered!
3. 再起動する
$ sudo reboot
しばらく待ってから vahrant ssh
で仮想マシンに入り直します。
4. xfs_growfs
で拡張したパーティションをXFSに認識させる
再起動したあとでも実際に使える領域は拡張されていません。パーティションの拡張をXFSに認識させる必要があります。
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 40G 4.7G 36G 2% / <-- 240GBになっていないこれを拡張する
...
xfs_growfs
を使ってパーティションの拡大分をXFSに認識させます。 "data blocks changed" と表示されれば成功です。
- "data size unchanged, skipping"と表示された場合は失敗です。
fdisk
後に仮想マシンを再起動していないと変更できません。-
-d
オプションを使わないと"data size unchanged, skipping"は表示されません
-
ここでは拡大したいパーティションの Mounted on
(/
) を指定します。 xfs_growfs(8): expand XFS filesystem - Linux man page
拡大したいパーティションの Filesystem
に表示されている /dev/sda1
を指定しても拡大できる場合があります。
$ sudo xfs_growfs / -d
meta-data=/dev/sda1 isize=512 agcount=4, agsize=2621376 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10485504, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=5119, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 10485504 to 62914304
再度確認してみると使用できる領域は増えています。やったぜ👏
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 240G 4.7G 236G 2% / <-- これ
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs tmpfs 783M 0 783M 0% /run/user/1000
参考
fdiskでDisk容量を拡張する - Qiita
https://qiita.com/2or3/items/501f206a6091a4ce895f#3-%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%89%8A%E9%99%A4%E3%81%A8%E4%BD%9C%E6%88%90
CentOS7なインスタンスのルートボリューム拡張 - Qiita
https://qiita.com/mimumemo/items/1820be501b59ee204d21
xfs_growfs(8): expand XFS filesystem - Linux man page
https://linux.die.net/man/8/xfs_growfs