※このページは、WindowsXP HDD換装に伴うシステム移行というページの続編にあたる。
上記ページは過去、PCのOSのインストールされたHDD(システムディスク)を容量の大きなドライブに変えたい場合などに利用できる換装方法を記したもの。
ただ、今となっては煩雑で不具合を生じる場合もある古い方法なので、今日的な換装の方法を記してみた。
また、不良セクタの発生した(SDカードを含む)ディスクからのデータ救出などにも参考になるよう配慮して記してみた。


要するに「HDDのイメージコピー」

EaseUS Todo Backupなどのツールを使う方法もあるし、そちらの方がはるかに簡単なので、面倒が嫌いな人はそういった既存のツールを使う方をおすすめする。
以下の方法は、そういったツールのやってる作業を一つ一つ把握しながら、何がどうなっているのか、自分で確認したい人、細かな設定を施したい人、イメージコピーという方法を把握したい人、これを他の作業にも応用したい人向けであり、そうでなければ、ただ面倒なだけの方法。

HDD(SSD、SDカード)のイメージコピー

今時は(といっても随分前から)、新たにパーティションを切りなおすことなくパーティションの拡大をOSのメニューから簡単に行える。
それゆえに、HDDの換装によるOSシステム移行時も、移行先が同じサイズのものでなくとも、イメージコピーで対応するのが定番になった。
このイメージコピーでHDDを移行を行うという方法は、どのOSシステムの移行でも可能であり、もちろん、データ用ディスクの移行も問題なく行える、汎用性の高い方法だ。
さらには、デバイスがSSDでも、SDカードでもあるいは不良セクタのあるドライブでも、不完全にでも読み出せる範囲内でコピーが可能であることから、データの救出の際にも有用な方法となっている。
 →不良セクタについてのメモ
つまり、この方法はデジカメやスマホ・携帯電話の一部不具合の発生したSDカードのデータ救出といった用途にも使えるので、この方法をおさえておけば、PCに限らず各種ドライブに不具合が出た場合に、役に立つ可能性があるということ。

以下はHDD換装に伴うOSシステムの移行書いたものだが、SDやSSDの場合は適宜読み替えれば対応できるはず。


概要


  • 旧HDDからを新HDDへのイメージコピー(dd)
  • 新HDDを、用途に合わせてパーティション伸長などの調整(windowsディスク管理)

 不良セクタが発生していたHDDなどからイメージをコピーする場合はさらに
  • chkdskによるファイルシステムの修復

作業

1. HDDイメージのコピー

システムドライブをコピーする場合は、別のシステムから作業する必要がある。データー専用HDDの場合はその限りではないだろうが、今回は別のシステム(USB linux)を作成し、それを利用してコピー作業を行う。

Linuxを起動するUSBを作成する
LinuxLive USB Creator
上記ソフトを利用すれば、簡単に作成できる。ubuntuを選んでおけば、ネットで使い方の情報も得やすいはず。
Linuxの起動~仮想端末起動
起動の前に、不要なドライブは予め外しておく。
作業に必要なのは、システムドライブとなるUSBと、コピー元とコピー先の3つだけ。
  • 作成したUSBからLinuxを起動。BIOSやUEFIの設定の必要があれば適宜設定
  • ログイン(割愛)
  • 仮想ターミナル(gnome terminal等)をメニューから探して起動(あるいはCtrl+Alt+tなどでも?)
ドライブの確認
linuxではHDDを/dev/sdxといった、「(デバイス)ファイル」で扱う
そして、物理的なドライブ一つが「/dev/sdx」だとすると、その中に作成されたパーティションは/dev/sdx1 /dev/sdx2などという名前で割り当てられている。
これはwindowsで言う「ドライブ」に類似するものではあるが、windowsでは必ずしもすべてのパーティションが「ドライブ」として認識されているわけではない。
詳細は省くが、linuxで認識されるパーティションは、windows上のドライブとは必ずしも一致しない、と頭に入れておけばいい。今回はパーティションごとの作業ではなく、「ディスク丸ごと」なので、詳しく知る必要はない。

HDDのコピーを行うからには、複数のHDDが接続されているはず。LinuxのシステムとなっているUSBメモリの他に少なくとも2つのドライブが繋がっていて、都合3つ(以上)になっているだろう。
コピー元とコピー先を間違えたら大変なので、これらのドライブが、どのデバイスファイルに割り当てられているかを確認する必要がある。

sudo lshw -c disk | less
lsblk
sudo fdisk -l 
sudo fdisk -l /dev/sdx (/dev/sdxは先のコマンドで確認したhddのデバイスファイル名)
df
上記それぞれのコマンドで出力される、容量やパーティション構成やその他の情報で判断
コピー実行
コマンドを打つ前に、HDDの取り違えがないよう、確実に確認しておくこと。
sudo dd if=/dev/sdx of=/dev/sdy bs=32M conv=noerror,sync status=progress
if=はコピー元、ofにはコピー先のHDDのデバイスファイルを指定する。
bsはブロックサイズ、一度にコピーするサイズの指定。この大きさはコピー実行のスピードを左右し、ある程度の大きい方がコピーは早くなるが、大きければ大きいほど速いというわけでもない。最適値はそのHDDごとに違う。特別な要求がなければ、32M程度で問題ないはず。
もし不良セクタが発生しているディスクであれば、上記のようにコピーの単位はbs=で決定されることから、小さな部分のエラーでも、その部分を含む「bsで指定した単位分丸ごと」を読み出されなかったものとして処理する。すなわち、読み出せるデータも捨てる「無駄」が発生することになる。
そしてこの作業中、小さな部分でもエラーと確定するまでは何度かのリトライを繰り返すのでその分の時間がかかる。もちろん、この小さなエラーが断片的に多数に発生していれば、リトライの回数もその分増えてゆく。物理的に読み出し不能の発生している部分は固まる傾向があるので、そういった場合は読めないものに「無駄」に時間をかけていることになる。
そもそもエラーがないディスクでも、このコピーには相当時間がかかる。
PCやHDDの性能・状態によるが、今時の3TBのHDDでエラーのない場合でも、半日程度はかかる。外付けユニットなどでUSB接続したHDDであれば転送速度も遅いので、さらに時間がかかるだろう。
多数のエラー処理が発生していれば、一週間かけてもまだ終わらないという事態すらある。
こうして、bsオプションの数値は、不良セクタの発生したディスクのデータを無駄なく救いたいという利益と、時間の利益とバランスを見て決定する必要がある。
なお、conv=noerror,sync は不良セクタにより読み出し不可能な場合もコピーを継続し、読み出せなかった部分をnull(無=0)で埋めるオプションである。

2. パーティションの調整

コピーが終了したら、元のHDDでWindowsを起動し、[マイコンピュータ]>[コンピューターの管理]>[ディスク管理]から、コピー先のHDDのパーティションをリサイズしたり、未割当領域に別のパーティションを作成したりできる。これは必要に応じて。

3.ex. 不良セクタのあるHDDからコピーした場合

windows上のコマンドプロンプトを管理者権限で起動し
chkdsk /b y: (y:はコピー先の新しいHDDのドライブ)
これで元のドライブ上で読み出し不能とされ、ファイルシステム上で不良セクタとされていた部分を、コピー先のファイルシステム上において正常化することが出来る
lost+foundには正常にコピーできなかったが、救出してたデータが現れていることも。

ディスク・ファイルシステム自体修復は基本的にはこれでおしまい。

4. システムディスクの場合

BIOSやUEFIの設定を確認し、起動ディスクとして指定して起動

5.ex イメージコピーの実施はできたが、ドライブとして検出されない場合

パーティション修復用のソフトを利用する

ついでに

HDDのイメージコピーについては、「HDDデュプリケーター」という商品を使うこともできる
エラースキップ機能が付いていれば、ここでやってることとほぼ同じ機能を持つと考えていい

最終更新:2020年12月27日 04:21