このスレッドは非常に古いですが、まだ関連しています。
MySQLデータベース上の多くの小さな書き込みをマージし、Ceph RBDイメージを使用してKVMの下でVMとして実行したかったのです。
ゲスト:CentOS 6 VMの/ etc / fstab:
/dev/sda1 / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,noatime,nodiratime,commit=60,data=journal,discard 1 1
「/ dev / sda」デバイス(1 TiB)は、圧縮された消去コード化NVMeプールにあり、トリプル複製NVMeプールに比較的小さな(128 MiB)専用ジャーナルデバイスがあります。
これでレスキュー環境で使用したコマンドは次のとおりです。
ジャーナルを切り離します。
tune2fs -O ^has_journal /dev/sda1;
ファイルシステムの不整合を確認します。
fsck.ext4 -f -C 0 /dev/sda1;
ブロックサイズを取得する:
tune2fs -l /dev/sda1;
専用ジャーナルデバイスのフォーマット(警告):
最小ジャーナルサイズは1024 *ブロックサイズである必要があります(安全のために128 MiBを使用しています)
/ dev / sda1のブロックサイズと一致するようにブロックサイズを設定します
mke2fs -O journal_dev -L root_journal /dev/sdb1 -b 4096;
専用のジャーナルデバイスをファイルシステムに接続します。
tune2fs -j -J device=LABEL=root_journal /dev/sda1;
MySQL設定:
[mysqld]
innodb_old_blocks_time = 1000 # Prevent buffer pool pollution. Default as of MySQL 5.6
innodb_buffer_pool_size = 24576M # MySQL Cache
innodb_log_buffer_size = 128M # 25% of log_file_size
innodb_log_file_size = 512M # 25% of the buffer_pool (no, not really)
query_cache_size = 128M # Query Cache
table_cache = 512 # Make it large enough for: show global status like 'open%';
#mysqltuner.pl:
innodb_flush_method = O_DSYNC # Don't validate writes. MySQL 5.6+ should use O_DIRECT
innodb_flush_log_at_trx_commit = 2 # Flush MySQL transactions to operating system cache
join_buffer_size = 256K
thread_cache_size = 4
innodb_buffer_pool_instances = 16
skip-innodb_doublewrite
data=journal
より安全な結果が得られるケースは見つかりません。持っていますか?data=ordered
nodelalloc