2016-11-22 25 views
0

我尝试LXC容器环境memsql 5.5离线部署。 安装memsql-ops成功。当我运行以下命令添加memsql脱机媒体“memsqlbin_amd64.tar.gz”时,该命令失败,并显示有关“空间不足”的错误消息。离线memsql 5.5安装失败“的空间不足”的错误

以下是完整的错误消息:

# memsql-ops file-add -t memsql memsqlbin_amd64.tar.gz    
Traceback (most recent call last): 
    File "/usr/local/updated-openssl/lib/python3.4/site-packages/cx_Freeze/initscripts/Console.py", line 27, in <module> 
    File "/memsql_platform/bin/memsql-ops", line 18, in <module> 
    File "/memsql_platform/memsql_platform/agent/cli/client.py", line 210, in parse 
    File "/memsql_platform/memsql_platform/agent/cli/command_file_add.py", line 27, in run 
    File "/memsql_platform/memsql_platform/agent/cli/file_add_mixin.py", line 61, in add_file 
    File "/memsql_platform/memsql_platform/network/api_client.py", line 126, in call 
    File "/memsql_platform/memsql_platform/network/api_client.py", line 92, in _call 
memsql_platform.api.exceptions.DeviceOutOfDisk: The API is currently disabled because the disk that MemSQL Ops is installed on is out of space. 

可以运行df -h可以看到磁盘空间不是从主机侧面或容器内的一个问题。

# df -h 
Filesystem  Size Used Avail Use% Mounted on 
/dev/sdc  559G 3.2G 554G 1%/
none   492K  0 492K 0% /dev 
/dev/sdc  559G 3.2G 554G 1% /software 
cgroup_root  10M  0 10M 0% /sys/fs/cgroup 
tmpfs   63G  0 63G 0% /dev/shm 
tmpfs   63G 8.1M 63G 1% /run 
tmpfs   13G  0 13G 0% /run/user/0 

我怀疑LXC容器可能会从主机端继承一些系统目录,并阻止应用程序写入这些目录。但是在互联网上搜索让我相信LXC容器没有这种限制。

搜索相同的错误信息在谷歌给我什么。我希望这个问题可以解决,但我也想知道为什么这可能发生在容器中。据我所知,memsql已正式部署到docker中。我很想知道如何实现这一点。

回答

0

我假设cgroup_root是挂载你的LXC容器 - 看来你只能提供该容器10M。

MemSQL行动至少需要在主机系统上的可用空间50M的,如果没有它,它会进入休眠状态,并避免做任何系统。这显然不是您想要的,但它是生产工作负载接近磁盘容量的系统的保障。

你需要分配更多的空间给你的LXC容器。请记住MemSQL Ops会将MemSQL安装到这个文件系统中,因此您需要为二进制和共享库以及MemSQL中的数据分配足够的空间。

+0

我不太知道“cgroup_root”这里的入口。 lxc手册页并没有说明。但是“df -h /”返回“/ dev/sdc 559G 3.2G 554G 1%/”。这让我认为容器根位于/ dev/sdc中,即容器的实际位置。 – robert

+0

MemSQL Ops检查数据目录所在的磁盘(默认情况下为/ var/lib/memsql-ops)以及您的tmpdir它使用'psutil.disk_usage([OPS_DATA_DIR,tmpdir])检查磁盘使用情况'这最终呼吁:https://github.com/giampaolo/psutil/blob/master/psutil/_psposix.py#L123 – memsqlite

+0

虽然这个答案不直接解决这个问题。但它激励我尝试不同的后备存储(LXC容器存储),如** ZFS **和**目录**,它们可以在容器中成功部署MemSQL。所以我喜欢对待这个问题的解决方案。但是,为了解决问题的根源,我认为最好让MemSQL用'df/var'来检查可用空间。 – robert