読者です 読者をやめる 読者になる 読者になる

ファイルシステムにやさしく rsync する

技術

rsync の I/O 優先度を下げてはみたけど、load average がやっぱり上がってしまう。

あるディレクトリのスキャン中に数字が上がるのに気づいたので、ls かけてみると全然反応がかえってこない。数えたらファイル数が 50,000 を超えていた。

ディレクトリの下に大量のファイルを置くな、という話は聞くし、たとえば git はファイルシステムの性能問題があるというので、.git/objects の下はサブディレクトリで区切られていたりする。

幸い今回の件のファイル名は md5 になっている。 とりあえず git のアプローチを拝借することにして rename を書いた。

$ cd too/much/files
$ echo {0..255} | xargs -n1 printf "%02x\n" | xargs mkdir -p
$ rename 's#^(..)#$1/#' *

これで rsync したら load average が安定するようになった。