我有一个正在运行的Aerospike服务器,在一个集合中有大约36,000条记录。所有我存储的都是这个集合的几个箱子。我已经配置了我的aerospike.conf文件来保存磁盘上的数据:
namespace default {
replication-factor 2
memory-size 4G
default-ttl 0
storage-engine device {
file /opt/aerospike/data/default.dat
filesize 2T
data-in-memory true
}
}
我遇到的问题是我的/opt/aerospike/data/default.dat
文件在我的系统中列为大约2TB:
/opt/aerospike/data# ls -lh
total 10M
-rw------- 1 root root 2.0T Jun 5 19:01 default.dat
我的问题是:
为什么当我在Aerospike中使用的数据现在很小时,这个.dat文件必须是2TB?
我的硬盘限制为78GB,为什么我的Ubuntu系统没有让我没有出现驱动器空间错误?
系统磁盘空间看起来很好:
df -h --total
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 79G 4.2G 72G 6% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 8.0K 2.0G 1% /dev
tmpfs 395M 424K 395M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
total 83G 4.2G 76G 6% -
有人有什么想法吗?
答案 0 :(得分:5)
那么,
Aerospike使用稀疏文件(或其类型)来存储其文件存储。
因此,当您在命名空间配置中指定filesize 2T
时,Aerospike将创建一个大小为2TB的稀疏文件,您将看到它。
http://en.wikipedia.org/wiki/Sparse_file
所以,它只是一个包含一些元数据而不是真正的2TB数据的文件。一旦文件内容实际填满了您的磁盘,您将在系统和Aerospike中看到通常的磁盘已满错误。