2010/11/08

一個簡單的硬碟效能測試 -- dd

dd 是一個很特別的指令,尤其在 android 中並沒有 cp 存在,只有 dd....
當然,我會這樣說,就是可以用dd 來複製檔案,大家也都會 dd if=SOURCE of=TARGET 即可,底下再說一點點它特別之處

dd if=/dev/fd0 of=/home/sam/MBRboot.image bs=512 count=2
上面這樣可以將軟碟片的前面 512x2==1024 個 byte 讀出來,寫成一個新檔案叫 MBRboot.image

dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1
上面也是一樣道理,可以把硬體的開機磁區寫到一個新檔案叫 MBR.image

所謂的硬碟開機磁區,就是一個 partition table + boot code, 若您只需要 boot code, 可以用下面的方法:
dd if=/dev/sda of=/home/sam/MBR_boot.image bs=446 count=1

那還有沒有其他用法?
dd if=/dev/uramdom bs=1024 count=1000000 of=/home/sam/1Gb.file
dd if=/home/sam/1Gb.file bs=64k | dd of=/dev/null
上面的方法可以用來簡單測試硬碟效能,也就是你搭配將上面兩行寫成一個 shell, 再搭配 time 來量時間
若不想用 /dev/uramdom 也可以用 /dev/zero 來取代

如果想弄一個空的 1G 檔案出來,一般會寫成
dd if=/dev/zero of=1G-file bs=1M count=1024
可是啊,這樣真的就要寫「很久很久」,卻又有一個很簡單的方式,一瞬間就寫完了,真的是神奇
dd if=/dev/zero of=1G-file bs=1 count=0 seek=1G

0 意見: