web-dev-qa-db-ja.com

PostgreSQL-ファイルを拡張できませんでしたデバイスにスペースが残っていません。ヒント:ディスクの空き容量を確認する

私は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

enter image description here

私は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のスペースをとるのに十分な大きさですか?

ありがとう!

編集:pvsvgslvsの出力

enter image description here

3
Eric Kim

サーバーが正しく分割されていません。これは完全にあなたのせいではありません。むしろ、デフォルトの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 +100Grootボリュームを100 GB拡大します。
  • xfs_growfs /:XFSを使用していると仮定すると、ルートファイルシステムを拡張して、基になる拡張ボリュームに一致させます。ありそうもないext4を使用している場合は、resize2fs /dev/centos/rootを発行する必要があります。
5
shodanshok