私はPostgreSQL DBにデータを挿入していて、エラーメッセージが表示されました。
psycopg2.OperationalError: could not extend file "base/16384/61892": No space left on device
HINT: Check free disk space
CentOS 7を使用していますが、Linuxマシンでいくつかのステータスを確認しました。
df -h
私はLinuxにかなり慣れていないため、df -h
コマンドの結果に基づいて、LinuxストレージシステムがWindowsとは異なる動作をすることがわかりました。
PostgreSQLは/dev/mapper/centos-root
にプッシュしているようですが、使用できるのは50 GBだけです。
質問1:どうすれば変更できますか? /dev/mapper/centos-home
で利用可能な追加の空き容量を~/centos-root
ディレクトリに割り当てるにはどうすればよいですか?
質問2:私のマシンには、それぞれ200 GBのハードディスクが2つあります。しかし、私のdf-h
コマンドによると、利用できるのは200GBしかないようです。これはなぜですか? 400GBの容量をフルに活用するにはどうすればよいですか?
問題は、私の/dev/mapper/centos-root
がすべて埋まっていることです。 PostgreSQLに12列のデータを10,000,000行近く挿入しました。
質問3:これは50GBのスペースをとるのに十分な大きさですか?
ありがとう!
編集:pvs
、vgs
、lvs
の出力
サーバーが正しく分割されていません。これは完全にあなたのせいではありません。むしろ、デフォルトのRHEL/CentOS設定は、私の意見ではかなり誤解を招くものです。
上で入力したpvs; vgs; lvs
コマンドの説明から始めましょう。これらはすべて LVM2
に関連しています。論理ボリュームマネージャーは、簡単に言うと、「柔軟な」サイズ変更可能なパーティションの作成を可能にします。
pvs
は、物理ディスクがLVMシステムにどのように接続されているかを示します。 2x 200 GBディスクがありましたが、pvs
は1x200 GB物理デバイスしか表示しません。これは、ディスクがRAID1(ミラーリング)であり、LVMに完全に割り当てられている(つまり、物理スペースが割り当てられていない)ことを意味します。
vgs
は、物理デバイスに割り当てられたボリュームグループと使用可能な空き領域を示します。あなたの場合、空き容量は4 MB未満なので、基本的に空き容量はありません。次のコマンドは、スペースを何が使用しているかを説明します...
lvs
は、50 GBのルートボリュームと〜145 GBのホームボリュームの2つの論理ボリューム(パーティションと考えます)があることを示しています。要するに、あなたのroot
ボリューム(PostgreSQLが存在する)はあなたのニーズよりもずっと小さいです。むしろ、あなたのhome
ボリュームは、そこに含まれるデータの数(<5GB)を考えると非常に大きいです。
この問題を解決するには、2つのオプションがあります。
postgreSQLをhome
ボリュームの下、たとえば/home/pgsl
の下に再配置します。 /home
はデータベースに適した場所ではないため、これを避けますwill将来的に管理上の負担が発生します。さらに、再配置を機能させるには、SELinuxをパーミッシブモード(setenforce 0
+ /etc/selinux/config
編集)にする必要があります。
home
ボリュームを縮小し、root
を拡大します。これは、特に、縮小をサポートしていないXFS(デフォルトのRHEL/CentOSファイルシステム)を使用している場合は、言うより簡単です。
home
の下のデータがゴミ箱に入れられたり再ロードされたりする可能性がある場合のみ、次の手順に従って[〜#〜]削除[〜#〜]home
ボリュームと拡大root
。小さなエラー(私のものとあなたの両方)[〜#〜](〜#〜]はデータを破壊することに注意してください(猫を殺す〜100 KMの範囲)なので、最終結果はNO RESPONSABILITYと見なします。不明な場合は、ここで終了し、専門のシステム管理者に連絡してサポートを受けてください。では、先に進みましょう。相対的な説明を含むコマンドシーケンスを投稿します。
umount /home
:このホームボリュームをマウント解除(つまり「無効」)します。lvremove centos/home
:this permanently destroy/home
and allそのコンテンツ。lvextend centos/root -L +100G
:root
ボリュームを100 GB拡大します。xfs_growfs /
:XFSを使用していると仮定すると、ルートファイルシステムを拡張して、基になる拡張ボリュームに一致させます。ありそうもないext4
を使用している場合は、resize2fs /dev/centos/root
を発行する必要があります。