LoginSignup
2
2

More than 3 years have passed since last update.

CentOS7の/bootパーテーションの容量拡張方法(resize2fs)

Posted at

はじめに

yum upgradeの際に、/bootパーテーションの容量が足りず、アップグレードが失敗た。回避策として、古いカーネルを削除して容量を空ける方法もあるが、対処療法の為根本解決にはならない。

調べても/bootパーテーションを拡張する方法があまりちゃんと載ってなかったので、まとめてみた。
なお、今回ファイルシステムはext3を前提とする。参考にしたサイトはxfs前提。
ext3の場合は、resize2fsを使う

概要

ファイルシステムは、一つのディスク(/dev/sda)に全て収まっている状態とする。

/boot(/dev/sda1) 
swap(/dev/sda2)
LVM(/dev/sda3)

の構成を前提としている。ここで、別で作成した論理パーテーション(/dev/sdbとする)をLVMに追加し、既に既存であるLVMのパーテション(/dev/sda3)のデータをたらしく追加したLVMのパーテーション(/dev/sdb1)に移す。

ここで、/dev/sda3を既存のLVMから外すと、既存ディスクには大きく空きサイズが確保される事になる。あとは、パーテーションを作成し直して、resize2fsでパーテーションサイズを拡張する事で、無事/bootパーテーションが拡張される。

環境

  • CentOS
  • ext3 (ファイルシステム)

参考

状況

/bootパーテーションが不足してエラーになる場合、以下のようなメッセージが表示される。

$ sudo yum upgrade

Transaction Check Error:
  installing package grub-1:0.97-99.el6.x86_64 needs 4KB on the /boot filesystem
  installing package kernel-2.6.32-696.el6.x86_64 needs 29MB on the /boot filesystem

Error Summary

Disk Requirements:
  At least XXMB more space needed on the /boot filesystem.

手順

  • 拡張ディスクを追加する
  • 拡張ディスクにLVMパーテションを作成する
  • 物理ボリュームを追加した拡張ディスクに作成する
  • ボリュームグループ名を確認し、作成した物理ボリュームを加える
  • 既存の物理ボリュームら新規に作成した物理ボリュームにデータを移動する
  • 既存の物理ボリュームをボリュームグループから削除する
  • 既存の物理ボリュームのパーテションを再作成しつつ拡張する
  • 再起動し拡張したパーテーションを認識させる
  • 再作成した/bootパーテションをresize2fsで拡張する

拡張ディスクの追加は環境によりまちまちなので、割愛。今回自分はVagrant(VirtualPC)環境でディスクを追加した。(Vagrantでディスクの新規追加

追加したディスクは/dev/sdbとして進める。

$ sudo fdisk -l   # ディスクの追加状況の確認

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b1774

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4507647     2048000   82  Linux swap / Solaris
/dev/sda3         4507648    81919999    38706176   8e  Linux LVM

Disk /dev/mapper/rootvg01-lv01: 39.6 GB, 39631978496 bytes, 77406208 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

追加ディスク(/dev/sdb)上にパーテーションを作成する。この時、パーテーションのサイズは、移行元のパーテーション(今回は/dev/sda3)より大きくないといけない。

sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

コマンド (m でヘルプ): n                 #パーテーション領域の作成

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p                 #プライマリパーティション

パーティション番号 (1-4, default 1):          #パーテーション番号

最初 sector (2048-104857599, 初期値 2048):
初期値 2048 を使います

Last sector, +sectors or +size{K,M,G} (2048-104857599, 初期値 104857599):
初期値 104857599 を使います
Partition 1 of type Linux and of size 50 GiB is set

コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): 8e      #パーテーションの種類はLVM
Changed type of partition 'Linux' to 'Linux LVM'  

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

物理ボリュームを作成

$ sudo pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

ボリュームグループ名を確認し、作成した物理ボリュームをボリュームグループに加える

$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
rootvg01 1 2 0 wz--n- 29.96g 44.00m

$ sudo vgextend rootvg01 /dev/sdb1
Volume group "rootvg01" successfully extended

既存の物理ボリューム(/dev/sda3)から新規に作成した物理ボリューム(/dev/sdb1)にデータを移動し、既存の物理ボリュームはボリュームグループから外す。

$ sudo pvmove /dev/sda3 /dev/sdb1
/dev/sda2: Moved: 0.1%
/dev/sda2: Moved: 8.1%
/dev/sda2: Moved: 32.6%
/dev/sda2: Moved: 78.2%
/dev/sda2: Moved: 100.0%

$ sudo vgreduce rootvg01 /dev/sda3
Removed "/dev/sda3" from volume group "rootvg01"

既存の物理ボリュームのパーテションを再作成する。
まずは、/bootのみにする。

$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

コマンド (m でヘルプ): p

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b1774

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4507647     2048000   82  Linux swap / Solaris
/dev/sda3         4507648    81919999    38706176   8e  Linux LVM

コマンド (m でヘルプ): d
パーティション番号 (1-3, default 3):
Partition 3 is deleted

コマンド (m でヘルプ): d
パーティション番号 (1,2, default 2):
Partition 2 is deleted

コマンド (m でヘルプ): p

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b1774

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      411647      204800   83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

次に/bootパーテーションをアンマウントし、/bootパーテーションとSWAPを再作成します。この時、/bootは拡張したいサイズに変更します。

$ sudo fdisk /dev/sda
 ・
 ・
コマンド (m でヘルプ): p

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b1774

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      411647      204800   83  Linux

コマンド (m でヘルプ): d                     # 既存パーテーションは削除
Selected partition 1
Partition 1 is deleted
 
コマンド (m でヘルプ): n              # 新規に作成する

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p            # プライマリーパーテーション

パーティション番号 (1-4, default 1):
最初 sector (2048-209715199, 初期値 2048):  # 開始位置は変えない
初期値 2048 を使います

                                      # ここがポイント
Last sector, +sectors or +size{K,M,G} (2048-209715199, 初期値 209715199): +1000M
Partition 1 of type Linux and of size 1000 MiB is set      # 確保したいサイズを指定
                                      # 今回は1G(1000M)

コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
パーティション番号 (1-4, default 1):
最初 sector (2048-209715199, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-209715199, 初期値 209715199): +1000M
Partition 1 of type Linux and of size 1000 MiB is set

コマンド (m でヘルプ): n              # SWAPも作成する

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p            # プライマリパーティション

パーティション番号 (2-4, default 2):
最初 sector (2050048-209715199, 初期値 2050048):
初期値 2050048 を使います
                                        # swap は 1000M
Last sector, +sectors or +size{K,M,G} (2050048-209715199, 初期値 209715199):+2048000
Partition 2 of type Linux and of size 1000 MiB is set

コマンド (m でヘルプ): t                       # パーテーション種別を変更する

パーティション番号 (1-3, default 3): 2
Hex code (type L to list all codes): 82     # Liux swap に変更する。
Changed type of partition 'Linux' to 'Linux swap / Solaris'

コマンド (m でヘルプ): p

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b1774

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4507647     2048000   8e  Linux LVM

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

ここで再起動する。拡張したパーテーションを認識させるには、再起動が必要。
再起動が終わったら、/bootパーテションをresize2fsで拡張する。

$ sudo e2fsck -f /dev/sda1   # 先 e2fsck での整合性チェックが必要
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: 79976/1175040 files (28% non-contiguous), 523701/4692744 blocks

$ resize2fs /dev/sda1
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/sda1 to 9935604 (4k) blocks.
The filesystem on /dev/sda1 is now 9935604 blocks long.

以上、/bootパーテーションの拡張方法でした。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2