Hyper-Vで使用している仮想マシン(CentOS7)で/dev/mapper/centos-rootの空き容量が無くなったため拡張した話

Hyper-V上でLinux(CentOS7)の仮想サーバー上でOTRSを動かしていましたが、突然アクセスできなくなってしまいました。
原因を調べたところ、サーバー上の/dev/mapper/centos-rootの使用率が100%になっていたため、こちらを拡張したところ元通りに動かすことができましたので、このディスクの拡張作業について備忘録も兼ねてメモしたいと思います

以下のサイトを参考にしました。
LVMで新たにディスクを追加して既存のLVを拡張する
partedコマンドでディスクを切る時の備忘録的な
Linuxディスク関連コマンドまとめ
CentOS7で仮想Disk拡張後のLVM論理ボリューム拡張設定

まずはHyper-Vマネージャーで以下手順で対象のサーバのディスクを拡張します
  1. 対象の仮想マシンをシャットダウンし、右側「操作」メニュー中の「ディスクの編集」を押します。
    Hyper-Vマネージャー上でのディスク容量拡張設定その1
  2. 拡張するディスクを選択し、「操作の選択」-> 拡張(E) -> 次へ進みます。
    Hyper-Vマネージャー上でのディスク容量拡張設定その2
  3. 新しいサイズ(S)に任意のサイズを入力 -> 完了(F)を押します。
    Hyper-Vマネージャー上でのディスク容量拡張設定その3
  4. 対象のマシンを右クリック -> 設定 -> ハードドライブを選択 -> ハードディスクのところで検査(I)を押します。
  5. 最大ディスクサイズ(M)の部分が更新されていれば成功です。
    Hyper-Vマネージャー上でのディスク容量拡張設定その4
次にOS上のディスク及びボリューム拡張を行います

lsblkコマンドでディスク構成を確認します。


$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0               2:0    1    4K  0 disk
sda               8:0    0  150G  0 disk
├sda1            8:1    0  500M  0 part /boot
└sda2            8:2    0 39.5G  0 part
  ├centos-root 253:0    0 38.7G  0 lvm  /
  └centos-swap 253:1    0  820M  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom
/dev/sdaに先ほどHyper-vマネージャーで行った拡張が反映されています。

次にfdiskを使用して空いた部分のパーティション拡張を行います。


$ 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: 161.1 GB, 161061273600 bytes, 314572800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x00096bdc

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

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

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

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

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

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

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

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

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

コマンド (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)
ディスクを同期しています。
$ reboot

再起動します。


$ reboot

再度lsblkでディスク構成の状態を確認します。


$ lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0               2:0    1     4K  0 disk
sda               8:0    0   150G  0 disk
├sda1            8:1    0   500M  0 part /boot
└sda2            8:2    0 149.5G  0 part
  ├centos-root 253:0    0  38.7G  0 lvm  /
  └centos-swap 253:1    0   820M  0 lvm  [SWAP]
sr0              11:0    1  1024M  0 rom
sda2の容量が拡張されています。

次に、lvdisplayで拡張対象のボリュームを特定します。


$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                jdWlNT-JUfL-GAtK-L7iK-iqYs-xDBx-AvWv9l
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-08-04 08:43:11 +0900
  LV Status              available
  # open                 2
  LV Size                820.00 MiB
  Current LE             205
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                lYcIj2-o0DK-5YeR-nSB6-UCVu-DbFD-ziofUo
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-08-04 08:43:12 +0900
  LV Status              available
  # open                 1
  LV Size                <38.71 GiB
  Current LE             9909
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
LV NameがrootのLV Size<38.71GiBの方が対象です。

次に、lvextendコマンドで論理ボリューム(LV)を拡張します。以下の例は空き容量を古に拡張した場合の例です。


$ lvextend -l +100%FREE /dev/centos/root
  Size of logical volume centos/root changed from <38.71 GiB (9909 extents) to <148.71 GiB (38069 extents).
  Logical volume centos/root successfully resized.
$ lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0               2:0    1     4K  0 disk
sda               8:0    0   150G  0 disk
├sda1            8:1    0   500M  0 part /boot
└sda2            8:2    0 149.5G  0 part
  ├centos-root 253:0    0 148.7G  0 lvm  /
  └centos-swap 253:1    0   820M  0 lvm  [SWAP]
sr0              11:0    1  1024M  0 rom

df -hでディスクの状態を確認します。この時点ではまだファイルシステムが拡張されていません。


$ df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    39G   33G  6.4G   84% /
devtmpfs                  1.9G     0  1.9G    0% /dev
tmpfs                     1.9G     0  1.9G    0% /dev/shm
tmpfs                     1.9G   17M  1.9G    1% /run
tmpfs                     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                 497M  301M  197M   61% /boot
tmpfs                     379M     0  379M    0% /run/user/1000
tmpfs                     379M     0  379M    0% /run/user/1001

最後にxfs_growfsコマンドで拡張したLVを対象にファイルシステムを拡張します。


$ xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256    agcount=24, agsize=436992 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=10146816, 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 10146816 to 38982656

再度df -hコマンドで、ファイルシステムが拡張されたことを確認します。


$ df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root   149G   33G  117G   22% /
devtmpfs                  1.9G     0  1.9G    0% /dev
tmpfs                     1.9G     0  1.9G    0% /dev/shm
tmpfs                     1.9G   17M  1.9G    1% /run
tmpfs                     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                 497M  301M  197M   61% /boot
tmpfs                     379M     0  379M    0% /run/user/1000
tmpfs                     379M     0  379M    0% /run/user/1001







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です