我遇到了docker的问题。我想在postgres容器中恢复一个大数据库但是,当我尝试恢复我的sql时,我有这个:
ERROR: could not extend file "base/16384/16481": wrote only 4096 of 8192 bytes at block 7873 db_1 | HINT: Check free disk space.
有没有办法增加容器磁盘空间?
答案 0 :(得分:1)
尝试使用overlay2
作为驱动程序,看看它是否有任何更改。它不应该限制尺寸限制。
如果您的默认驱动程序为devicemapper
,则似乎有10 gb size limit
如果您遇到devicemapper
驱动程序,则可以更改docker守护程序dm.basesize
参数的值(official documentation)。使用选项--storage-opt dm.basesize=xxxG
启动docker守护程序。您需要重建所有必要的容器才能使它们受到影响。
答案 1 :(得分:1)
如果您运行多个容器/映像,则主机文件系统可能会耗尽可用的inode。使用df -ih
检查您剩余的inode数量。 "标准" df -h
可能会向您显示您有40%的可用磁盘空间,但您的docker镜像(甚至Docker本身)仍可能报告该磁盘已满。如果你有ext4,它很容易超过极限。如果可以,请将docker的数据目录更改为放置在XFS分区上。
对于一些参考结帐:
ext2 / 3/4在32位磁盘结构中保存inode编号,所以是的,ext2 / 3/4文件系统上的最大可能inode数是2 ^ 32,或大约40亿。 像XFS这样的大多数现代文件系统都使用64位结构,因此XFS理论上可以使用2 ^ 64个inode。但是,最小的inode大小为256字节,这意味着仅针对inode的磁盘空间为4096 Exabytes。实际上,这种理论/设计限制在实践中通常是不可行的(或可取的)。