fdiskコマンドを使ってrootパーティションを拡張

初期構成

環境

Virtual Boxを使用し、仮想マシンとして構築
OSは「Alma Linux 8.7」

リソース
CPU 1 core
メモリ 2048 MB
HDD 20 GB
パーティション
/dev/sda1 1 GiB boot
/dev/sda2 19 GiB LVM

LVMのボリュームグループ名は、「Vol00」としている。

# fdisk -l
ディスク /dev/sda: 20 GiB, 21474836480 バイト, 41943040 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトディスクラベルのタイプ: dos
ディスク識別子: 0x0486444d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 41940991 39841792    19G 8e Linux LVM

ディスク /dev/mapper/Vol00-root: 17 GiB, 18245222400 バイト, 35635200 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

ディスク /dev/mapper/Vol00-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

最終構成

パーティション
/dev/sda1 1 GiB boot
/dev/sda2 19 GiB LVM
/dev/sda3(New) 追加容量(10 GiB) LVM
LVM構成
/dev/sda2 Vol00 root 17 GiB
/dev/sda2 Vol00 swap 2 GiB
/dev/sda3(New) Vol00 root 10 GiB

拡張していく

Virtual Box上でvdiファイルを「20 GB」→「30 GB」へ変更

パーティションを追加

# fdisk /dev/sda

fdisk (util-linux 2.32.1) へようこそ。ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。書き込みコマンドを使用する際は、注意して実行してください。

コマンド (m でヘルプ): n
パーティションタイプ   p   基本パーティション (2 プライマリ, 0 拡張, 2 空き)
   e   拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (3,4, 既定値 3): 3
最初のセクタ (41940992-62914559, 既定値 41940992): 
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (41940992-62914559, 既定値 62914559): 

新しいパーティション 3 をタイプ Linux、サイズ 10 GiB で作成しました。

追加したパーティションのタイプを「LVM」へ変更

コマンド (m でヘルプ): t
パーティション番号 (1-3, 既定値 3): 3
16 進数コード (L で利用可能なコードを一覧表示します): L

 024  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  隠し NTFS WinRE 82  Linux スワップ  c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  隠し OS/2 また  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 拡張領域  c7  Syrinx         
 5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ   
 6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ 
8  AIX             4e  QNX4.x 第2パー  8e  Linux LVM       df  BootIt         
 9  AIX 起動可能    4f  QNX4.x 第3パー  93  Amoeba          e1  DOS access     
 a  OS/2 ブートマネ 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad ハ ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC  
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f4  SpeedStor      
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      f2  DOS セカンダリ 
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fc  VMware VMKCORE 
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fd  Linux raid 自動
1c  隠し W95 FAT32  75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  隠し W95 FAT16  80  古い Minix      be  Solaris ブート  ff  BBT            

16 進数コード (L で利用可能なコードを一覧表示します): 8e

パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。
コマンド (m でヘルプ): w
パーティション情報が変更されました。ディスクを同期しています。
パーティションの確認
# fdisk -l
ディスク /dev/sda: 30 GiB, 32212254720 バイト, 62914560 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトディスクラベルのタイプ: dos
ディスク識別子: 0x0486444d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ/
dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 41940991 39841792    19G 8e Linux LVM
/dev/sda3       41940992 62914559 20973568    10G 8e Linux LVM

ディスク /dev/mapper/Vol00-root: 17 GiB, 18245222400 バイト, 35635200 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

ディスク /dev/mapper/Vol00-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

物理ボリュームの作成

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.
物理ボリュームの確認
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               Vol00
  PV Size               <19.00 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               1
  Allocated PE          4862
  PV UUID               sU2vQa-SoUU-Cd7t-m7TR-ZpYW-6u2Y-8hB9eA
   
  "/dev/sda3" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               RRcPqB-nlx2-iCEK-B6oX-VVRm-QqDY-AuqKi3

HDDの追加容量が「/dev/sda3」として追加されたことを確認できた。

ボリュームグループの拡張

# vgextend Vol00 /dev/sda3
  Volume group "Vol00" successfully extended
物理ボリュームの確認
# vgdisplay
  --- Volume group ---
  VG Name               Vol00
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <29.00 GiB
  PE Size               4.00 MiB
  Total PE              7423
  Alloc PE / Size       4862 / 18.99 GiB
  Free  PE / Size       2561 / 10.00 GiB
  VG UUID               X7qL1F-MtQy-yFh9-KnMY-lD3q-vjFp-25eeXw

Free領域として「10GiB」が追加されたことが確認できた。

論理ボリュームの拡張

論理ボリュームのパスを確認
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/Vol00/root
  LV Name                root
  VG Name                Vol00
  LV UUID                V7rXfc-Ms9B-BA3Q-KIAb-fH9I-H8yd-Nd0Zd9
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:40 +0900
  LV Status              available
  # open                 1
  LV Size                16.99 GiB
  Current LE             4350
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/Vol00/swap
  LV Name                swap
  VG Name                Vol00
  LV UUID                eMyjAZ-I0R1-2573-7nNv-FX77-I3jW-bOitZt
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:41 +0900
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

今回、拡張するのは「/dev/Vol00/root」

論理ボリュームを拡張
# lvextend -l +100%FREE /dev/Vol00/root
  Size of logical volume Vol00/root changed from 16.99 GiB (4350 extents) to <27.00 GiB (6911 extents).
  Logical volume Vol00/root successfully resized.
論理ボリュームの確認
# lvdisplay /dev/Vol00/root
  --- Logical volume ---
  LV Path                /dev/Vol00/root
  LV Name                root
  VG Name                Vol00
  LV UUID                V7rXfc-Ms9B-BA3Q-KIAb-fH9I-H8yd-Nd0Zd9
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:40 +0900
  LV Status              available
  # open                 1
  LV Size                <27.00 GiB
  Current LE             6911
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

ルートファイルシステムの拡張

今回、ルートファイルシステムは「xfs」なので「xfs_growfs」コマンドを使う。

# xfs_growfs /dev/Vol00/root
meta-data=/dev/mapper/Vol00-root isize=512    agcount=4, agsize=1113600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=4454400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4454400 to 7076864

最終確認

# df -h
ファイルシス           サイズ  使用  残り 使用% マウント位置
devtmpfs                 968M     0  968M    0% /dev
tmpfs                    987M     0  987M    0% /dev/shm
tmpfs                    987M  8.5M  978M    1% /run
tmpfs                    987M     0  987M    0% /sys/fs/cgroup
/dev/mapper/Vol00-root    27G  2.0G   26G    8% /
/dev/sda1               1014M  153M  862M   16% /boot
tmpfs                    198M     0  198M    0% /run/user/0