Rhel
我怎樣才能只 dd 尚未開發/歸零的驅動器的最後一部分
當出現讀/寫或校驗和錯誤出現問題時,我會定期 dd 一個驅動器來擦除它們以用於 ZFS resilver,以使驅動器重新投入使用。通常,在開始時刪除分區表不足以使 ZFS無法辨識驅動器。
我想在開始時刪除兩個分區表(已經知道如何做到這一點,這已經足夠記錄了),以及 3TB 驅動器末尾的分區表,並測試它是否有效。如何僅刪除最後一個分區表(gpt)?
現在我的主要問題。我已經執行
dd
然後在某個時候取消它(見下文),以測試 ZFS 是否不再辨識它;這還不夠——ZFS 仍然可以辨識它並再次將其置於降級模式。$ dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 ^C726443929+0 records in 726443928+0 records out 371939291136 bytes (372 GB) copied, 7997.73 s, 46.5 MB/s
所以現在我只想尋找過去的 372GB 和之後的 dev/zero,這樣就不會浪費時間和硬碟壽命再次做第一個 372GB。
我在想這樣的事情,但它沒有用。
$ dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 seek=371G dd: ‘/dev/disk/by-id/scsi-35000c50084818db7’: cannot seek: Invalid argument 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000238797 s, 0.0 kB/s
查看文件是一件真正的苦差事。這個頁面幾乎看起來很有幫助https://wiki.linuxquestions.org/wiki/Some_dd_examples,但我沒有看到我需要的東西。
我只是缺少塊大小,還是缺少什麼不起作用?我嘗試添加
conv=notrunc
到上面的那一行,但沒有幫助。
to的
seek
參數dd
是要尋找的輸出塊的數量如果沒有
bs=
或obs=
在您的命令中,預設為 512 字節您可以看到
726443928
已寫入塊最簡單的解決方案是在搜尋中使用該數字
dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 seek=726443928
順便說一句,您連結到的文件非常清楚地說明了這一點
在寫入之前, Seek 會跳過輸出媒體上的許多塊
擦除輔助 GPT
輔助 GPT 表位於磁碟末尾的 33 個扇區(512 字節扇區)
所以,如果
fdisk -l /dev/disk/by-id/scsi-35000c50084818db7
報告Disk /dev/disk/by-id/scsi-35000c50084818db7: 2.73 TiB, 3000592982016 bytes, 5860533168 sectors
然後從 5860533168 中減去 33 =
5860533135
做
dd if=/dev/zero of=/dev/disk/by-id/scsi-35000c50084818db7 skip=5860533135