パーティーション構成(システム以外)
パーティーションレイアウトはこんな感じで設定しています。(df -hの結果)
vdaとvdbは、qcow2のイメージファイルですが、ホストOSでは、vdaがMegaRAIDのRAID1論理ドライブ(btrfs)、vdbがSSD×2のSW-RAID1(btrfs)に配置しています。
ファイルシス サイズ 使用 残り 使用% マウント位置 udev 7.9G 0 7.9G 0% /dev tmpfs 1.6G 89M 1.5G 6% /run /dev/vda1 9.1G 2.9G 5.8G 34% / tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/vda3 82G 12G 68G 15% /srv/hdd /dev/vdb1 100G 41G 59G 42% /srv/ssd /dev/zram0 2.0G 509M 1.4G 27% /srv/ram
さらに、btrfsのサブボリュームを作成し、snapshotを取得しやすいように色々と設定
/srv/ssd/www ←nginxのDocumentRootであり、どどんとふ本体や、imageUploadSpaceを配置 /srv/ssd/data ←/srv/ram/data以下と定期的にrsyncする先 /srv/hdd/log ←nginxのアクセスログや、どどんとふのlog保管場所 /srv/ram/data ←どどんとふのsavedata保存場所
RAMDISKの作成とリストア
zram0については、システム起動時にzram_initというShellScriptでzramを初期化し、SSDからコピーするようにしています。
zram_initの中身(容量は2GB確保していますが、普通は512MBでも足りると思います)
#!/bin/bash cat /proc/mounts |grep zram0 if [ $? -eq 0 ] then echo "zram0 is ready" else echo "formatting zram0" modprobe zram echo 2G >/sys/block/zram0/disksize mkfs.btrfs /dev/zram0 echo "mounting /dev/zram0 to /srv/ram" mount -t btrfs /dev/zram0 -o compress=no,nobarrier,noatime /srv/ram mkdir /srv/ram/data cd /srv/ssd/data && rsync -avuAX * /srv/ram/data/ --exclude='*.lock' fi
カーネルまわりの設定
/etc/sysctl.confに以下の設定を追加し、バッファ盛り盛りのカリカリチューニングしてます。
net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 1 net.ipv4.conf.all.arp_filter = 0 # Protect Against TCP Time-Wait net.ipv4.tcp_rfc1337 = 1 # Allowed local port range net.ipv4.ip_local_port_range = 8192 65535 net.ipv4.tcp_mem = 65536 131072 262144 net.ipv4.udp_mem = 65536 131072 262144 # Increase the read-buffer space allocatable net.ipv4.tcp_rmem = 8192 87380 16777216 net.ipv4.udp_rmem_min = 16384 # Increase the write-buffer-space allocatable net.ipv4.tcp_wmem = 8192 65536 16777216 net.ipv4.udp_wmem_min = 16384 # Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks net.ipv4.tcp_max_tw_buckets = 1440000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.core.somaxconn = 32768 net.ipv4.tcp_max_syn_backlog=1024 net.ipv4.tcp_slow_start_after_idle=0
前提ソフトウェアのインストール
どどんとふが稼働するのに必要な前提ソフトウェアをインストール。(rubyのバージョンは、1.9.x~2.2で動作確認済み。2.3以降はたぶん動くと思いますが、ダメだったら作者にバグレポートしてください)
$ sudo apt-get install nginx-extras fcgiwrap ruby2.2 ruby-uconv libfcgi-dev gcc make ruby2.2-dev rake $ sudo gem2.2 install fcgi msgpack json i18n
仮想マシンのOSまわりの設定でした。nginxやどどんとふ本体の設定については、後日続きを書いていきます。