2015-10-16 118 views
-1

我有這個命令將超過100GB的數據寫入文件。linux重定向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

與zfs中的錯誤或您如何使用它的問題相比,失敗在shell(或OS)中的可能性可以忽略不計。

它只是需要幾分鐘來測試你的假設:編譯這個愚蠢的程序:

#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; 
} 

然後嘗試在一個外殼mkfifo a; ./a.out w > apv < a | ./a.out在一個又一個,看多長時間才能讓任何位翻轉。

它應該比較快地進入TiB區...

相關問題