ハードディスクの全体を、別のハードディスクにコピーする方法のメモ。
エラーが存在しないハードディスクの場合はddコマンドを、エラーが存在して通常の読み込みが難しいようなひどい状態のハードディスクの場合はddrescueコマンドを使う。(エラーが存在しない場合でも、ddrescueを使って普通にコピーすることは出来るし、特に効率が悪いというわけでもないが…)
なお、コピー先のディスク容量のほうが小さい場合は、あらかじめコピー元のパーティションを小さくしたりする処置があらかじめ必要。
目次 |
ハードディスクにswapパーティションがある場合、それを使われてしまうことを防ぐため、noswapオプションをつけて起動する。
knoppix noswap
SATAハードディスク(容量500GBytes)をコピーしたときの記録。
ディスクの容量(LBA user addressable sectors)がコピー元よりコピー先の方が大きいことを確認。
root@Knoppix:~# hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST3500320AS Serial Number: 9QM7K*** Firmware Revision: SD15 Transport: Serial Standards: Supported: 8 7 6 5 Likely used: 8 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 976773168 device size with M = 1024*1024: 476940 MBytes device size with M = 1000*1000: 500107 MBytes (500 GB) ~ 以下略 ~ root@Knoppix:~# hdparm -I /dev/sdb /dev/sdb: ATA device, with non-removable media Model Number: Hitachi HDP725050GLA360 Serial Number: GEA534RF2EV*** Firmware Revision: GM4OA5CA Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5; Revision: ATA8-AST T13 Project D1697 Revision 0b Standards: Supported: 8 7 6 5 Likely used: 8 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 976773168 device size with M = 1024*1024: 476940 MBytes device size with M = 1000*1000: 500107 MBytes (500 GB) ~ 以下略 ~
ディスクの転送速度を念のために確認し、コピーにかかる時間を推定する。今回は、低い方の値が55.7MB/secとあるので、6GBytesのディスクコピーにかかる時間は、理論的には500*1024/59=8600秒(144分)で終わると予測できる。
root@Knoppix:~# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 1124 MB in 2.00 seconds = 561.64 MB/sec Timing buffered disk reads: 180 MB in 3.02 seconds = 59.54 MB/sec root@Knoppix:~# hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 534 MB in 2.00 seconds = 267.02 MB/sec Timing buffered disk reads: 188 MB in 3.01 seconds = 62.52 MB/sec
ddコマンドでコピーを行う。コピー中はメッセージ等は何も表示されず、コピー完了時に転送速度などが表示される。
root@Knoppix:~# dd if=/dev/sda of=/dev/sdb bs=16384 30524161+1 records in 30524161+1 records out 500107862016 bytes (500 GB) copied, 12563.4 seconds, 39.8 MB/s root@Knoppix:~#
※エラーが存在する可能性のあるディスクに対しては、エラーが起きても読み飛ばして(パディングデータを付加して)コピーを継続するconv=noerror,syncオプションをつけた上で、一度に読み込むブロック数を小さくしたほうがよい。
dd if=/dev/sda of=/dev/sdb bs=512 conv=noerror,sync
VMWareの仮想ディスク(容量6.0GBytes)をコピーしたときの記録。
ディスクの容量(LBA user addressable sectors)がコピー元よりコピー先の方が大きいことを確認。
root@Knoppix:~# hdparm -I /dev/hda /dev/hda: ATA device, with non-removable media Model Number: VMware Virtual IDE Hard Drive Serial Number: 00000000000000000001 Firmware Revision: 00000001 Standards: Used: ATA/ATAPI-4 T13 1153D revision 17 Supported: 4 3 2 & some of 5 Configuration: Logical max current cylinders 12483 12483 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 12582864 LBA user addressable sectors: 12582912 device size with M = 1024*1024: 6144 MBytes device size with M = 1000*1000: 6442 MBytes (6 GB) Capabilities: LBA, IORDY(can be disabled) Standby timer values: spec'd by Standard R/W multiple sector transfer: Max = 64 Current = 64 Advanced power management level: disabled DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=160ns IORDY flow control=120ns Commands/features: Enabled Supported: * Power Management feature set * NOP cmd Advanced Power Management feature set Checksum: correct root@Knoppix:~# hdparm -I /dev/hdb /dev/hdb: ATA device, with non-removable media Model Number: VMware Virtual IDE Hard Drive Serial Number: 01000000000000000001 Firmware Revision: 00000001 Standards: Used: ATA/ATAPI-4 T13 1153D revision 17 Supported: 4 3 2 & some of 5 Configuration: Logical max current cylinders 12483 12483 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 12582864 LBA user addressable sectors: 12582912 device size with M = 1024*1024: 6144 MBytes device size with M = 1000*1000: 6442 MBytes (6 GB) Capabilities: LBA, IORDY(can be disabled) Standby timer values: spec'd by Standard R/W multiple sector transfer: Max = 64 Current = 64 Advanced power management level: disabled DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=160ns IORDY flow control=120ns Commands/features: Enabled Supported: * Power Management feature set * NOP cmd Advanced Power Management feature set Checksum: correct
ディスクの転送速度を念のために確認し、コピーにかかる時間を推定する。今回は、低い方の値が55.7MB/secとあるので、6GBytesのディスクコピーにかかる時間は、理論的には6*1024/55.7=110秒で終わるはず…
root@Knoppix:~# hdparm -tT /dev/hda /dev/hda: Timing cached reads: 1516 MB in 2.00 seconds = 758.37 MB/sec Timing buffered disk reads: 168 MB in 3.02 seconds = 55.70 MB/sec root@Knoppix:~# hdparm -tT /dev/hdb /dev/hdb: Timing cached reads: 1512 MB in 2.00 seconds = 756.34 MB/sec Timing buffered disk reads: 206 MB in 3.00 seconds = 68.56 MB/sec
dd_rescueを使ってコピーを行う。
root@Knoppix:~# dd_rescue /dev/hda /dev/hdb 〜 ひたすらメッセージが流れつづける 〜 dd_rescue: (info): ipos: 6289408.0k, opos: 6289408.0k, xferd: 6289408.0 kcurr.rate: 85679kB/s, avg.rate: 31918kB/s, a errs: 0, errxfer: 0.0k, succxfer dd_rescue: (info): ipos: 6290432.0k, opos: 6290432.0k, xferd: 6290432.0 kcurr.rate: 83388kB/s, avg.rate: 31919kB/s, a errs: 0, errxfer: 0.0k, succxfer dd_rescue: (info): ipos: 6291456.0k, opos: 6291456.0k, xferd: 6291456.0 kcurr.rate: 81175kB/s, avg.rate: 31921kB/s, a errs: 0, errxfer: 0.0k, succxfer: 6291456.0k +curr.rate: 48854kB/s, avg.rate: 31881kB/s, avg.load: 12.5% dd_rescue: (info): /dev/hda (6291456.0k): EOF Summary for /dev/hda -> /dev/hdb: dd_rescue: (info): ipos: 6291456.0k, opos: 6291456.0k, xferd: 6291456.0k errs: 0, errxfer: 0.0k, succxfer: 6291456.0k +curr.rate: 0kB/s, avg.rate: 31881kB/s, avg.load: 12.5%