DRBDでミラーリングしているボリュームのリサイズをしてみました時の備忘録です。
TL;TD
- DRBDで同期しているブロックデバイスはLVMで作ってる
- ファイルシステムはXFSでフォーマット
- DRBDのボリュームをオンラインで拡張してみた
- DRBDのボリュームをオフラインで拡張してみた
環境
項目 | バージョン |
---|---|
OS | CentOS |
DRBD | 9系 |
DRBDボリュームリサイズ
LVMパーティション作成
LVMのパーティションを作成します。
以下の作業は、DRBDで同期しているホスト全てで実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@drbd01 ~]# fdisk /dev/sdc (snip) コマンド (m でヘルプ): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 最初 sector (2048-10485759, 初期値 2048): [Enter] 初期値 2048 を使います Last sector, +sectors or +size{K,M,G} (2048-10485759, 初期値 10485759): [Enter] 初期値 10485759 を使います Partition 1 of type Linux and of size 5 GiB is set コマンド (m でヘルプ): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。 |
DRBDボリューム状態確認
/drbd
に5GBの /dev/drbd0
をマウントしています。
5GBを10GBに拡張します。
1 2 3 4 5 6 7 8 9 10 11 |
[root@drbd01 ~]# df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root 14034944 1219816 12815128 9% / devtmpfs 929404 0 929404 0% /dev tmpfs 941280 0 941280 0% /dev/shm tmpfs 941280 8988 932292 1% /run tmpfs 941280 0 941280 0% /sys/fs/cgroup /dev/sda1 1038336 189832 848504 19% /boot tmpfs 188256 0 188256 0% /run/user/0 /dev/drbd0 5228348 32992 5195356 1% /drbd |
オンライン拡張
LVMを拡張します。
ここでは VolGroup01
というボリュームを5GB分拡張します。
1 2 3 4 5 6 7 8 9 |
[root@drbd01 ~]# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created. [root@drbd01 ~]# vgextend VolGroup01 /dev/sdc1 Volume group "VolGroup01" successfully extended [root@drbd01 ~]# lvextend -L +4.99GB /dev/VolGroup01/VolGroup01 Rounding size to boundary between physical extents: 4.99 GiB. Size of logical volume VolGroup01/VolGroup01 changed from <5.00 GiB (1279 extents) to <9.99 GiB (2557 extents). Logical volume VolGroup01/VolGroup01 successfully resized. |
DRBDのボリュームリサイズをします。
プライマリ側
で以下のコマンドを実行します。
1 2 3 |
[root@drbd01 ~]# drbdadm resize r0 [root@drbd01 ~]# xfs_growfs /dev/drbd0 |
拡張されていることを確認します。
1 2 3 4 5 6 7 8 9 10 11 |
[root@drbd01 ~]# df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root 14034944 1218892 12816052 9% / devtmpfs 929404 0 929404 0% /dev tmpfs 941280 0 941280 0% /dev/shm tmpfs 941280 8988 932292 1% /run tmpfs 941280 0 941280 0% /sys/fs/cgroup /dev/sda1 1038336 189832 848504 19% /boot tmpfs 188256 0 188256 0% /run/user/0 /dev/drbd0 10462876 33184 10429692 1% /drbd |
オフライン拡張
以下の作業は、DRBDで同期しているホスト全てで実行します。
リソースを停止します。
1 2 |
[root@drbd01 ~]# drbdadm down r0 |
メタデータをテキストファイルに書き出します。
1 2 |
[root@drbd01 ~]# drbdadm dump-md r0 > /tmp/metadata |
もし、以下のエラーが出た場合は apply-al を実行します
1 2 3 4 5 |
[root@drbd01 ~]# drbdadm dump-md r0 Found meta data is "unclean", please apply-al first [root@drbd01 ~]# drbdadm apply-al r0 [root@drbd01 ~]# drbdadm dump-md r0 > /tmp/metadata |
LVMを拡張します。
1 2 3 4 5 6 7 8 9 |
[root@drbd01 ~]# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created. [root@drbd01 ~]# vgextend VolGroup01 /dev/sdc1 Volume group "VolGroup01" successfully extended [root@drbd01 ~]# lvextend -L +4.99GB /dev/VolGroup01/VolGroup01 Rounding size to boundary between physical extents: 4.99 GiB. Size of logical volume VolGroup01/VolGroup01 changed from <5.00 GiB (1279 extents) to <9.99 GiB (2557 extents). Logical volume VolGroup01/VolGroup01 successfully resized. |
出力したメタデータにある la-size-sect
を拡張したセクタに書き換えます。
VolGroup01
を拡張したので現在のセクタ数を確認します。
1 2 3 |
[root@drbd01 ~]# blockdev --getsize /dev/VolGroup01/VolGroup01 20946944 |
metadata
の la-size-sect
を上記の値に書き換えます。
1 2 3 4 5 |
[root@drbd01 ~]# vi /tmp/metadata (snip) la-size-sect 20946944; (snip) |
メタデータの初期化をします。
1 2 3 4 5 6 7 |
[root@drbd01 ~]# drbdadm create-md r0 Move internal meta data from last-known position? [need to type 'yes' to confirm] yes (snip) |
もし、以下のエラーが出力された場合は、表示されたコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
(snip) Device size would be truncated, which would corrupt data and result in 'access beyond end of device' errors. You need to either * use external meta data (recommended) * shrink that filesystem first * zero out the device (destroy the filesystem) Operation refused. Command 'drbdmeta 0 v09 /dev/VolGroup01/VolGroup01 internal create-md 1' terminated with exit code 40 [root@drbd01 ~]# drbdmeta 0 v09 /dev/VolGroup01/VolGroup01 internal create-md 1 Move internal meta data from last-known position? [need to type 'yes' to confirm] yes (snip) Device size would be truncated, which would corrupt data and result in 'access beyond end of device' errors. You need to either * use external meta data (recommended) * shrink that filesystem first * zero out the device (destroy the filesystem) Operation refused. |
修正したメタデータをインポートします。
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@drbd01 ~]# drbdmeta_cmd=$(drbdadm -d dump-md r0) [root@drbd01 ~]# ${drbdmeta_cmd/dump-md/restore-md} /tmp/metadata Valid meta-data in place, overwrite? [need to type 'yes' to confirm] yes (snip) Do you want to proceed? [need to type 'yes' to confirm] yes (snip) # la-size-sect was too big (20946944), truncated (20946232)! Successfully restored meta data |
リソースを起動します。
1 2 3 4 |
[root@drbd01 ~]# drbdadm up r0 No usable activity log found. Do you need to create-md? Error ignored, no need to apply the AL |
どれかのホストでプライマリーに昇格させてリサイズし状態を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@drbd01 ~]# drbdadm primary r0 [root@drbd01 ~]# xfs_growfs /dev/drbd0 [root@drbd01 ~]# mount /dev/drbd0 /drbd/ [root@drbd01 ~]# df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root 14034944 1218760 12816184 9% / devtmpfs 929404 0 929404 0% /dev tmpfs 941280 0 941280 0% /dev/shm tmpfs 941280 8988 932292 1% /run tmpfs 941280 0 941280 0% /sys/fs/cgroup /dev/sda1 1038336 189832 848504 19% /boot tmpfs 188256 0 188256 0% /run/user/0 /dev/drbd0 10462876 33188 10429688 1% /drbd |