サーバーで使用可能なスワップスペースを4GBから16GBに増やしようとしていますが、現在XFS + somethingが原因でこれが不可能になっています。
OSをホストする単一のSSD(CentOS 7)があり、ブートパーティションとLVM2パーティションがインストールのデフォルトです。 LVM2パーティション内には、root
、home
、およびswap
の3つの仮想パーティションがあり、LVM2パーティション全体を消費します。繰り返しますが、インストールのデフォルトでは、これらはXFSファイルシステムタイプです。
私の単純な望みは、十分に活用されていないhome
パーティションを縮小して、swap
パーティション用のスペースを作ることでした。 XFSパーティションを縮小することは不可能であることがわかったので、ホームドライブをバックアップしてパーティションを削除し、バックアップからの回復で小さなサイズに復元するといううさぎの穴を掘り下げています。
現在の問題は、ホームディレクトリまたはパーティションを解放できないように見えることです。 GUIからドロップアウトし、ログアウトしてターミナルでrootとして再度ログインした後、最初はホームディレクトリをアンマウントできませんでした。 lsof
とfuser
は何も開いていませんでしたが、何かが使用されていました。
私は
umount -f home
そしてこれは家を降ろすのに働いたようです。疑わしいと思われる-f
コールアウトなしで、ホームを自由にマウントおよびマウント解除できるようになりました。しかし今試しています
lvremove /dev/centos/home
返されるメッセージは
Logical volume centos/home in use.
私はここで多くの質問と回答を見てきましたが、それは次のどれでもありません。
lvchange -an -v /dev/centos/home
を試しましたが、ボリュームが使用中であると主張しました)home
を何が使用しているかについてのヒントを私が見つけることができるものは何もないようです。マシンの再起動に依存しない解決策を得ることができれば、それは理想的です。
umount -f
残念ながら、VFSから物事を削除するだけですなし実際にアンマウントします。 /proc/mounts
やその他の場所には表示されなくなりましたが、マウントされたままです。このマウントをまだ使用しているものを確認する明確な方法はありません(または、lsof
やその他のものもこれで失敗するため、存在しないパス名で移動した場合、まだ存在するかどうか)。ファイルシステムのダーティフラグをチェックし、実際にマウント解除されたらこれがクリアされることを期待します。
losetup
、cat /proc/mdstat
、dmsetup 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]'
}
しかし、それは不完全です。
システムにこれ以上RAMをインストールできない場合は、検討する価値のあるものと交換してください。
ファイルシステムレイヤーを通過する必要があるため(違いに気付く可能性は低い)、スワップパーティションほど高速ではありませんが、/ homeなどに大きな空のファイルを作成し、それを使用するようにシステムに指示することができます。スワップスペースとして。例えば.
dd if=/dev/zero of=/home/swapfile bs=1M count=16384
mkswap /home/swapfile
/ etc/fstabを編集し、スワップとして/ home/swapfileを追加します
swapon -a
lvresize
を使用してlvを削除する代わりに、lvremove
を試してlvを減らすことができると思います。このようにして、lvremove
コマンドがもたらす問題を回避できます。 lvresize
を使用してlvを削減した後、スワップにlvresize
コマンドを使用して、centos VG
からボリュームを追加できます。