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