当前位置: 首页 > 知识库问答 >
问题:

MongoDB使用docker的设备上没有剩余空间

施永贞
2023-03-14

我的MongoDB卡住并返回以下错误:

2019-01-28T18:28:53.419+0000 E STORAGE  [WTCheckpointThread] WiredTiger error (28) [1548700133:419188][1:0x7feecb0ae700], file:WiredTiger.wt, WT_SESSION.checkpoint: /data/db/WiredTiger.turtle.set: handle-open: open: No space left on device
2019-01-28T18:28:53.419+0000 E STORAGE  [WTCheckpointThread] WiredTiger error (22) [1548700133:419251][1:0x7feecb0ae700], file:WiredTiger.wt, WT_SESSION.checkpoint: WiredTiger.wt: the checkpoint failed, the system must restart: Invalid argument
2019-01-28T18:28:53.419+0000 E STORAGE  [WTCheckpointThread] WiredTiger error (-31804) [1548700133:419260][1:0x7feecb0ae700], file:WiredTiger.wt, WT_SESSION.checkpoint: the process must exit and restart: WT_PANIC: WiredTiger library panic
2019-01-28T18:28:53.419+0000 F -        [WTCheckpointThread] Fatal Assertion 28558 at src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp 361
2019-01-28T18:28:53.419+0000 F -        [WTCheckpointThread]

***aborting after fassert() failure

2019-01-28T18:28:53.444+0000 F -        [WTCheckpointThread] Got signal: 6 (Aborted).

但是,我的磁盘有空间:

df-h

Filesystem      Size  Used Avail Use% Mounted on
udev            992M     0  992M   0% /dev
tmpfs           200M  5.7M  195M   3% /run
/dev/xvda1       39G   26G   14G  66% /
tmpfs          1000M  1.1M  999M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
tmpfs           200M     0  200M   0% /run/user/1000

df-i

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
udev            253844     322 253522    1% /dev
tmpfs           255835     485 255350    1% /run
/dev/xvda1     5120000 5090759  29241  100% /
tmpfs           255835      10 255825    1% /dev/shm
tmpfs           255835       3 255832    1% /run/lock
tmpfs           255835      16 255819    1% /sys/fs/cgroup
tmpfs           255835       4 255831    1% /run/user/1000

这将是我的docker撰写:

version: "3"
services:

# MariaDB
    mariadb:
        container_name: mariadb
        image: mariadb
        ports: ['3306:3306']
        restart: always
        volumes:
            - /home/ubuntu/mysql:/var/lib/mysql
        environment:
            - "MYSQL_ROOT_PASSWORD=PasswordGoesHere"
        command:
            # - --memory=1536M
            - --wait_timeout=28800
            - --innodb_buffer_pool_size=1g
            - --innodb_buffer_pool_instances=4
            # - --innodb_buffer_pool_chunk_size=1073741824

# APACHE
    apache:
        container_name: apache
        image: apache-php7.1
        ports: ['80:80', '443:443']
        restart: always
        entrypoint: tail -f /dev/null
        volumes:
            - /home/ubuntu/apache2/apache-config:/etc/apache2/sites-available/
            - /home/ubuntu/apache2/www:/var/www/html/

# MONGODB
    mongodb:
        container_name: mongodb
        image: mongo
        ports: ['27017:27017']
        restart: always
        command:
            - --auth
        volumes:
            - /home/ubuntu/moongodb:/data/db

这对我的码头工人来说是个问题。yml?因为我使用的是物理磁盘,而不是虚拟磁盘。我可以运行应用程序,1-2小时后mongo将再次失败。

共有3个答案

蒙化
2023-03-14

对我来说,它的工作原理:

docker system prune

然后

docker volume prune

或者在一行中:

docker system prune --volumes

查看所有卷:docker卷ls

显示docker磁盘使用情况:docker系统df

田瀚
2023-03-14

看起来您的inode 100%都在使用中(来自df-i输出)。尝试寻找悬空卷并清理它们。此外,确保docker守护进程使用生产级存储驱动程序(关于存储驱动程序,选择存储驱动程序)也是一个好主意。

燕成双
2023-03-14

如果您在centos/RHEL/Amazon Linux中运行此功能,您应该知道devicemapper在Docker中发布inode时存在重大问题。

即使你删减了整个docker系统,它仍然会保留很多索引节点,真正解决这个问题的唯一方法是基本上使docker内爆:

service docker stop
rm -rf /var/lib/docker
service docker start

这会释放你所有的索引节点。

我在这方面花了很多时间,Docker实际上只完全支持UbuntuOverlay2,而devicemapper虽然可以工作,但在技术上不受支持。

 类似资料:
  • 问题内容: 当我尝试将某些文件保存到centos计算机上时,出现错误“设备上没有剩余空间” 我试过了 当我这样做 ->只有5G 似乎文件系统已满。我怎么能找到哪一个尺寸这么大? 问题答案: 和的输出之间的这种差异可能会在某些大文件已被删除但仍由某些进程打开的情况下发生。检查命令以查看哪些进程已打开描述符以删除文件。您可以重新启动该过程,空间将被释放。

  • 当我处理掉所有的图像和容器时,它确实释放了一些空间,图像构建运行了更长时间,然后以同样的错误失败。所以问题是,这是指哪个空间,我如何配置它?

  • 我正在尝试用Docker Compose设置Docker机器。 场景1(不使用Docker机器) 如果我在不使用Docker机器的情况下运行,它将按照所希望的方式创建我的3个链接容器(Nginx+MongoDB+NodeJS)。 场景2(使用Docker机器) 然后使用Docker机器创建一个VM,并告诉Docker使用与该机器对话。 此时,如果我ssh到我的docker机器并运行,我将得到: 如

  • 我已经向EC2实例附加了一个新卷。卷已成功附加。位于命令输出下面。 DF-H

  • 我在运行一些任务时在hadoop中收到以下异常。但是HDFS显示它有空间。任何有关此错误的信息都会有所帮助。

  • 我在ec2集群上运行一个pyspark作业,有4个工作人员。我得到这个错误: 尝试增加洗牌分区-同样的问题。我的数据在执行器中的分区看起来相当均匀。我想尝试将Null或None分配给dataframes的变通方法,问题是它是否真的会移除中间洗牌文件,以及linage是否会被保留。 例如,如果我的代码如下所示: 我会把