つい先日うちの部で管理しているデータベースサーバの容量が100%になってお亡くなりになられたので、新しくディスクを追加してLVMで論理ボリュームのサイズを拡張して復旧、ということをやりました。
ですが、この作業、知らない単語や知識が多すぎて全然やっていることの意味がわかっていませんでした。そこで何をやっているかちゃんと理解しておくためにも復習したので忘れないためにもまとめておく。
#そもそもLVMって何ぞ?
複数のハードディスクやパーティションにまたがった記憶領域を一つのボリュームグループにまとめ、単一の論理ボリューム(LV)として扱うことのできるディスク管理機能
とのことでした。これ使うと後から論理ボリュームが拡張出来て便利とかなんとか。
LVMって調べたらさらに知らない単語が出てきたのでメモ。
・物理ボリューム: ハードディスクやパーティションそのものを指す
・ボリュームグループ: 1個以上の物理ボリュームをまとめたもの
・論理ボリューム: ボリュームグループから切り出したボリューム
#新しいディスクにパーティションを作成
追加したディスク名は/dev/sdcです。
まず以下のコマンドでfdiskを対話モードで起動させる
$ fdisk /dev/sdc
すると対話モードが起動するので以下の手順でパーティションを作成
Command (m for help): n #nでパーティションの新規作成、いろいろ選択肢が出てくるがすべてデフォルトで
Command (m for help): t #tでパーティションタイプを変更。パーティションタイプ=そのパーティションを利用しているファイルシステムの種類
Partition number: 1
Hex code (type L to list codes) : 8e #8eはLinux LVMのパーティション番号
Command (m for help): p #パーティションテーブルを表示して、パーティション/dev/sdc1が作成されていることを確認
Command (m for help): w #パーティションテーブルの変更を保存して終了
#ディスクに物理ボリュームを作成
先ほどパーティション/dev/sdc1を作成したので、これをLVMで管理するために物理ボリュームを作成
$ pvcreate /dev/sdc1 #物理ボリューム作成
$ pvscan #/dev/sdc1が物理ボリュームとして表示されていることを確認
#ボリュームグループに物理ボリュームを登録
次に先ほど物理ボリュームを作成しましたが、まだどのボリュームグループにも割り当てられていません。
ということで既存のボリュームグループに登録してやりましょう。
$ vgextend centos /dev/sdc1 #ボリュームグループcentosに物理ボリューム/dev/sdc1を登録
$ pvscan #/dev/sdc1がボリュームグループcentosに属しているか確認
#ボリュームグループから論理ボリュームを作成
ボリュームグループの拡張した部分を全て論理ボリュームに割り当てる。
$ lvextend -l +100%FREE /dev/centos/root
これで終わりと思ったらファイルシステムを拡張しないと、ファイルシステムが論理ボリュームの拡張した部分を使えるようにならないらしいので拡張する。そうすると論理ボリュームのサイズが拡張しているはずなので、対象の論理ボリュームが拡張しているかlvscanで確認
$ xfs_growfs /dev/centos/root #ファイルシステムを拡張
$ lvscan #論理ボリュームの一覧を表示。
#最後に
この一連の流れ、最初はわかったようでわかってない微妙な理解度だったんだけど以下のサイトのこの画像見たら納得しました。
https://www.atmarkit.co.jp/ait/articles/0302/08/news002_2.html