目次
はじめに
仮想環境やクラウド環境にVerticaを導入している場合、性能向上やコスト削減の目的などで物理メモリサイズを拡張/縮小したい場面があります。本記事では、物理メモリサイズを変更する場合にVertica側で必要となる作業を解説します。作業内容
概要
① 要件チェックスクリプトを実行
② ユーザ定義リソースプールのmaxmemorysizeを変更
③ Vertica停止
④ サーバ(OS)停止
⑤ メモリ増設
⑥ サーバ(OS)起動
⑦ 増設したメモリが認識されているか確認
⑧ 要件チェックスクリプトを実行
⑨ カーネルパラメータ変更
⑩ サーバ(OS)再起動
⑪ 要件チェックスクリプトを実行
⑫ Vertica起動
② ユーザ定義リソースプールのmaxmemorysizeを変更
③ Vertica停止
④ サーバ(OS)停止
⑤ メモリ増設
⑥ サーバ(OS)起動
⑦ 増設したメモリが認識されているか確認
⑧ 要件チェックスクリプトを実行
⑨ カーネルパラメータ変更
⑩ サーバ(OS)再起動
⑪ 要件チェックスクリプトを実行
⑫ Vertica起動
① 要件チェックスクリプトを実行
メモリ増設前に、システム要件を満たしているか確認します。以下のスクリプトを全ノードにて、rootユーザ(OS) で実行します。Vertica のバージョンによって、スクリプトの実行パスが違うので、ご注意ください。
1 2 3 4 5 6 7 8 |
<< Vertica 9.2 まで >> # /opt/vertica/oss/python/bin/python -m vertica.local_verify << Vertica 9.3 から 11.0 まで >> # /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify << Vertica 11.1 >> # /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify |
Verticaの要件を満たしている場合は、「pass: 50」が出力されます。
1 2 3 4 5 6 7 |
<< Vertica 10.1 の実行例 >> Summary: --- pass: 50 Output found in /opt/vertica/log/local-verify-20210708_082218.xml |
② ユーザ定義リソースプールの maxmemorysize を変更
ユーザ定義のリソースプールを作成して maxmemorysize を明示的に定義している場合は、必要に応じて maxmemorysize の値も調整します。以下は、test_pool リソースプールの maxmemorysize を「5GB → 10GB」に拡張する場合の例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/* 作成済みのリソースプールを確認する SQL */ dbadmin=> SELECT name, memorysize, maxmemorysize FROM resource_pools; name | memorysize | maxmemorysize -----------+------------+--------------- general | | Special: 95% sysquery | 1G | tm | 10G | refresh | 0% | recovery | 0% | dbd | 0% | jvm | 0% | 2G blobdata | 0% | 10% metadata | 0% | test_pool | 5G | (10 rows) /* MAXMEMORYSIZE を調整する SQL */ dbadmin=> ALTER RESOURCE POOL test_pool MAXMEMORYSIZE '10G'; ALTER RESOURCE POOL /* 調整後の確認 */ dbadmin=> SELECT name, memorysize, maxmemorysize FROM resource_pools; name | memorysize | maxmemorysize -----------+------------+--------------- general | | Special: 95% sysquery | 1G | tm | 10G | refresh | 0% | recovery | 0% | dbd | 0% | jvm | 0% | 2G blobdata | 0% | 10% metadata | 0% | test_pool | 5G | 10G (10 rows) |
③ Vertica 停止
メモリ増設をするために、Vertica を停止します。「Management Console → エージェント → Vertica データベース」の順番に停止します。
④ サーバ(OS)停止
メモリ増設をするために、サーバ(OS) を停止します。ご利用環境の手順にしたがって、停止をしてください。
⑤ メモリ増設
メモリの増設をします。ご利用環境の手順にしたがって、増設をしてください。
⑥ サーバ(OS)を起動
サーバ(OS)を起動します。ご利用環境の手順にしたがって、起動をしてください。
⑦ 増設したメモリが認識されているか確認
増設したメモリがハードウェア、OS レベルで認識されているか、確認します。ご利用環境の手順にしたがって、確認をしてください。
⑧ 要件チェックスクリプトを実行
以下のスクリプトを全ノードにて、rootユーザ(OS) で実行します。
1 2 3 4 5 6 7 8 |
<< Vertica 9.2 まで >> # /opt/vertica/oss/python/bin/python -m vertica.local_verify << Vertica 9.3 から 11.0 まで >> # /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify << Vertica 11.1 >> # /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify |
メモリサイズが変わることで、local_verify が検出の可能性があるパラメータは、以下のとおりです。
local_verify が検出したものだけを対応してください。各パラメータを (a)~(f) として、以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<< Vertica 10.1 の実行例 >> (a) min_free_kbytes Setting 以下のように出力された場合は、推奨値である「71772」を設定します。 # CheckNodeSysctl.check_vm_min_free_kbytes (0.001s) FAIL (S0050): vm.min_free_kbytes is too low: your 67584 kB < 71772 kB https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0050 (b) System Max Open Files Limit 以下のように出力された場合は、推奨値である「314413」を設定します。 # CheckNodeSysctl.check_fs_file_max (0.001s) FAIL (S0120): fs.max-file is too low: your 262425 < 314413 https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0120 (c) pid_max Setting 以下のように出力された場合は、推奨値である「524288」を設定します。 # CheckNodeSysctl.check_kernel_pid_max (0.001s) FAIL (S0111): kernel.pid_max is too low: found 10000, which is below threshold 524288 https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0111 (d) Maximum Memory Maps Configuration 以下のように出力された場合は、推奨値である「20122476」を設定します。 # CheckNodeSysctl.check_vm_max_map_count (0.001s) FAIL (S0130): vm.max_map_count is too low: your 16509820 < 20122476 https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0130 (e) User Max Open Files Limit 以下のように出力された場合は、推奨値である「314413」を設定します。 # CheckNodeLimits.check_open_file_limit (0.170s) FAIL (S0060): Limits for open files are too low: your hard limit 257965 < 314413, your soft limit 257965 < 314413. https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0060 (f) User Process Limit 以下のように出力された場合は、推奨値である「314413」を設定します。 # CheckNodeLimits.check_user_proc_limit (0.173s) FAIL (S0110): Limits for user processes are too low: your hard limit 257965 < 314413, your soft limit 257965 < 314413. https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0110 |
⑨ カーネルパラメータ変更
「⑧」の検出内容に修正するために、各パラメータを全ノードで変更します。[設定ファイル]
1 2 |
(a)~(d)の設定ファイル:/etc/sysctl.conf (e)~(f)の設定ファイル:/etc/security/limits.conf |
[パラメータ]
設定例を以下に記載していますが、設定値には local_verify が出力する推奨値を指定してください。
1 2 3 4 5 6 |
(a) vm.min_free_kbytes = 71772 (b) fs.file-max = 314413 (c) kernel.pid_max = 524288 (d) vm.max_map_count = 20122476 (e) dbadmin - nofile 314413 (f) dbadmin - nproc 314413 |
⑩ サーバ(OS)再起動
カーネルパラメータの設定変更を反映するために、サーバ(OS)再起動を実行します。⑪ 要件チェックスクリプトを実行
設定に漏れがないかの確認をおこなうため、以下のスクリプトを全ノードにて、rootユーザ(OS)で実行します。
1 2 3 4 5 6 7 8 |
<< Vertica 9.2 まで >> # /opt/vertica/oss/python/bin/python -m vertica.local_verify << Vertica 9.3 から 11.0 まで >> # /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify << Vertica 11.1 >> # /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify |
Verticaの要件を満たしている場合は、「pass:50」が出力されます。
1 2 3 4 5 6 7 |
<< Vertica 10.1 の実行例 >> Summary: --- pass: 50 Output found in /opt/vertica/log/local-verify-20210708_082218.xml |
⑫ Vertica起動
Management Console、エージェント、Verticaデータベースのステータスを確認します。もし、停止している場合は起動します。
検証バージョンについて
この記事の内容はVertica 11.1で確認しています。更新履歴
2022/07/05 11.1用のコマンドを追加2021/07/14 Vertica 10.1用に手順修正、見出しを要件チェックスクリプトに修正
2019/11/08 Vertica 9.2用に手順修正
2018/07/26 本記事を公開