CentOS6ででかいファイルをdiffすると「仮想メモリを使い果たしました」
仕事ででかいSQLファイル(あるサーバーで動いているMovableTypeのMySQLダンプ)を別のサーバーに持っていく事になった。MTのDBにはサイトURLなどが入っているのでそのまま持っていくとリンクが全部元サーバーに行ってしまったりする。
なのでまずはsedを使って別のドメインに変換する。本当はここはもっと色々やってるけど今回の話には関係ないのでこれだけ。
# sed 's/moto.no.url.fqdn/saki.no.url.fqdn/ig' moto.sql > saki.sql
確認のためにdiffを取ると怒られた。「仮想メモリを使い果たしました」とな。一つのファイルが2GBあるからな。ぐぐってみてもいまいち解決策を示したサイトがないのでここで記す。仮想メモリが無いなら足してやればいいだけだ。
# dd if=/dev/zero of=/tmp/swap bs=1G count=5 # mkswap /tmp/swap # swapon /tmp/swap
これで仮想メモリが5GB増える。もう一度diff。うまくいった。終わった後は追加した仮想メモリをお片づけしよう。
# swapoff /tmp/swap # rm /tmp/swap
このようにCentOS(というかLinux)では動的に仮想メモリを増やす事ができる。