サーバーを運用している時を想定してパーティションを切った際に、特定のボリュームだけ異様に使用率が高かったり逆にほとんど使っていなかったりしていたりする場合がある。この場合、パーティションをリサイズしなければならないのだが、GNU/Linuxシステム環境では基本的にマウントしたままパーティションをリサイズすることはできない。そのため、アンマウントしてから作業を行わなければならない。
ここでは、LVM環境でsystemというボリュームグループのうち、homeに割り当てているパーティションを128GBに縮小、varとusrに割り当てているパーティションをそれぞれ32GB、16GBに拡大する場合を想定して説明を行いたい。
なお、この方法は、ネットワークを無効化してから作業を行うため、モニターに直接つなぐか、何らかの方法でオフラインでも作業を行えるように前もって準備をしておきたい。また、ボリュームを破壊する危険性があるため、バックアップをとってから作業をおこなうこと。
シングルユーザーモードへ移行する
まずはシステムをシングルユーザーモードへ移行する。
[bash]$ init 1[/bash]
これでシングルユーザーモードへ移行したら、(パスワードを求められたらパスワードを入力して)以降、rootユーザーとしてのみ利用可能な状態となる。
home、var、usrボリュームのマウント解除
以下のコマンドを入力して、マウントを解除する
[bash]$ umount /home
$ umount /var
$ umount /usr[/bash]
homeボリュームのサイズ縮小
LVM環境でリサイズを行う場合は、まずはファイルシステムのサイズを縮小してから、LVMパーティションの割り当てサイズを変更する。
以下のコマンドを入力してサイズを縮小する。
[bash]$ e2fsck -f /dev/mapper/system-home
$ resize2fs /dev/mapper/system-home 128G
$ lvresize -L 128G /dev/mapper/system-home[/bash]
この時に警告が出るが、yを入力すれば作業が行われる。
var、usrボリュームのサイズ拡大
ボリュームサイズを拡大するには、まずLVMパーティションの割り当てサイズを拡大してから、ファイルシステムのサイズを拡大する。逆に行うと、正常に反映されない。
[bash]$ e2fsck -f /dev/mapper/system-var
$ lvresize -L 32G /dev/mapper/system-var
$ resize2fs /dev/mapper/system-var 32G
e2fsck -f /dev/mapper/system-usr
$ lvresize -L 16G /dev/mapper/system-usr
$ resize2fs /dev/mapper/system-usr -L 16G[/bash]
上記が完了したら、再起動をして、dfコマンドを入力、正常に反映されていれば対応は完了である。
本来であればこのような事態は避けたいところではあるが、必要であれば本ページを参考にしていただければ幸いである。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。