glance cache
- 如果enable了 cache_manage middleware 可以PUT /queued-images/<IMAGE_ID>
- 或者可以使用glance-cache-manage,该命令还可以其他host来运行。
queue/
└── 6ee64b2e-48e3-4dc9-8c43-bc5a4ccc12a9
def run(self):
查看queue中的image
每个image启动一个eventlet运行self.fetch_image_into_cache 分chunk读入到/opt/stack/data/glance/cache/incomplete
完成后,移入到/opt/stack/data/glance/cache/ 并且删除queue/
1.6G -rw-rw-r-- 1 yuntong yuntong 1.6G 10月 14 15:21 incomplete/6ee64b2e-48e3-4dc9-8c43-bc5a4ccc12a9
1. 如果enable了 cache_manage middleware,可以 GET/cached-images
2. 使用glance-cache-manage
$> glance-cache-manage --host=<HOST> list-cached
3.直接查看cache目录
$> ls -lhR $IMAGE_CACHE_DIR
在devstack中,image_cache_dir = /opt/stack/data/glance/cache/
http://docs.openstack.org/developer/glance/cache.html
cache的driver有2种:
1. sqlite, cache信息存在DB中:
cur = db.execute("""SELECT
image_id, hits, last_accessed, last_modified, size
FROM cached_images
ORDER BY image_id""")
def get_cache_size(self):
计算目录大小/opt/stack/data/glance/cache/
def get_hit_count 从DB
def get_cached_images DB
def is_cached 查看文件是否存在
def is_queued 是否在/opt/stack/data/glance/cache/queue目录中
def is_being_cached 是否在/opt/stack/data/glance/cache/incomplete目录中
delete_all_cached_images 删除文件和DB信息
def queue_image 在/opt/stack/data/glance/cache/queue touch一个文件
和incomplete一起工作,实现commit/rollback
2.xattr: cache信息从文件中获取
def get_hit_count
return int(get_xattr(path, 'hits', default=0))
entry['last_modified'] = file_info[stat.ST_MTIME]
entry['last_accessed'] = file_info[stat.ST_ATIME]
entry['size'] = file_info[stat.ST_SIZE]
entry['hits'] = self.get_hit_count(image_id)