Unraid阵列中有五块硬盘,总共还有8T空间,但是其中disk1已经满了。共享里设的填满,最小可用空间0,没有设cache。正在下载中的BT任务提示There is no enough space(客户端Qb),在网上没有找到有效的解决办法,经过测试发现了此情况出现的原因。

原因

1.qbittorrent没有开启磁盘空间预分配。当Qb建立下载项目的时候文件占用较小且会出现多个文件同时建立的情况,这样在之后下载过程中这些文件占用空间会不断增加,而Unraid的文件分配是在创建文件时进行的,因此不会将这些文件移动到另一磁盘导致空间不足。

2.共享文件夹的最小可用空间值设置过小。“最小可用空间”并不控制可用空间的大小,而是控制硬盘必须有多少可用空间才能被选中用于写入新文件。举个例子,假如将“最小可用空间”的值设置为 100G ,那么当有新的文件写入到阵列里面时,UNRAID 依据你对共享文件夹所选用的“分配方法”(Allocation method)和“拆分级别”(Split level)去选择阵列中某一个硬盘存储这个文件,即使你写入的这个文件只有 1KB 大小,被选中硬盘的可用空间必须要大于 100G 才会被选中用于写入文件。
因为 UNRAID 在接收到一个文件写入请求时,UNRAID 并不知道这个文件有多大,UNRAID 能做的就是根据分配方法和拆分级别选择一个阵列中的硬盘去存储这个文件。但假如说这个硬盘的可用空间已经不足以存储这个文件,那么最终就会出现硬盘空间不足的情况,也就只有这个时候 UNRAID 才知道所接收的文件大小大于硬盘的可用空间。
默认情况下,新创建的共享文件夹会按硬盘大小的 10% 去自动配置最小可用空间的大小。根据官方的建议,可以将值设置成曾经传输过的最大的一个文件的大小,例如你曾经传输过的最大的一个文件大小是 50G ,那么你可以将“最小可用空间”的值设置为 2 倍于此文件的大小:2 x 50G = 100G ,这样即使你偶尔传输了一个比之前传输过最大文件还要大一点的文件(但不超过 100G ),也不会出现问题。
对于PT下载来说,这个值不应当小于50G,因为许多电影单一文件占用就约为30~40G。

3.在下载过程中增加了需要下载的文件。qB种子开始是选定的要下载内容会预分配空间,开始任务后新增选择要下载的内容则不会预分配空间,会形成“稀疏文件”(Everything软件内文件属性栏可见“P”属性),给系统报占用但不实占分配,待需要写入时向系统可用的磁盘空间内随机写入,因此有可能导致空间不足。

参考文章:
BT下载中,一块硬盘满了,其他硬盘还有空间,仍然提示报错
关于ZFS池写不满,显示有剩余空间 但是写不进文件
发现pt下载会导致磁盘碎片,是不是需要为软件设置预分配磁盘空间才行?