Pivotal Knowledge Base

フォローする

NFS マウントされたストレージへのバックアップ中にセグメントがダウンする

環境

製品 バージョン
Pivotal Greenplum(GPDB) 全てのバージョン

事象

  • NFS マウントされた共有ストレージにバックアップ生成のため gpcrondump を使用
  • 複数のセグメントがバックアップ中にダウン
  • /var/log/messages に以下のようなメッセージが出力
      Oct 28 04:16:32 sdw9 kernel: INFO: task postgres:10542 blocked for more than 120 seconds.
      Oct 28 04:16:32 sdw9 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      Oct 28 04:16:32 sdw9 kernel: postgres D ffffffff80154697 0 10542 8527 10543 10531 (NOTLB)
      Oct 28 04:16:32 sdw9 kernel: ffff81026b88bea8 0000000000000082 00000000ffffffd8 ffffffff80012671
      Oct 28 04:16:32 sdw9 kernel: 8000000ba9937067 000000000000000a ffff810509ea80c0 ffff81018398e080
      Oct 28 04:16:32 sdw9 kernel: 00071725b8ab7c04 000000000004c852 ffff810509ea82a8 000000018002239a
      Oct 28 04:16:32 sdw9 kernel: Call Trace:
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80012671>] may_open+0x65/0x233
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80067225>] do_page_fault+0x4cc/0x842
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80063c53>] __mutex_lock_slowpath+0x60/0x9b
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80063c9d>] .text.lock.mutex+0xf/0x14
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80013f1b>] generic_file_llseek+0x2a/0x8b
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff80025788>] sys_lseek+0x40/0x60
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff8005dde9>] error_exit+0x0/0x84
      Oct 28 04:16:32 sdw9 kernel: [<ffffffff8005d116>] system_call+0x7e/0x83

原因

Linux におけるメモリとディスク書き込みの管理動作のため、プロセスが I/O 待ちでブロックされていると考えられる。デフォルトでカーネルは、ディスクへの遅延書き込みのためのキャッシュ用途に使用可能なメモリサイズを、全メモリ容量の 40% に制限している。一度、その制限に到達すると、保留されている全てのディスクへの書き込みがフラッシュされる。多くのディスク書き込みが殺到すると、背後にあるストレージ層に問題が発生する。

解決策

バックアップのため、ダイレクト I/O を有効にする。これにより、キャッシュをバイパスし、NFS マウントされたストレージに同期的に書き込みを行う。

そのためには、以下のように GUC の gp_backup_directIO を有効とする。

gpconfig -c gp_backup_directIO -v on
gpstop -u

gpconfig コマンド実行後は、設定ファイルの再読み込みのため gpstop -u を実行する必要がある。

コメント

Powered by Zendesk