いい加減、HDDが遅くなってきた気がするのでSSDに移行したい。
もくじ
参考資料
Windows7の標準機能「ボリュームの縮小」でパーティション容量が縮小できない問題について
How to create a bootable USB stick on Windows
Ubuntu GParted その11 – パーティションを移動する
手順概要
ubuntuとかその辺のLiveUSBを使って、ディスクを丸ごとコピーしてしまって終了。
そのままじゃ起動しないので、Windowsの回復ドライブを使ってBCDを修復したりします。
環境概要
OS:Windows10
HDD:WDの2TBのやつ
SSD:CT525MX300SSD1。↓これ!!
ここから買うと俺のマネーになるのでここから買ってほしい。
俺?俺は近所のドスパラで買ったよ。
この手順をなぞって実行する人のために
途中で失敗してます。
USBメモリを2台用意して、最初にUbuntuのLiveUSBとWindowsの回復ドライブをべつに持っておくと安心です。
Cドライブを縮める
HDDとSSDだと、SSDの方が容量が少ない事が多いので、まず容量を縮めないといけない。
目的のドライブを選択して右クリックすると縮小できるサイズが表示される。
空き容量に対して縮小幅が狭すぎる。
どうもディスクの後ろの側にデータが詰まっちゃってるらしいので、これをなんとかしないといけない。
とりあえずデフラグをかける。ドライブのプロパティを出して「ツール」>「最適化」。
分析をかけると断片化はしていないらしいけど、ファイルが断片化してなくてもディスクをスパースな感じに使われてるとイミがないので問答無用で最適化します。断片化が0とか知るか。
1時間ぐらいかけてデフラグしたのに効果がない。悲しい。
「移動できないファイルが格納されている場所」というのがあるらしいのでチェック。
イベントビューアーからApplicationログを見て、ソースが「Defrag」であるものを探します。
どうやらSystem Volume Informationとかいうファイルが動かないらしい。
調べたところ、システムの復元に関するファイルらしい。
システムの復元ポイントを消してしまいます。
「システムのプロパティ」>「システムの保護」>「構成」>「削除」。
で、ようやくCドライブが縮むようになったので縮めます。
まだ微妙に空き容量とマッチしてないけど、そこそこ縮むので良しとします。
ここは後々SSDに入れてからピッタリに広げ直すので、縮められるだけ縮めれば良いです。
復元ポイントが全くないのは怖いので、一個ぐらい復元ポイントをつくっておきます。
UbuntuのLiveUSBを作る
どうやらWindows上からでは以降の作業が難しいっぽいので、UbuntuのLiveUSBを使ってUbuntuからやります。
公式からRufusっていうのをオススメされているので、それに従ってRufusで作ります。
まずはISOファイルを取得。普通に公式のダウンロードページから最新の安定版をもらってきます。
今はUbuntu 16.04.2 LTS。
Rufusはポータブル版を落としてとりあえず起動。
USBメモリを刺してれば勝手に認識してくれるのでそれで良いはず。
「ブートディスクを作る」の横にある光学ドライブのアイコンをクリックしてISOを選択。
内蔵してるSyslinuxのバージョンが古いからネットから自動で取得してくるとか、ISOイメージのコピーで済ますかDDコマンド使うか聞いてきたりするけど、何も考えずにハイハイ言っていれば良いです。
で、すんなりできてしまう。
あとはPC再起動して、ブート時にUSBドライブを選ぶだけ。
と、いうわけでUbuntuが起動しました。GPartedを開くとこんなかんじ。
パーティションを詰める
もともとのパーティション構成だと、後ろの方に「回復パーティション」とかいう謎のパーティションが居ます。
未使用領域がガバっと開いててそのままではディスク全域をコピーできない感じなので詰めます。
タツジンならパーティションの場所をがっちり見分けてコピーできるんでしょうけど、ちょっとそこまでできないので。
対象領域を右クリックして「Resize/Move」を選択、未使用領域の中なら移動できるっぽいので左詰めにします。
「ブートできなくなるかもしれんぞ!!」とか怒られましたが、別にブート領域じゃないので大丈夫でしょう。
こんな感じで全部左に詰めちゃいます。
HDD→SSDのデータコピー
ここまで来ればddコマンドで一発ぽん。
まずはコピー元・先のデバイス名とサイズを把握します。
コマンド叩いても良いと思うけど、disks見ると早いです。
ddコマンドが余計な部分までコピーしにかからないようにコマンドを調整します。
余計な部分までコピーしたらどうなるかは知らないけど。使えるのかもしれない。
$ INPUTDEV=/dev/sda
$ OUTPUTDEV=/dev/sdc
$ SSDSIZE=525112713216
$ BLOCKSIZE=$((1024*1024*8))
$ BLOCKCNT=$(($SSDSIZE/BLOCKSIZE))
$ sudo dd if=$INPUTDEV of=$OUTPUTDEV bs=$BLOCKSIZE count=$BLOCKCNT
上三行が自分の環境に応じた設定。BLOCKSIZEはなんとなく8MB単位ぐらいならR/Wが早そうかな、と思っただけで根拠は無いです。BLOCKCNTは除算で若干切り詰められるので、キッチリとコピーしきりたい人はブロックの大きさをうまく調整してください。
進捗出したいときはSIGUSR1を送ると良い。とはいえ待ってれば終わるものなので放置。やるときは別ターミナルを上げて以下のような感じ。
$ watch sudo pkill -USR1 dd
で、終わったらとりあえずコピー完了。
このとき、GPTのテーブルがぶっ壊れてしまっているはずなので、gdiskで修復する。
$ sudo gdisk $OUTPUTDEV
x (拡張モード)
v (ディスクのチェック)
e (ディスク終端の修復)
g (ディスクのGUIDを再生成)
w (変更の適用。Y応答)
そんな感じでUbuntu側の終了。…と思ったら、上手くいかない。
SSDからブートができない…!
SSD以外のドライブを抜いて起動するとブート時にエラーが出ていて、エラーコードが0xc000000e。
まだブート領域が壊れているらしい。やはり丸ごとコピーしただけでは良くないのか…。
なんとかしてSSDから起動できるようにする
古いHDDから起動して、USBメモリを回復ドライブ化する。
コントロールパネルを開いて、「回復」で検索、「回復ドライブの作成」を選ぶ。
SSDだけの状態に差し替えて、USBメモリから起動。メニューを辿ってコマンドプロンプトを起動。以下のコマンドを実行。
bcdedit /set {bootmgr} device partition=C:
bcdedit /set {default} device partition=C:
bcdedit /set {default} osdevice partition=C:
で、ようやくマトモに起動するようになった。
あとはパーティションの区切りをやりなおしたりとか、余ったディスクを使ってRAID組んでみたりとかしました。
Windowsって既存のドライブ選んでRAID1のミラー作れるんですね…べんり…!
性能測定
圧倒的すぎる…!超快適…!I/Oが詰まらないって最高…!
というわけでみんなもSSD化してみよう。がんばれ!