2016-11-22 38 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