Redis 2.0.3不会放弃BGREWRITEAOF后删除的appendonly.aof文件

Ubuntu 10.04.2,Redis 2.0.3(问题最后的更多细节)。

Redis的AOF文件变得太大,以至于很快就会威胁到我的小硬盘VPS盒子上的整个可用磁盘空间:

 $ df -h
使用的文件系统大小可用使用%
 / dev / xvda 32G 24G 6.7G 78%/

 $ ls -la
总计3866688
 drwxr-xr-x 2 redis redis 4096 2011-03-02 00:11
 drwxr-xr-x 29 root root 4096 2011-01-24 15:58
 -rw-r ----- 1 redis redis 3923246988 2011-03-02 00:14 appendonly.aof
 -rw-rw ---- 1 redis redis 32356467 2011-03-02 00:11 dump.rdb

当我运行BGREWRITEAOF ,AOF文件会缩小,但磁盘空间不会被释放:

 $ ls -la
总计95440
 drwxr-xr-x 2 redis redis 4096 2011-03-02 00:17
 drwxr-xr-x 29 root root 4096 2011-01-24 15:58
 -rw-rw ---- 1 redis发布时间:2011-03-02 00:17 appendonly.aof
 -rw-rw ---- 1 redis redis 32476167 2011-03-02 00:17 dump.rdb

 $ df -h
使用的文件系统大小可用使用%
 / dev / xvda 32G 24G 6.7G 78%/

果然,Redis仍然拿着被删除的文件:

 $ sudo lsof -p6916
命令PID用户FDtypes设备大小/关节点名称
 ...
 redis -ser 6916 redis 7r REG 202,0 3923957317 918129 /var/lib/redis/appendonly.aof(删除)
 ...
 redis -ser 6916 redis 10w REG 202,0 66952615 917507 /var/lib/redis/appendonly.aof
 ...

我该如何解决这个问题? 这次我可以重新启动Redis,但我真的很想避免这样做。

请注意,我无法升级到2.2(尽pipe升级到2.0.4是可行的)。

有关我的系统的更多信息:

 $ lsb_release -a
没有LSB模块可用。
经销商ID:Ubuntu
描述:Ubuntu 10.04.2 LTS
版本:10.04
代号:清楚

 $ uname -a
 Linux my.box 2.6.32.16-linode28#1 SMP Sun Jul 25 21:32:42 UTC 2010 i686 GNU / Linux

 $ redis-cli info
 redis_version:2.0.3
 redis_git_sha1:00000000
 redis_git_dirty:0
 arch_bits:32
 multiplexing_api:epoll的
 PROCESS_ID:6916
 uptime_in_seconds:632728
 uptime_in_days:7
 connected_clients:2
 connected_slaves:0
 blocked_clients:0
 used_memory:65714632
 used_memory_human:62.67M
 changes_since_last_save:8398
 bgsave_in_progress:0
 last_save_time:1299014574
 bgrewriteaof_in_progress:0
 total_connections_received:17
 total_commands_processed:55748609
 expired_keys:0
 hash_max_zipmap_entries:64
 hash_max_zipmap_value:512
 pubsub_channels:0
 pubsub_patterns:0
 vm_enabled:0
作用:主
 DB0:键= 1,过期= 0
 DB1:键= 18,期满= 0

原来这是Redis的一个真正的bug,在2.2.2中修复。