LVM化

CentOS

LIVA-Xのパーティションは「ソフトウェア構成」に記載した通り、非LVMで構成しました。
USB接続の外部HDDのファイルシステムはbtrfsでRAIDを構成しました。
ファイルシステムにbtrfsを使用したかったのが理由です。
当時、btrfsはLVMに対応していないためLVMにはできませんでした。
今後、CentOSが推奨するファイルシステムは少なくともbtrfsにはならないであろうことが判明したので思い切ってLVM化することにしました。

当初2台接続していた外部HDDケースですが、1台はWindows 10に接続してユーザデータ用に使用するために取り除きました。
今回は、/bootと/boot/efiを除くすべてをLVMに移行することにしました。

なお当環境はUEFI+GPTです。

パーティションは以下の通りです。

# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Jul 15 21:17:31 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ba71a324-7dad-43ec-84f4-965cd89eea8e /                       xfs     defaults        0 0
UUID=7fcac5e9-e97c-4767-a6e1-a09902aa0453 /boot                   xfs     defaults        0 0
UUID=7D97-F900          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
UUID=e16ad6b1-825e-45a0-8927-e624adca3a56 swap                    swap    defaults        0 0
UUID=c25a9864-ae95-4a49-b696-dea32bb1de9b /home                   xfs     defaults        0 0
UUID=8d8b20d6-fff1-4429-9f96-d279884049a2 /backup               btrfs noatime,autodefrag,compress-force=lzo,space_cache 0 0
UUID=c3291542-f3cc-4ccd-87e7-4ad5a5a2c578 /var/lib/mysql        btrfs noatime,nodatacow,autodefrag,space_cache 0 0

データの移動

外付けHDDに保存されているデータを退避させるため、RHDMアダプターにiVDR-SカセットHDD1TBを装着して利用しました。
使用量の少ないパーティションはそのままルートパーティションに含めました。

なおデータの移動にはtarコマンドを使用しました。

例)/mntにマウントしたドライブに/homeの内容をコピー

# cd /home 
# tar cvf . - | (cd /mnt | tar xvf -)

/varと/var/lib/mysqlはルートパーティションへ同じようにコピーしました。

ディスクドライブの初期化

外付けHDDの対象のディスクドライブは5台あります。
それぞれデバイス名は/dev/sd[a,b,c,d,e]です。
※USB接続のHDDは起動順序でデバイス名が変わりますので/var/log/messagesで確認してください。

まず、ファイルシステムbtrfsでRAIDを構成していたため、念のため、以下を実施しました。

# mount /dev/sdd /mnt
# btrfs device delete /dev/sdd /mnt
# btrfs device delete /dev/sde /mnt
# umount /mnt
# wipefs -o 0x10040 /dev/sd[de]
# fdisk /dev/sdd
# fdisk /dev/sde
# mount /dev/sda /mnt
# btrfs device delete /dev/sda /mnt
# btrfs device delete /dev/sdb /mnt
# btrfs device delete /dev/sdc /mnt
# umount /mnt
# wipefs -o 0x10040 /dev/sd[abc]
# fdisk /dev/sda
# fdisk /dev/sdb
# fdisk /dev/sdc

コマンドはGPT対応バージョンのfdiskかgdiskを使用すればよいと思います。
fdiskでシステムIDをLinux LVM(8e)に設定しています。

LVMの作成

PVの作成

# pvcraete /dev/sda1
# pvcraete /dev/sdb1
# pvcraete /dev/sdc1
# pvcraete /dev/sdd1
# pvcraete /dev/sde1

VGの作成

以下の例ではVG名はLIVAX(任意)にしています。

# vgcreate LIVAX /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

LVの作成(RAID1)

LVをミラーで作成します。

# lvcreate --type raid1 -m 1 -L 10G -n system-root LIVAX
# lvcreate --type raid1 -m 1 -L 10G -n system-usr LIVAX
# lvcreate --type raid1 -m 1 -L 10G -n system-var LIVAX
# lvcreate --type raid1 -m 1 -L 20G -n system-mysql LIVAX
# lvcreate --type raid1 -m 1 -L 1T -n system-home LIVAX

※/(ルート),/usr,/var,/var/mysql,/homeのパーティションを作成しました。

ファイルシステムの作成(フォーマット)

XFSでフォーマットしました。

 # mkfs -t xfs /dev/LIVAX/system-var
 # mkfs -t xfs /dev/LIVAX/system-usr
 # mkfs -t xfs /dev/LIVAX/system-root
 # mkfs -t xfs /dev/LIVAX/system-mysql
 # mkfs -t xfs /dev/LIVAX/system-home

新環境へデータの複製

/mntにそれぞれのLVをマウントしてtarコマンドにてデータを複製しました。
以下は/homeの例です。

# mount /dev/LIVAX/system-home /mnt
# cd /home
# tar cvf . - | (cd /mnt;tar xvf -)
# umount /mnt

※/(ルート)の場合は、/usrや/varや/homeやデバイスファイルなどをコピーしないように除外リストを使用しました。

新環境をマウント

/mnt以下に新環境をすべてマウントします。

# mount /dev/LIVAX/system-root /mnt
# cd /mnt
# mkdir -p home usr var
# mount /dev/LIVAX/system-usr usr
# mount /dev/LIVAX/system-var var
# mount /dev/LIVAX/system-mysql var/lib/mysql
# mount /dev/LIVAX/system-home home
# mount /dev/mmcblk0p2 boot
# mount /dev/mmcblk0p2 boot/efi
# mount -t proc proc proc
# mount -t sysfs sys sys
# mount -o bind /dev dev
# mount -t devpts pts dev/pts

自動マウントの設定

新環境の/etc/fstab(/mnt/etc/fstab)の内容をLVMのディスクパーティションをマウントするように変更します。
USBデバイスが複数あるとデバイス名が起動時に変更になることがあるので今回はUUIDを使用することにしました。

UUIDの取得

# blkid

/mnt/etc/fstabの変更

※編集するファイルのパスに注意してください

#
# /etc/fstab
# Created by anaconda on Sat Jul 15 21:17:31 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
#UUID=ba71a324-7dad-43ec-84f4-965cd89eea8e /                       xfs     defaults        0 0
UUID=49d00818-8ab7-4162-9818-43b79135175c /                       xfs     defaults        0 0
UUID=7fcac5e9-e97c-4767-a6e1-a09902aa0453 /boot                   xfs     defaults        0 0
UUID=7D97-F900          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
UUID=e16ad6b1-825e-45a0-8927-e624adca3a56 swap                    swap    defaults        0 0
#UUID=3b7735e7-61aa-4781-a271-c3df5a2eccdc /home                   xfs     defaults        0 0
UUID=bbd8789e-379a-4034-ae4e-452c9156b9b9  /usr                   xfs     defaults        0 0
UUID=074c1b74-976c-4333-a7b4-98b78d3daad1  /var                   xfs     defaults        0 0
UUID=5b535b7b-bc20-434c-a132-e019293c3245  /var/lib/mysql                   xfs     defaults        0 0
UUID=9237bcd9-ea64-47db-bcd1-1f83bb6f8953 /home                   xfs     defaults        0 0

ルートディレクトリの変更

新環境がルートになるようにchrootコマンドで変更

# chroot /mnt

GRUB2の更新

# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

初期RAMディスクイメージの再作成

# cd boot
# mv initramfs-3.10.0-693.21.1.el7.x86_64.img initramfs-3.10.0-693.21.1.el7.x86_64.img.old
# dracut initramfs-3.10.0-693.21.1.el7.x86_64.img 3.10.0-693.21.1.el7.x86_64

chrootから抜ける

# exit

すべてアンマウント

# umount dev/pts
# umount dev
# umount sys
# umount proc
# umount boot/efi
# umount boot
# umount home
# umount var/lib/mysql
# umount var
# umount usr
# umount /mnt

システムの再起動

# shutdown -r now

LVMのパーティション

# df
ファイルシス                    1K-ブロック      使用    使用可 使用% マウント位置
/dev/mapper/LIVAX-system--root     10475520   1320256   9155264   13% /
devtmpfs                            1773824         0   1773824    0% /dev
tmpfs                               1785528         0   1785528    0% /dev/shm
tmpfs                               1785528     53920   1731608    4% /run
tmpfs                               1785528         0   1785528    0% /sys/fs/cgroup
/dev/mapper/LIVAX-system--usr      10475520   4059452   6416068   39% /usr
/dev/mmcblk0p2                      1038336    250036    788300   25% /boot
/dev/mmcblk0p1                       204580      9968    194612    5% /boot/efi
/dev/mapper/LIVAX-system--var      10475520   2323672   8151848   23% /var
/dev/mapper/LIVAX-system--home   1073217536 543722072 529495464   51% /home
/dev/mapper/LIVAX-system--mysql    20961280   1774052  19187228    9% /var/lib/mysql
tmpfs                                357108         0    357108    0% /run/user/1000

以上で完了です。

[common_content id=”13589″]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪府門真市に生まれ、高校卒業まで京都府福知山市で育ち、大学は工学部電子工学科を卒業。半導体設計会社に勤務ののちインフラエンジニアとして監視基盤の運用設計業務に就く。現在は都内の施設に勤務。横浜在住。人の役に立てることができればいいなと日々思っています。

目次