VM拡張

先代マシン(Let's note CF-SX2)のころから使っていたVMWare上のCentOS7なんだけど、とにかくディスク容量が足りない!
最初に構築したときにケチって20GBで構築してたのが悪いんだけど(だって、CF-SX2のディスク容量って128GBしかなかったし・・・)、ここ最近、ちょっとベンチマークっぽいものをしようとすると、すぐにディスク容量の限界に達してしまい、ほんとに小規模なスケールでの測定しかできなくて、もにょってたわけですよ。
それに、これからMySQLを突っ込んだり、MongoDBの新バージョンを突っ込んだり、Groongaを入れたり等々考えていて、いちいち残ディスク容量を気にするのが憂鬱になってきた。

ということでディスク容量の拡大をすることに。
環境は

今、動作しているCentOS 7をシャットダウンして、VMイメージ(20GB)のバックアップをとっておく。
USBメモリへのコピーなので少々時間がかかるが・・・その間にラーメンデータベースのレビューへのコメント対応をしておくw

VMWare Player上での作業

まず、VMWare仮想マシン編集画面を開いて、ディスクの拡張を選択。

20GBから50GBにばーんと拡張。

暫く待つ・・・

まあ、思い切って拡張はしたけど、これ、バックアップとるのも大変だよな・・・。
バックアップ用のストレージを買っておかねば。

と、ディスク拡張が無事に終了。あとはゲストOS上での作業が残ってる。

編集画面を見ると、ハードディスクも50GBにきちんと拡張されてますな。

CentOS7 上での作業

ということでCentOS 7を起動。

ディスクは追加したけど、まだパーティションとか設定してないから、この時点では元のディスク容量のまま。

[root@localhost ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    18G   14G  3.6G   80% /
devtmpfs                  2.4G     0  2.4G    0% /dev
tmpfs                     2.4G  610M  1.8G   26% /dev/shm
tmpfs                     2.4G  9.0M  2.4G    1% /run
tmpfs                     2.4G     0  2.4G    0% /sys/fs/cgroup
/dev/sda1                 497M  119M  379M   24% /boot
[root@localhost ~]# 

fdiskで参照すると、こうなっている。

[root@localhost ~]# fdisk -l

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

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM

Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


Disk /dev/mapper/centos-root: 18.8 GB, 18798870528 bytes, 36716544 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

[root@localhost ~]# 

/dev/sdaが50GB超になってますな。

で、fdiskで/dev/sdaを編集。

[root@localhost ~]# 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: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x00066561

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM

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

新しい領域を作成する。面倒なので全部デフォルトで。

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

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

一応、確認してみる。

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

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

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM
/dev/sda3        41943040   104857599    31457280   83  Linux

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

30GBの領域を/dev/sda3に割り当てましたよ。
ファイルシステムLinux VMに変更する。

コマンド (m でヘルプ): t
パーティション番号 (1-3, default 3):  
Hex code (type L to list all codes): L

 0  空              24  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 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 隠し C: ド 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 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX ブート可能  4f  QNX4.x 3rd part 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 ハ eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f2  DOS セカンダリ 
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      fb  VMware VMFS    
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fd  Linux raid 自動
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fe  LANstep        
1c  隠し W95 FAT32  75  PC/IX           be  Solaris ブート  ff  BBT            
1e  隠し W95 FAT16  80  古い Minix     
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

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

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

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM
/dev/sda3        41943040   104857599    31457280   8e  Linux LVM

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

で、変更を反映する。

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

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

WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー状態です.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
ディスクを同期しています。
[root@localhost ~]# 

警告でちゃった。再ブートすると反映されるらしい。
ということで再ブートして確認・・・

まだ、dfで見ても認識はされてませんがな。

[root@localhost ~]# df
ファイルシス            1K-ブロック     使用  使用可 使用% マウント位置
/dev/mapper/centos-root    18348032 14616364 3731668   80% /
devtmpfs                    2445076        0 2445076    0% /dev
tmpfs                       2454364   624168 1830196   26% /dev/shm
tmpfs                       2454364     9184 2445180    1% /run
tmpfs                       2454364        0 2454364    0% /sys/fs/cgroup
/dev/sda1                    508588   121304  387284   24% /boot
[root@localhost ~]# 

VGにさっき追加した/dev/sda3を追加する。

[root@localhost ~]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- 19.51g    0 
[root@localhost ~]# vgextend centos /dev/sda3
  Physical volume "/dev/sda3" successfully created
  Volume group "centos" successfully extended
[root@localhost ~]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   2   2   0 wz--n- 49.50g 30.00g
[root@localhost ~]# 
[root@localhost ~]# df
ファイルシス            1K-ブロック     使用  使用可 使用% マウント位置
/dev/mapper/centos-root    18348032 14615992 3732040   80% /
devtmpfs                    2445076        0 2445076    0% /dev
tmpfs                       2454364   624156 1830208   26% /dev/shm
tmpfs                       2454364     9148 2445216    1% /run
tmpfs                       2454364        0 2454364    0% /sys/fs/cgroup
/dev/sda1                    508588   121304  387284   24% /boot
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
  Extending logical volume root to 47.50 GiB
  Logical volume root successfully resized
[root@localhost ~]#

CentOS7からはデフォルトファイルシステムがxfsなので、resize2fsだと失敗しちゃうので、xfs_growfsというコマンドを使うらしい。

[root@localhost ~]# xfs_growfs /dev/mapper/centos-root 
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=1147392 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=4589568, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               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 4589568 to 12452864
[root@localhost ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    48G   14G   34G   30% /
devtmpfs                  2.4G     0  2.4G    0% /dev
tmpfs                     2.4G  610M  1.8G   26% /dev/shm
tmpfs                     2.4G  9.0M  2.4G    1% /run
tmpfs                     2.4G     0  2.4G    0% /sys/fs/cgroup
/dev/sda1                 497M  119M  379M   24% /boot
[root@localhost ~]# 

/ パーティション以下が34GBに拡張できました。
これで、当分はディスク容量不足に悩むこともないかな。