【AWS・CentOS】既存のLVMパーティションのサイズを拡張する手順

 

今回はAWSで試しましたが、AWS環境ではなく物理環境でも仮想環境でも同じ手順でディスクを拡張できます。

DBサーバーやアプリサーバーでよくあるパターンです。

df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   14G  9.4G  3.6G  73% / ← ディスクサイズがたったの14GBしかありません。
tmpfs                      1.9G     0  1.9G   0% /dev/shm
/dev/xvda1                 477M   47M  405M  11% /boot
/dev/xvda3                  34G   48M   32G   1% /data ← /data はサイズが大きいけど全く使われていません。

 

 

やりたいこと

  • 既存の/data パーティションが全く使われていない。
  • しかも /(ルート) のディスク容量が足りない。
  • そこで使っていない /data を LVM で作成した /(ルート) に統合したい。
  • ただし既存の環境には影響を及ぼさないようにしたい。
  • 面倒なのでレスキューモードを使いたくない。(→そもそも AWS でコンソールがないためレスキューモードを使えない)

 

# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   14G  9.4G  3.6G  73% /
tmpfs                      1.9G     0  1.9G   0% /dev/shm
/dev/xvda1                 477M   47M  405M  11% /boot
/dev/xvda3                  34G   48M   32G   1% /data ← せっかく作ったのに全く使われていない /data です。このパーティションを削除して LVM に変換して「/」に統合します。

 

手順

初めに全体の手順を確認します。

  1. 作業前にスナップショットを取得する
  2. 不要なパーティションを削除する
  3. 削除した領域で新規パーティションを作成してタイプを「LVM」にする
  4. LVM コマンドで新規パーティション(削除したパーティション)をルートパーティションに追加する
  5. ルートパーティションを拡張して領域を増やす

 

作業前にスナップショットを取得する

作業前に念のためにスナップショットを取得しておきます。

AWS EC2 インスタンスの場合はインスタンスのスナップショットではなく、ボリュームごとのスナップショットになります。

AWSの管理画面にログインし、インスタンスよりボリュームIDを特定して個別にスナップショットを取得します。

 

 

不要なパーティションを削除する

不要なパーティション「/data」を削除します。

 

fdisk コマンドで確認します。

fdisk /dev/xvda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p ← パーティションを確認します。

Disk /dev/xvda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002e2c8

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2              64        2089    16264192   8e  Linux LVM ← / 領域
/dev/xvda3            2089        6527    35650911+  83  Linux   ← /data 領域

Command (m for help):

 

 

/dev/xvda3 を削除します。

「Command (m for help):」に「d」を入力して、その後にどのパーティションを削除するのか指定します。

Command (m for help): d ← 削除する

 

Partition number (1 - 3): 3 ← 3番目のパーティション(xvda3)なので「3」を選択します。

 

Partition 3 has been deleted.

 

 

削除されたことを確認します。

Command (m for help): p ← パーティションを確認します。

Disk /dev/xvda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003e2c3

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2              64        2089    16264192   8e  Linux LVM

Command (m for help):

 

削除した領域で新規パーティションを作成してタイプを「LVM」にする

新規パーティションを作成します。

領域は余っている領域をすべて利用したいので、数値を入力せずに空エンターキーを押下します。

※「xx」は環境により異なります。

Command (m for help): n ← n を入力して新規パーティションを作成します。

Command action
   e   extended
   p   primary partition (1-4)
p ← p を入力してプライマリ・パーティション(基本領域)で作成します。

 

First cylinder (xx-xx, default xx): [Enter] ← 何も入力せずに空エンターキー押下
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (xx-xx, default xx): [Enter] ← 何も入力せずに空エンターキー押下
Using default value xx

 

タイプを「LVM」に設定します。

 

Command (m for help): t ← パーティションのタイプを設定します。

Partition number (1-3): 3 ← どのパーティションに対して設定したいのか指定します。(今回はxvda3なので3を入力します)

Hex code (type L to list codes): 8e ← タイプを指定します。Linux LVM に

 

Command (m for help): p

 

Command (m for help): w

 

 

 

LVM コマンドで新規パーティション(削除したパーティション)をルートパーティションに追加する

簡単ですが、LVMの仕組みを図解しました。
LVMの仕組みは下図のように「HDD」→「PV」→「VG」→「LV」→「パーティション」のように「大→小」の手順で作成します。

 

 

新規で作成した領域(/dev/xvda3)に物理ボリューム(PhysicalVolume)を作成します。

# pvcreate /dev/xvda3

 

確認します。

pvdisplay

  "/dev/xvda3" is a new physical volume of "34.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/xvda3
  VG Name
  PV Size               34.00 GiB ← 34GBのディスクができました。
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               t69R1f-QkSu-j2CB-Y59o-DV2C-WYI2-c2ovzB

 

 

ボリュームグループを作成します。

# vgextend VolGroup /dev/xvda3
  Volume group "VolGroup" successfully extended

 

 

ボリュームグループの状態を確認します。

# vgdisplay

 

 

ボリュームグループ内の未割り当て分を全て論理ボリューム /dev/mapper/VolGroup-lv_root に割り当てます。

# lvextend -l +100%FREE /dev/mapper/VolGroup-lv_root

  Size of logical volume VolGroup/lv_root changed from 13.91 GiB (3561 extents) to 47.91 GiB (12264 extents).
  Logical volume lv_root successfully resized.

 

 

OS上はまだ拡張されていません。

df -h
Filesystem                Size   Used  Avail  Use%  Mounted on
/dev/mapper/VolGroup-lv_root  14G    13G   706M   95%  /
tmpfs                     1.9G    76K   1.9G    1%  /dev/shm
/dev/xvda1                477M    72M   380M   16%  /boot

 

 

OSとしては拡張されていませんが、論理ボリュームとしては拡張されていることを確認します。

[root@ip-10-20-254-42 VolGroup]# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2

[root@ip-10-20-254-42 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                UTPDa9-2C6b-S0Yk-npmP-HMOM-ZGs0-TctA1e
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-03-05 19:27:09 +0900
  LV Status              available
  # open                 1
  LV Size                47.91 GiB
  Current LE             12264
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

 

ルートパーティションを拡張してファイルシステムの領域を増やす

 

最後にファイルシステムを拡張します。

ext4 ファイルシステムは resize2fs を使用するとマウントしたままの状態でサイズを大きくすることができます。

# resize2fs /dev/VolGroup/lv_root

※resize2fs コマンドはファイルシステムをリサイズするコマンドです。

 

最後にサイズが増えたことを確認します。

 

df -h
Filesystem                Size   Used  Avail  Use%  Mounted on
/dev/mapper/VolGroup-lv_root  48G    13G   35G    27%  /
tmpfs                     1.9G    76K   1.9G    1%  /dev/shm
/dev/xvda1                477M    72M   380M   16%  /boot

 

 

参考にしたサイト

まったく同じような状況だったので大変参考になりました。

CentOS 6.2でLVMパーティションを拡張した

 

当初はルールを決めて、「データ系は /data のみに保存しましょう。だから /(スラルート)は10GBで構築してください。」と言われていたのに、なぜか /home/test や /var などにデータを保存されてしまい、「スラルートの容量が100%になりました。何とかしてください。」と言われてしまう・・・よくあります(笑)

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。