我恢复数据库时没有足够的空间进入docker容器(postgres)

时间:2018-04-06 08:51:52

标签: postgresql docker storage diskspace

我遇到了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.

有没有办法增加容器磁盘空间?

2 个答案:

答案 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。实际上,这种理论/设计限制在实践中通常是不可行的(或可取的)。

https://www.quora.com/What-is-the-maximum-number-of-inodes-in-Linux-filesystems-I-found-suggestion-that-for-Ext4-it-is-4-billion-files-32-bit-number-Is-it-true-for-XFS-and-or-BtrFS