/bootが逼迫した時のメモ
まとめ
行った操作としてはこんな感じ。
fstab作り直した方がいいのかなと思ったんですけど特段問題なく動いている なんでかはわからん
発端
やばいやばい/bootが逼迫してやがる
拡張したいんだが、その直後に/がいるもんでやりようがない!
これどうしたらいいんだろう sda3を縮小+移動できないだろうか
とりあえず現状:
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System /boot/efi
/dev/sda2 2203648 2818047 614400 300M Linux filesystem /boot
/dev/sda3 2818048 271253503 268435456 128G Linux filesystem /
/dev/sda4 271253504 539688959 268435456 128G Linux filesystem /usr
/dev/sda5 539688960 976771071 437082112 208.4G Linux filesystem /home
/bootをもう4GBくらいにしちゃいたいんだよな
4GiB = 4294967296Byte = 8388608セクタ だから、2203648 ~ 10592255 まで拡充できればよくて…
/
)縮小
sda3(直下のsda3の開始が2818048だから、10592256 - 2818048 = 7774208セクタ縮めないといけない
つまり?268435456セクタあったsda3を、268435456-7774209=260661247セクタに縮小する必要がある、と
とりあえずsda3を最小まで縮小しよう
# df -h /host
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 125G 11G 109G 9% /host
11GB使ってるらしいから、16GiB=17179869184Byte=33554432セクタまで縮める
# e2fsck -f /dev/sda3
# resize2fs /dev/sda3 33554432s
次にパーティションを縮小する
このとき、パーティション長はファイルシステム長より大きくないと(多分)困るので、適当に32GBまで縮める
fdisk /dev/sda
d 3
n 3
+32G
w
これでパーティションが32GiB=34359738368Byteまで縮小された
e2fsck -f /dev/sda3
resize2fs /dev/sda3
これでFSをパーティションの最大サイズまで拡張する 一旦再起動
sda6を生やし、sda3の内容をコピー
現状:
# fdisk -l /dev/sda
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System
/dev/sda2 2203648 2818047 614400 300M Linux filesystem
/dev/sda3 2818048 69926911 67108864 32G Linux filesystem
/dev/sda4 271253504 539688959 268435456 128G Linux filesystem
/dev/sda5 539688960 976771071 437082112 208.4G Linux filesystem
これでsda3とsda4の間に空白(271253504-69926911 = 201326593セクタ = およそ96GB)ができた
次にsda3をその末尾までずらす つまり 69926911 ~ 137035776 へ移動する
昔はpartedでこれができたらしいんですが、今は無理らしいので…
パーティションを新しく生やして:
fdisk /dev/sda
n
6
69926912
+67108863
w
ddでコピー
dd if=/dev/sda3 of=/dev/sda6 bs=16M
これでsda3とsda6の内容が同一になった…はず
つぎにsda3を消す この辺りから後戻りできなくなってくる!
fdisk /dev/sda
d
3
w
/boot
)拡大
sda2(そしてsda2を拡大する
parted /dev/sda
resizepart 2 10592255s
FSも拡大する
e2fsck -f /dev/sda2
resize2fs /dev/sda2
こうすると:
The filesystem on /dev/sda2 is now 1048576 (4k) blocks long.
1048576*4096 = 4294967296Byte = 4GiB!想定通り
sda3再作成
最後にsda6の内容をsda2直下に移す
まずsda3を作り直す
fdisk /dev/sda
n
3
10592256
69926911
こうするとsda2の末尾~sda6の先頭の位置にsda3が再作成される
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System
/dev/sda2 2203648 10592255 8388608 4G Linux filesystem
/dev/sda3 10592256 69926911 59334656 28.3G Linux filesystem
/dev/sda4 271253504 539688959 268435456 128G Linux filesystem
/dev/sda5 539688960 976771071 437082112 208.4G Linux filesystem
/dev/sda6 69926912 137035775 67108864 32G Linux filesystem
ただしsda3の容量はsda6のそれよりも小さくなってしまうので、sda6のFSを16GBまで縮める
ここ最初からsda6をsda4にもっと近づけておけばよかった
e2fsck -f /dev/sda6
resize2fs /dev/sda6 16G
次にsda6のパーティションサイズを20GBまで落とす 20GiB = 21474836480Byte = 41943040セクタ
sda6の開始位置は69926912だから、69926912 + 41943040 = 111869952セクタ まで縮めればいい
parted /dev/sda
resizepart 6 111869952s
fsを最大まで拡大する
e2fsck -f /dev/sda6
resize2fs /dev/sda6
すると:
The filesystem on /dev/sda6 is now 5242880 (4k) blocks long.
5242880 * 4096 = 21474836480Byte = 20GB
良さそう
sda6をsda3にコピー、FS拡大
最後!改めて整理しよう
今こう:
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System
/dev/sda2 2203648 10592255 8388608 4G Linux filesystem
/dev/sda3 10592256 69926911 59334656 28.3G Linux filesystem
/dev/sda4 271253504 539688959 268435456 128G Linux filesystem
/dev/sda5 539688960 976771071 437082112 208.4G Linux filesystem
/dev/sda6 69926912 111869952 41943041 20G Linux filesystem
sda6に本物が入っているんで、これをsda3にコピーすればいい
dd if=/dev/sda6 of=/dev/sda3 bs=16M
多分大丈夫、じゃあsda6を消そう
fdisk /dev/sda
d
6
w
さらにsda3を拡大
parted /dev/sda
resizepart 3 271253503s
FSを修正
e2fsck -f /dev/sda3
resize2fs /dev/sda3
解決
いけた!!
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System
/dev/sda2 2203648 10592255 8388608 4G Linux filesystem
/dev/sda3 10592256 271253503 260661248 124.3G Linux filesystem
/dev/sda4 271253504 539688959 268435456 128G Linux filesystem
/dev/sda5 539688960 976771071 437082112 208.4G Linux filesystem
/boot
は?
% df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sda2 3971616 264360 3481160 8% /boot
...
逼迫してなさそうですね!
apt update
apt upgrade
通る!
% uname -a
Linux setsuna 5.15.0-105-generic #115-Ubuntu SMP Mon Apr 15 09:52:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
おっけーー!!!あーーあぶねえあぶねえ