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

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

Ubuntu 10.04.2,Redis 2.0.3(问题末尾有更多详细信息)。

我的 Redis AOF 文件变得太大,以至于很快就会占用我的小 HDD 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 根 根 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 根 根 4096 2011-01-24 15:58..
-rw-rw---- 1 redis redis 65137639 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 用户 FD 类型 设备大小/关闭节点名称
...
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(但可以升级到 2.0.4)。

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

$ lsb_release-a
无可用的 LSB 模块。
分销商 ID:Ubuntu
描述:Ubuntu 10.04.2 LTS
版本:10.04
代号:lucid

$ uname -a
Linux my.box 2.6.32.16-linode28 #1 SMP 星期日 7月 25 21:32:42 UTC 2010 i686 GNU/Linux

$ redis-cli 信息
redis_version:2.0.3
redis_git_sha1:00000000
redis_git_dirty:0
架构位:32
多路复用API:epoll
进程 ID:6916
正常运行时间(秒):632728
正常运行时间(天数):7
已连接客户端:2
已连接的从属:0
阻止客户端:0
已用内存:65714632
已用内存:62.67M
自上次保存以来的变化:8398
保存进度:0
上次保存时间:1299014574
bgrewriteaof_in_progress:0
总收到连接数:17
已处理命令总数:55748609
已过期密钥:0
hash_max_zipmap_entries:64
hash_max_zipmap_value:512
pubsub_channels:0
pubsub_patterns:0
虚拟机已启用:0
角色:主人
db0:键=1,过期=0
db1:键=18,过期=0

答案1

事实证明这是 Redis 中的一个真正的错误,将在 2.2.2 中修复。

相关内容