web-dev-qa-db-ja.com

LVMでXFSホームディレクトリのサイズを変更する

サーバーで使用可能なスワップスペースを4GBから16GBに増やしようとしていますが、現在XFS + somethingが原因でこれが不可能になっています。

OSをホストする単一のSSD(CentOS 7)があり、ブートパーティションとLVM2パーティションがインストールのデフォルトです。 LVM2パーティション内には、roothome、およびswapの3つの仮想パーティションがあり、LVM2パーティション全体を消費します。繰り返しますが、インストールのデフォルトでは、これらはXFSファイルシステムタイプです。

私の単純な望みは、十分に活用されていないhomeパーティションを縮小して、swapパーティション用のスペースを作ることでした。 XFSパーティションを縮小することは不可能であることがわかったので、ホームドライブをバックアップしてパーティションを削除し、バックアップからの回復で小さなサイズに復元するといううさぎの穴を掘り下げています。

現在の問題は、ホームディレクトリまたはパーティションを解放できないように見えることです。 GUIからドロップアウトし、ログアウトしてターミナルでrootとして再度ログインした後、最初はホームディレクトリをアンマウントできませんでした。 lsoffuserは何も開いていませんでしたが、何かが使用されていました。

私は

umount -f home

そしてこれは家を降ろすのに働いたようです。疑わしいと思われる-fコールアウトなしで、ホームを自由にマウントおよびマウント解除できるようになりました。しかし今試しています

lvremove /dev/centos/home

返されるメッセージは

Logical volume centos/home in use.

私はここで多くの質問と回答を見てきましたが、それは次のどれでもありません。

  • NFSサービス
  • ファイルを開く
  • メジャー、マイナー指定を使用してファイルを開く
  • アクティブフラグ(lvchange -an -v /dev/centos/homeを試しましたが、ボリュームが使用中であると主張しました)

homeを何が使用しているかについてのヒントを私が見つけることができるものは何もないようです。マシンの再起動に依存しない解決策を得ることができれば、それは理想的です。

4
J Collins

umount -f残念ながら、VFSから物事を削除するだけですなし実際にアンマウントします。 /proc/mountsやその他の場所には表示されなくなりましたが、マウントされたままです。このマウントをまだ使用しているものを確認する明確な方法はありません(または、lsofやその他のものもこれで失敗するため、存在しないパス名で移動した場合、まだ存在するかどうか)。ファイルシステムのダーティフラグをチェックし、実際にマウント解除されたらこれがクリアされることを期待します。

losetupcat /proc/mdstatdmsetup table、...で使用されているデバイスやファイルなど、いくつかのものを手動で確認し、/proc/*/{maps,cwd,exe,fd/*}で問題のデバイスへの参照を確認できます。 (マウントパス自体はもう存在しません)。しかし、それでもすべてを網羅しているわけではありません。

そのような参照(実行中のプロセスの開いているファイル記述子など)を見つけた場合は、このファイルにアクセスして任意の方法で変更できるため、ファイルシステムがマウントされ、完全に機能していることがわかります。

そのような怠惰なumountの存在を見つけるために使用したコードのビットは、別のデバイス名用にハードコードされていることに注意してください。

isbusy() {
    grep -E '^/dev/mmcblk(0p3|1p1) ' /proc/mounts || \
    grep -E '^([^ ]+ ){3}b3:0[39] ' /proc/*/maps || \
    find /proc/[0-9]*/exe /proc/[0-9]*/cwd /proc/[0-9]*/fd -exec stat -tL {} + \
    | grep -E '^([^ ]+ ){6}b30[39]'
}

しかし、それは不完全です。

1
frostschutz
  1. 可能であれば、システムにRAMを追加します。スワップは解決策ではありません。メモリ不足によるシステムのフォールオーバーを防ぐための一時的な一時的な修正です。システムの場合常にスワップするので、本当に必要なのはより多くのRAMです。

システムにこれ以上RAMをインストールできない場合は、検討する価値のあるものと交換してください。

  1. ファイルシステムレイヤーを通過する必要があるため(違いに気付く可能性は低い)、スワップパーティションほど高速ではありませんが、/ homeなどに大きな空のファイルを作成し、それを使用するようにシステムに指示することができます。スワップスペースとして。例えば.

    • dd if=/dev/zero of=/home/swapfile bs=1M count=16384

    • mkswap /home/swapfile

    • / etc/fstabを編集し、スワップとして/ home/swapfileを追加します

    • swapon -a

1
cas

lvresizeを使用してlvを削除する代わりに、lvremoveを試してlvを減らすことができると思います。このようにして、lvremoveコマンドがもたらす問題を回避できます。 lvresizeを使用してlvを削減した後、スワップにlvresizeコマンドを使用して、centos VGからボリュームを追加できます。

0
buweilv