ubuntu16.04でMongoDB3.4をインストールして、mongoで接続すると、下記のWARNINGが出ってしまう:
** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
** See http://dochub.mongodb.org/core/prodnotes-filesystem
** WARNING: Access control is not enabled for the database.
** Read and write access to data and configuration is unrestricted.
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
** We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
** We suggest setting it to 'never'
無視してもいいが、うるさいので消したい!(本番環境なら全部きちんとクリアしたいしね)
まず最初のWARNING
説明通りが、XFSファイルシステムが推薦されるので、--dbpatchをXFSファイルシステムのストレージに向けば解消できる。
まずxfsファイルシステムを作成用に必要なパッケージをインストール
sudo apt-get install xfsprogs
ストレージをmountする手順は環境によって少し変わるが、最近よく使われているクラウドサービスのblock storageを利用する場合を説明する(/dev/vdbにアタッチしている場合)
# GPTラベル作成
sudo parted -s /dev/vdb mklabel gpt
# パーティションを作成
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%
# xfsタイプのファイルシステムを作成
sudo mkfs.xfs /dev/vdb1
# mount用にディレクトリ作成
sudo mkdir /mnt/mongodata
/etc/fstabを開いて、下記の行を追記
/dev/vdb1 /mnt/mongodata xfs defaults,noatime 0 0
作成したファイルシステムをmountする:
sudo mount /mnt/mongodata
/etc/mongd.confを開いて、下記の設定を変更する:
...
storage:
dbPath: /mnt/mongodata/db # <= この行
journal:
enabled: true
...
保存したら、先ほど指定したdbPathを作成する:
# db ディレクトリを作成
mkdir /mnt/mongodata/db
# オーナーをmongodbにする
chown mongdb:mongodb /mnt/mongodata/db
再起動すればWARNINGクリア!
sudo service mongod restart
二つ目のWARNING
アクセス権限が設定されてない警告なので、mongodbの管理アカウントを作成すれば解消:
mongoでコンソールを開いて、下記のように管理ユーザを作成
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
認証を有効するには、/etc/mongd.confを開いてsecurity.authorizationの値をenabledに設定:
...
security:
authorization: enabled
...
再起動すれば二つ目のWARNINGもクリア!
sudo service mongod restart
詳しくは公式のドキュメントを参考すると良い:https://docs.mongodb.com/manual/tutorial/enable-authentication/
最後の二つ
下記の手順できれいに消せます:
Step1. sysfsutilsをインストール
sudo apt install sysfsutils
Step2. /etc/sysfs.confに下記の2行を追記:
kernel/mm/transparent_hugepage/enabled = never
kernel/mm/transparent_hugepage/defrag = never
Step3. 有効させる
/etc/init.d/sysfsutils start
Step4. mongodを再起動
sudo service mongod restart
参考:https://askubuntu.com/questions/597372/how-do-i-modify-sys-kernel-mm-transparent-hugepage-enabled