Dd

dd 命令寫入 /dev/sdc 改變了磁碟的大小

  • January 11, 2018

我使用 dd 命令直接寫入 /dev/sdc(外部安裝的 1TB 硬碟大小)以測試原始模式下的各種寫入速度。(我不關心磁碟上的任何數據)。現在 fdisk 或 gparted 報告的磁碟大小是我寫入的數據的大小,我不知道如何恢復完整的磁碟大小。

我使用的命令是:

dd if=/dev/urandom of=/dev/sdc bs=4096 count=

$$ big number $$ 如下圖所示,如果我使用這個命令寫入了 128KB 的數據,那麼 fdisk 會報告驅動器只有 128KB 的大小。當我嘗試寫入多達 1TB 的數據時,它會停止在 30GB 並出現設備已滿錯誤。

我曾嘗試刪除和重新創建分區表,但由於該軟體僅辨識較小的驅動器大小,因此無濟於事。

如何恢復完整的驅動器大小?

PS我也嘗試從 if=/dev/zero 開始寫作。它以 5GB/s 的速度執行,並停在同一個 32GB 的位置。

PPS 我還嘗試從驅動器中移除電源並重新啟動它,認為記憶體中存在導致問題的東西。同樣的問題。

# fdisk -l /dev/sdc

Disk /dev/sdc: 29.5 GiB, 31633203200 bytes, 61783600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#try to write to entire drive:
# dd if=/dev/zero of=/dev/sdc bs=65536 count=15258788 status=progress

26753171456 bytes (27 GB, 25 GiB) copied, 5.00001 s, 5.4 GB/s
dd: error writing '/dev/sdc': No space left on device
482685+0 records in
482684+0 records out
31633203200 bytes (32 GB, 29 GiB) copied, 5.89003 s, 5.4 GB/s

# dd if=/dev/urandom of=/dev/sdc bs=65536 count=2 status=progress
2+0 records in
2+0 records out
131072 bytes (131 kB, 128 KiB) copied, 0.000660426 s, 198 MB/s

# fdisk -l /dev/sdc
Disk /dev/sdc: 128 KiB, 131072 bytes, 256 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# dd if=/dev/urandom of=/dev/sdc bs=65536 count=15258788 status=progress
31624462336 bytes (32 GB, 29 GiB) copied, 136 s, 233 MB/s     
dd: error writing '/dev/sdc': No space left on device
482685+0 records in
482684+0 records out
31633203200 bytes (32 GB, 29 GiB) copied, 136.038 s, 233 MB/s

由於某種原因,塊特殊設備文件 /dev/sdc 不存在,可能是因為當時沒有連接驅動器。然後該dd命令將文件創建為普通文件,可能在根文件系統上,這給出了觀察到的結果。

引用自:https://unix.stackexchange.com/questions/416408