最近、仮想マシンに Docker マイクロサービスをデプロイしていたときに、ディスク メモリがいっぱいで操作が実行できないことがわかりました。
/var/lib/dpkg/info/libc6:amd64.templates を開きます: デバイスに空き領域がありません
次に、バックアップ仮想マシンのルート ディレクトリがいっぱいになる問題をどのように解決したかを書き留めます。
1. 仮想マシンのディスク使用量を表示する
df -h
/dev/mapper/centos-root がほぼ満杯になっていることがわかりますが、この時点で hdfs を起動しても強制的にセーフモードになってしまいデータは書き込まれません。
2. どのディレクトリが占有しすぎているかを確認します
du -h -x --max- Depth=1 を使用して、どのディレクトリが多くのスペースを占有しているかを確認し、高すぎてスペースを確保できないディレクトリ内のコンテンツを適切に削除します。
cd / && du -h -x --max-depth=1
現在、./cache ファイルが最も多くのメモリを占有していることがわかります。これは、ファイルを展開して削除した後の占有状況です。以前は、ドキュメントが最も多くのメモリを占有していました。
最も多くのメモリを占有しているドキュメントを見つけてそのドキュメントを入力し、du -h -x --max- Depth=1 を実行してメモリを占有しているドキュメントを表示し、不要なファイルを削除します。
3. 削除されたがプロセスがまだ生きているため、領域が占有されているファイルがまだ存在するかどうかを確認します。
スペースがいっぱいであることがわかった場合でも、システム ファイルが削除された後でもプロセスがまだ生きているかどうかを確認する方法があります。
lsof |grep delete ステートメントを使用して、対応するプロセス番号を表示します。
lsof |grep delete
対応するプロセスを強制終了するには、kill -9 プロセス番号を使用します。
4. 仮想マシンの拡張
4.1. ディスク番号の確認
[root@localhost /]# ls /dev/sd*
4.2. PVの作成
[root@localhost /]# pvcreate /dev/sda4
4.3. pv を vg に追加することは、vg のサイズを拡張することと同じです。
[root@localhost dyx]# vgs *** 最初に vgs を使用して vg グループを表示します
[root@localhost /]# vgs
vg を拡張するには、vgextend コマンドを使用します。
[root@localhost /]# vgextend centos /dev/sda4
4.4. vg ボリュームは正常に拡張されました。lvs で再度確認してください。
[root@localhost /]# lvs
5. lvを拡張するには、lvextendコマンドを使用します。
[root@localhost /]# lvextend -L +20G /dev/mapper/centos-root
6. このコマンドにより、システムはサイズを再度読み取ります。
[root@localhost /]# xfs_growfs /dev/mapper/centos-root
7. 次に、df -h を使用して表示します。
[root@localhost /]# df -h
容量は17Gから37Gに拡張され、拡張に成功しました。