使用 dd 和 gzip 進行備份和恢復
我看過各種文章討論使用 dd 創建驅動器映像並僅儲存“使用過的數據”。在提出問題/問題之前,讓我們假設一些事情。
假設
- 複製/映像的驅動器是 /dev/sda
- /dev/sda 是 10TB
- /dev/sda 上的已用空間為 1TB
- 映像儲存到某個遠端 CIFS 安裝位置
問題/問題
將選項
cp
與--sparse=always
選項一起使用dd
應該會生成一個稀疏文件,以便文件顯示為 1GB:cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img
或者像下面這樣,應該壓縮所有歸零的空間:
dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz
那麼,**稀疏的圖像文件對恢復有什麼影響呢?傳輸的數據是 1GB 還是 10GB,包括感知到的空白/歸零空間?**這顯然是評估潛在網路負載和恢復時間的考慮因素。
PS 我知道還有其他選項,例如 Clonezilla 和 ddrescue 之類的選項將允許恢復功能,但問題是關於在上述上下文中使用 dd 的具體問題。
謝謝。
寫入 Windows CIFS 共享 SMB1
來自微軟的說法是:“在 Windows NTFS 文件系統中,預設情況下文件不會稀疏。應用程序或使用者需要通過 FSCTL_SET_SPARSE 控制程式碼顯式標記文件稀疏。” 不幸的是,Linux 沒有通過 SMB1 標記這些文件。據報導,如果您首先在 Windows 端(使用 Cygwin )使文件稀疏
dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000
,那麼您可以繼續從 Linux 將其編寫為稀疏文件。我相信閱讀將是未優化的。實驗
使用 RHEL6 coreutils-8.4
cp --sparse=always local_file /mnt/cifs/file_on_cifs
不會寫入稀疏文件。讀取 CIFS 文件時,它會讀取歸零區域(無fiemap優化)。在 RHEL6 中,備份和恢復都將通過網路傳輸整個文件;更好的gzip它。在 Ubuntu 14x 上與 coreutils-8.25 的情況相同。
寫入 Windows CIFS 共享 SMB2/SMB3
有一個2014 更新檔“向 SMB2/SMB3 掛載添加稀疏文件支持”,因此希望在 Windows 8.1 和其他平台的掛載共享上支持稀疏文件。
寫入 Linux CIFS 共享
當您從某個 Linux 伺服器在 Linux 客戶端上掛載 Samba 共享時,您甚至可以在 SMB1 上寫入稀疏文件。沒有閱讀優化。