首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker上的QIIME2 :设备上没有剩余空间(尽管有)

Docker上的QIIME2 :设备上没有剩余空间(尽管有)
EN

Stack Overflow用户
提问于 2018-10-26 20:20:24
回答 1查看 842关注 0票数 0

我想用QIIME2在Docker容器上分析数据。请注意,这是我第一次使用Docker。我创建了图像,然后创建了容器,并成功地开始分析一小部分数据。但是,管道的一个步骤会系统性地失败,并显示以下错误消息,抱怨剩余空间:

代码语言:javascript
复制
Plugin error from feature-classifier:
  [Errno 28] No space left on device
Debug info has been saved to /tmp_mount/qiime2-q2cli-err-8hbv6l2e.log

日志文件对我来说并没有更多的信息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2cli/commands.py", line 274, in __call__
    results = action(**arguments)
  File "<decorator-gen-326>", line 2, in classify_sklearn
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/qiime2/sdk/action.py", line 231, in bound_callable
    output_types, provenance)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/qiime2/sdk/action.py", line 362, in _callable_executor_
    output_views = self._callable(**view_args)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2_feature_classifier/classifier.py", line 215, in classify_sklearn
    confidence=confidence)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2_feature_classifier/_skl.py", line 45, in predict
    for chunk in _chunks(reads, chunk_size)) for m in c)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 789, in __call__
    self.retrieve()
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 699, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/multiprocessing/pool.py", line 644, in get
    raise self._value
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/multiprocessing/pool.py", line 424, in _handle_tasks
    put(task)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/pool.py", line 371, in send
    CustomizablePickler(buffer, self._reducers).dump(obj)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/pool.py", line 240, in __call__
    for dumped_filename in dump(a, filename):
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 484, in dump
    NumpyPickler(f, protocol=protocol).dump(value)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/pickle.py", line 408, in dump
    self.save(obj)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 278, in save
    wrapper.write_array(obj, self)
  File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 93, in write_array
    pickler.file_handle.write(chunk.tostring('C'))
OSError: [Errno 28] No space left on device

但是还有很大的空间。

我的图像不大(6G),inode也可以。我想要分析的输入文件很小,它只是一个测试。

我已经找到了一些具有相同问题的其他主题,但我所能尝试的都失败了。

我试过了:

-remove所有已退出的容器和悬空图像

-upgrade Docker

将TMPDIR环境变量-set到a /custom_tmp/我在容器中创建了自己。我尝试了几种方法:在QIIME2环境中,在容器中,但不在QIIME2环境中,在Dockerfile中添加ENV TMPDIR="/cutom_tmp"/,然后重新构建镜像。

将TMPDIR环境变量挂载到主机服务器上创建的/tmp_ -set /,然后将容器挂载为卷

每种情况下都会出现相同的问题。我的猜测是,也许Docker想要写入自己的tmp目录,也许是那些只剩下64M的"tmpfs“之一(参见下面的命令结果),也许我无法用TMPDIR变量解决这个问题,但我被困在那里了……

非常感谢您的关注和建议。

操作系统:Ubuntu 14.04。

df -h

代码语言:javascript
复制
Filesystem      Size  Used Avail Use% Mounted on
none            197G   57G  131G  31% /
tmpfs            64M     0   64M   0% /dev
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sda1       939G  772G  120G  87% /tmp_mount
/dev/dm-0       197G   57G  131G  31% /data
shm              64M     0   64M   0% /dev/shm
tmpfs            32G     0   32G   0% /proc/acpi
tmpfs            32G     0   32G   0% /proc/scsi
tmpfs            32G     0   32G   0% /sys/firmware

docker版本

代码语言:javascript
复制
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:24:58 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:23:24 2018
  OS/Arch:          linux/amd64
  Experimental:     false

环境

代码语言:javascript
复制
CONDA_SHLVL=1
LC_ALL=C.UTF-8
CONDA_EXE=/opt/conda/bin/conda
XDG_CONFIG_HOME=/home/qiime2
LANG=C.UTF-8
CONDA_PREFIX=/opt/conda/envs/qiime2-2018.8
R_LIBS_USER=/opt/conda/envs/qiime2-2018.8/lib/R/library/
TINI_VERSION=v0.16.1
PYTHONNOUSERSITE=/opt/conda/envs/qiime2-2018.8/lib/python*/site-packages/
PWD=/
HOME=/home/qiime2
CONDA_PYTHON_EXE=/opt/conda/bin/python
DEBIAN_FRONTEND=noninteractive
TMPDIR=/tmp_mount/
CONDA_PROMPT_MODIFIER=(qiime2-2018.8)
TERM=xterm
MPLBACKEND=Agg
SHLVL=1
PATH=/opt/conda/envs/qiime2-2018.8/bin:~/miniconda3/bin:/opt/conda/envs/qiime2-2018.8/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CONDA_DEFAULT_ENV=qiime2-2018.8
_=/usr/bin/env
OLDPWD=/data
EN

回答 1

Stack Overflow用户

发布于 2018-10-26 22:43:41

我在那里找到了解释: forum.qiime2.org/t/error-no-28-out-of-memory/5758/16。多线程这个任务对内存来说太大了,所以我试着用一个线程,它起作用了…希望有一天它能帮助到某个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53008637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档