概要
3.0がリリースされたのでインストール方法をメモ。
Warningを消すのがちょっと面倒です。
環境
- Ubuntu 14.04
- MongoDB 3.0.0
インストール
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 $ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list $ sudo apt-get update $ sudo apt-get install -y mongodb-org
Warningを消す
コンソールでアクセスすると以下のWarningが出ます。
$ mongo MongoDB shell version: 3.0.0 connecting to: test Server has startup warnings: 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-03-12T01:03:29.659+0000 I CONTROL [initandlisten]
解決法をネットで調べると以下の4通りのどれかがヒットします。
方法 | 問題点 |
---|---|
grubで設定する | /etc/default/grub でなく/boot/grub/grub.cfg を直接編集しないと動かず。設定しても最初のやつだけしか消えず |
hugeadmで設定する | うまく動かず |
rc.localで設定する | マシンを再起動後、mongodをもう一度再起動する必要性あり |
upstartで設定する | mongoがアップデートしたら設定も上書きされて消えるかも |
まともに動いたのが後ろ2つなのでそれらの方法を紹介します。
rc.localで設定する
以下を/etc/rc.local
に追記
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
マシンを再起動して、さらにmongodを再起動します。
$ sudo service mongod restart
この理由としてはmongod
の起動の方はUpstartのためrc.local
より早く、mongod
起動時にはまだ設定がalways
のままなんです。
なのでマシンを再起動したりするとまたWarningが出てきます。
MongoのUpstartを修正する
/etc/init/mongod.conf
を編集します。pre-start script
の部分に以下を追記します。
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
サービスを再起動するとWarningが消えるようになります。
$ sudo service mongod restart
まとめ
まだこのWarningを消すベストプラクティスはなさげです。TokuMXみたいにデフォルトでupstartのconfについてるといいのですが。