2ch上の書き込みで画像直リンクをアクセス拒否するApacheの設定

2ch上の書き込みで画像直リンクによるアクセス拒否するApacheの設定。

需要ありそうなので記録。


<FilesMatch "\.(?i:gif|jpg|png|jpeg)$">
SetEnvIf Referer "^http://[a-z]+\.2ch\.net" shutout
SetEnvIf Referer "^http://ime\.nu" shutout
order Allow,Deny
Allow from all
Deny from env=shutout
</FilesMatch>

http://ime.nu からのアクセス拒否だけで問題ないと思うが 念のため2ch.netからも含める。

もちろん、URLをコピーしてアドレス欄に張り付けした場合は見えますよ。

LINEで送る

logwatch のディスク空き領域レポートを inode 残量にする

VPSだとハードディスクの容量に対して inode の量が全然少ないので,ディスクの空き領域を気にするより inode の残量を気にする方が適切。

logwatchは毎日ログレポートをメールで送ってくれるログ監視ツール。 そのlogwatchのレポートの1つDisk Space レポートがディスクの容量のレポートなんだけど,それをディスクの inodeの量に変更する方法。

CentOS 5や CentOS 6の場合の設定。

設定ファイルを作成。
vi /etc/logwatch/conf/services/zz-disk_space.conf
ファイルの中身は次の1行のみ。

$df_options = “-i -h -l -x tmpfs”

これで,日々rootに届く logwatch レポートのハードディスク空き領域が inode の量に変更される。

logwatch コマンドを実行するとすぐにレポートを作成して送ってくれる。これで確認する。

# logwatch

ディスク空き領域の他のデフォルト設定ファイルはこちら。 /usr 以下になあるから,あまり書き換えない方がいいだろう。
cat /usr/share/logwatch/default.conf/services/zz-disk_space.conf

# $disk_cmd = “df $df_options”

LINEで送る

VPSサーバの「カゴヤ クラウド VPS タイプA」と「さくらのVPS 1G」を実際に両方使って比較ができた。

サービス・価格・内容には非常に似ているが,実際に使ってみると「非公開の部分」が結構違うようだ。
VPSの仮想化技術の OpenVZ と kvm の違いによるところも大きい。

メモリが全然違う。
カゴヤ OpenVZ : swap が使えない。スワップ作成しても追加できない。メモリが保障メモリと最大メモリの2段階。保障メモリが実メモリで最大メモリがswap領域換算で考えるといいのか?ちょっと乱暴か。バッファが仮想PC上にない。
さくら kvm : swapが使える。自分でスワップを作成しても追加できるのでなにげに限界性能をアップできる。メモリはOpenVZでの保障メモリ相当のようだが,バッファもこのメモリを使う。

カゴヤOpenVZ のssh と サクラkvm の sshを使った感じではカゴヤクラウドVPS は時々キー入力の反応が2,3秒ぐらいないことがある。 さくらのVPSの方はそんなことはない。

どちらのVPSにも共通することは とにかく inodeが少ない。

しかも,どちらもinodeの容量は非公開だ。

inode は ファイルがハードディスク上のどこにあるのかを管理する情報のこと:
http://ja.wikipedia.org/wiki/Inode

どちらのファイルシステムとも inode が 通常のCentOSでデフォルトのままハードディスクをフォーマットしたときに用意される inodeの量の 4分の1もない。
小さいファイルがたくさんあると ハードディスクの容量がいっぱいになる ずっと前にinode を使い切ってしまい,ハードディスクの空き領域がいくらあってもハードディスクが使えなくなる。

実際に,ハードディスクを半分も使わないうちに inodeを先に使い切ってしまう場面に遭遇して困った。

VPSを使う前に inode の容量を確認しておこう。他にもいろいろ制約がある。
CentOS 5 x64 だったら 約100GBのハードディスクの場合,CentOSのデフォルト設定では inode は 約 28MBになる。

以下,ガチ比較情報(2012/7/26現在。改善され,最新と異なる場合があります。):
公開情報ではないので,消されるかも・・・・。(汗)

ハードディスク比較

カゴヤ クラウド/VPS タイプA 

ハードディスクは契約上200GBだが,全容量は最初から1000GBあるように見えているので,自動で1000GBまで拡張できる。(もちろん追加料金必要)サイズを増やすのに再フォーマットや別途手続きが不要な点はよい。だだしIノードが致命的に少ないので,この容量を有効活用することは難しいだろう。
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/simfs 1000G 8.2G 992G 1% /
none 1.0G 4.0K 1.0G 1% /dev
$ df -ih
Filesystem Iノード I使用 I残り I使用% マウント位置
/dev/simfs 3.8M 454K 3.3M 12% /
none 256K 96 256K 1% /dev
$ df -i
Filesystem Iノード I使用 I残り I使用% マウント位置
/dev/simfs 3904333 464716 3439617 12% /
none 262144 96 262048 1% /dev

Iノード数は絶望的に少ない。普通 100GBなら,28Mぐらいあるのに1000GBでたった 3.8M。増やすには上位コースに変更する必要がある。

さくらのVPS 1G
$ df -h
Filesystem Size Used Avail Use% マウント位置
/dev/vda3 97G 22G 71G 24% /
tmpfs 499M 48K 499M 1% /dev/shm
/dev/vda1 251M 118M 121M 50% /boot

$ df -i
Filesystem Inodes IUsed IFree IUse% マウント位置
/dev/vda3 6406144 396962 6009182 7% /
tmpfs 127586 5 127581 1% /dev/shm
/dev/vda1 66264 62 66202 1% /boot

$ df -hi
Filesystem Inodes IUsed IFree IUse% マウント位置
/dev/vda3 6.2M 388K 5.8M 7% /
tmpfs 125K 5 125K 1% /dev/shm
/dev/vda1 65K 62 65K 1% /boot

さくらの1GはカゴヤクラウドVPS タイプAの半分のハードディスク容量だが,Iノードは2倍の 6.2Mある。とはいえ,普通のCentOSなら 100GBでIノードは 28Mぐらいあるので,全然少ない。

メモリについて

カゴヤクラウド VPSは 保障メモリ最大メモリの区別なし。OpenVZなためか,バッファやスワップもなし。そもそも仮想マシン上でのメモリ残量は実際のメモリ残量ではない。保障メモリを超えての割り当ては期待できないが,スワップ領域が無いのでスワップの代わりとして最大メモリが設定されているのだろう。

$ free -m
total used free shared buffers cached
Mem: 2048 770 1277 0 0 0
-/+ buffers/cache: 770 1277
Swap: 0 0 0

スワップ有効コマンドがない。
$ swapon -s
-bash: swapon: command not found

サクラのVPS 1Gは swapは標準で2GBだが,自分でスワップファイルを作成して追加できた。(2GB追加済みの例)
$ free -m
total used free shared buffers cached
Mem: 996 851 145 0 156 203
-/+ buffers/cache: 490 505
Swap: 4095 375 3719

スワップ設定が自分で出来てしまうのは大きい。限界性能を引き上げることが可能。
$ swapon -s
Filename Type Size Used Priority
/dev/vda2 partition 2096472 384684 -1
/swapfile file 2097144 0 -2

CPU の比較

カゴヤ タイプAはコア数3。
サクラの1G はコア数2。

1コアあたりのCPU性能はどちらもほとんど同じだ。

ハードディスクやネットワークやメモリ管理系を複数PCで共有しているので,複数の仮想マシン間でのリソースの取り合いで発生する待ち時間が長いため,CPUは仮想化でも結構余裕がある。この辺はどこのVPSでも同じだろう。

CPUのスペック的にはカゴヤ タイプAの方が少しだけよさそう。でも実速度は他が極端に遅いので大差ないだろう。

カゴヤ クラウド VPS  タイプA

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
stepping : 2
cpu MHz : 2533.500
cache size : 12288 KB
physical id : 1
siblings : 8
core id : 0
cpu cores : 4
apicid : 32
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
bogomips : 5067.00
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: [8]

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
stepping : 2
cpu MHz : 2533.500
cache size : 12288 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
bogomips : 5066.84
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: [8]

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
stepping : 2
cpu MHz : 2533.500
cache size : 12288 KB
physical id : 1
siblings : 8
core id : 1
cpu cores : 4
apicid : 34
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
bogomips : 5066.82
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: [8]

サクラの1G

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5645
stepping : 1
cpu MHz : 2400.084
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor
bogomips : 4800.16
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5645
stepping : 1
cpu MHz : 2400.084
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor
bogomips : 4800.16
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:

 

ーーー

追記(2012/07/30):

CentOS 6からは OpenVZ でも swapが使えるようになりました。そのためか,カゴヤ クラウド VPSでもswapがつかえるようになりました。

 

追記(2012/09/19):

カゴヤとサクラで OpenVZとkvmが全然逆になっていました・・・。修正しました。
そして,OpenVZとkvmの説明も全部逆ですね。失礼しました。
カゴヤは OpenVZ で サクラは kvmです。
文面,一部修正。

LINEで送る