LVMの拡大・縮小
▼大変参考になったサイト
http://memo.blogdns.net/lvm.html
LVMとは
Logical Volume Manager
ストレージ管理に柔軟性を持たせるための仕組み
- 物理ボリューム(physical volume; pv)
- いわゆるパーティションを指す(/dev/hdb1や/dev/sda1)
- ボリュームグループ(volume group; vg)
- 1個以上の物理ボリュームから構成されるストレージ領域の集合
- 論理ボリューム(logical volume; lv)
- ボリュームグループから作成される、ファイルシステムにマウント可能な領域
現在のHDD容量
$ df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00 10157368 439720 9193360 5% /
/dev/sda1 124427 15158 102845 13% /boot
tmpfs 1874700 0 1874700 0% /dev/shm
/dev/mapper/VolGroup00-LogVol01 5078656 2389056 2427456 50% /usr
/dev/mapper/VolGroup00-LogVol02 10157368 8728788 904292 91% /var
/dev/mapper/VolGroup00-LogVol03 50309320 1486512 46225944 4% /home
やりたいこと
/var の使用容量が日々増え続けているため、/var の割当容量を増やす
(/var には、MySQLのデータとバイナリログが保存されているので、今後もどんどん増えると予想される)
# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.56 GB
PE Size 32.00 MB
Total PE 2386
Alloc PE / Size 2385 / 74.53 GB
Free PE / Size 1 / 32.00 MB
VG UUID XlRTUo-25nM-bfAF-rEzV-op0i-O73P-6pYT2u
ひょえ〜っ、Free PE がたったの32MB
→空き容量を確保するには、/varにマウントされているLogVol02以外のLVを縮小しなければならない
→/home(LogVol03) を縮小し、/var を拡大する
Apache停止&データバックアップ
# /usr/local/apache2/bin/apachctl stop
# cd /home/username
# tar cpf /tmp/home-username-snapshot.tar .
MySQL停止&データバックアップ
# mysql
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+------------------+-----------+--------------+------------------+
| hostname-bin.008 | 554028919 | | |
+------------------+-----------+--------------+------------------+
mysql> quit
# mysqladmin shutdown
# cd /var/lib/mysql
# tar cpf /tmp/mysql-snapshot.tar --exclude 'hostname-bin*' .
※home-username-snapshot.tar,mysql-snapshot.tarは、ローカル側にFTP転送して保存
/home を縮小
サイズ縮小は、まず中身のファイルシステムを先に小さくし、その後、入れ物であるLVを小さくする。
ファイルシステムがext3の場合は、
アンマウント→ファイルシステム縮小→LV縮小→再マウント の手順となる
# umount /home
# e2fsck -f /dev/mapper/VolGroup00-LogVol03
e2fsck 1.38 (30-Jun-2005)
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/mapper/VolGroup00-LogVol03: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/VolGroup00-LogVol03: 126300/12996192 files (1.0% non-contiguous), 778619/12984320 blocks
# resize2fs /dev/mapper/VolGroup00-LogVol03 15G
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/mapper/VolGroup00-LogVol03 to 3932160 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00-LogVol03 is now 3932160 blocks long.
# lvreduce -L 15G /dev/mapper/VolGroup00-LogVol03
Volume group mapper doesn't exist
↑ /dev/ボリュームグループ名/論理ボリューム名 で指定しなければならないようだ
# lvreduce -L 15G /dev/VolGroup00/LogVol03
WARNING: Reducing active logical volume to 15.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol03? [y/n]: y
Reducing logical volume LogVol03 to 15.00 GB
Logical volume LogVol03 successfully resized
# e2fsck -f /dev/mapper/VolGroup00-LogVol03
e2fsck 1.38 (30-Jun-2005)
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/mapper/VolGroup00-LogVol03: 126300/3928320 files (1.0% non-contiguous), 491577/3932160 blocks
# mount /dev/mapper/VolGroup00-LogVol03 /home
空き容量が増えたか確認
# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.56 GB
PE Size 32.00 MB
Total PE 2386
Alloc PE / Size 1280 / 40.00 GB
Free PE / Size 1106 / 34.56 GB
VG UUID XlRTUo-25nM-bfAF-rEzV-op0i-O73P-6pYT2u
うーん。使用容量が若干減っている。。。大丈夫かな
# df /home
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol03 15236560 1474228 12975900 11% /home
/var を拡張
Fedora Core 3 以降では ext2/ext3 でもマウントしたままファイルシステムを拡大出来るようになった。
サイズの拡大は、まず入れ物であるLVを先に大きくし、その後、中身のファイルシステムを大きくする。
LV拡大→ファイルシステム拡大 の手順となる
Fedora Core 5 まではコマンド ext2online を、 Fedora Core 6 と Fedora 7 以降は
# lvextend -L 30G /dev/VolGroup00/LogVol02
Extending logical volume LogVol02 to 30.00 GB
Logical volume LogVol02 successfully resized
# ext2online /dev/mapper/VolGroup00-LogVol02
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
コマンド resize2fs を使用する。
※ext2online で可能なのは拡大だけで、縮小は出来ない。
うーん。使用容量が若干増えている。。。なんで?
# df /var
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol02 30472188 8733856 20165724 31% /var
再度LVM確認
# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.56 GB
PE Size 32.00 MB
Total PE 2386
Alloc PE / Size 1920 / 60.00 GB
Free PE / Size 466 / 14.56 GB
VG UUID XlRTUo-25nM-bfAF-rEzV-op0i-O73P-6pYT2u
MySQL起動
# /usr/bin/mysqld_safe --log &