我有这个命令可以将超过100GB的数据写入文件。
zfs send snap1 > file
在这个过程中几个小时似乎出现了问题。例如,如果我两次运行该作业,则输出略有不同。如果我尝试使用
处理文件zfs receive snap2 < file
几小时后报告错误。
出于调试目的,我猜测shell重定向中存在一些低概率失败。有没有其他人看到重定向大量数据的问题?有关何处进行的任何建议?
调试此操作非常繁琐,因为小例子可以正常工作,每次运行大案例需要3个小时。
早些时候我曾尝试过管道:
zfs send snap1| zfs receive snap2
然而,这总是以更小的例子失败,
zfs send snap1 > file; zfs receive snap2 < file
的工作。 (我发布了一个关于这个的问题,但没有得到有用的回复。)这是我怀疑shell的另一个原因。
感谢。
答案 0 :(得分:0)
与zfs中的错误或您使用它的方式存在问题相比,故障在shell(或OS)中的概率可以忽略不计。
测试你的假设只需几分钟:编译这个愚蠢的程序:
<select class="shortened-select">
<option value="Open" data-descr="some description"></option>
<option value="Closed" data-descr="a bunch of text"></option>
</select>
然后在shell中尝试#include<unistd.h>
#include<string.h>
#define BUF 1<<20
#define INPUT 56
int main(int argc, char* argv[]) {
char buf[BUF], rbuf[BUF], *a, *b;
int len, i;
memset(buf, INPUT, sizeof(buf));
if (argc == 1)
{
while ((len = read(0, rbuf, sizeof(rbuf))) > 0)
{
a = buf; b = rbuf;
for (i = 0; i < len; ++i)
{
if (*a != *b)
return 1;
++a; ++b;
}
}
}
else
{
while (write(1, buf, sizeof(buf)) > 0);
}
return 0;
}
,在另一个shell中尝试mkfifo a; ./a.out w > a
,看看有多长时间才能翻转。
应该相对较快地进入TiB区域......