百合子設計局
報告書番号 018
操 作 を 誤 る と
デ ー タ が 消 え る 可 能 性 が あ り ま す
自 己 責 任 で ど う ぞ
(上級者向け解説記事です。バックアップを取ってからしようね♡👩🏻
なんかこの内容の良質な日本語記事がネットに転がってない気がするので、ちょっと執筆してみる。(ツール買えっていうアフィ記事ばっか出てくるので)
MBRディスクはddで単純コピーしただけでもブートできるけど、GPTディスクはコピー後に手直しが必要。が、意外とそれを書いてある記事が少ない・・・
以下手順はHDDでもSSDでも可能です。
- コピー元ディスク
- コピー先ディスク
- CentOS 7.9のインストールディスク(ぉ
- ディスククローンとパーティションテーブル修正に必要なツール
ddgdiskcgdiskが入っていて、無料で入手できるのでょぃ - ダウンロード先:https://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/7.9.2009/isos/x86_64/ など
- ブートとコピーができればいいので一番小さい
CentOS-7-x86_64-NetInstall-2009.isoをダウンロードすればOK - 7.9のディスクでブートできない場合は5.9、6.9、CentOS Stream 10など前後のバージョンも試してみよう☆(入ってるツールはだいたい同じ)
- CentOSのインストールディスクには
pvが入っていないので、コピーが長時間かかる想定の場合は、コピーだけ別OSでやるといいかも dd if=/dev/sda bs=1M | pv -s 2000G | dd of=/dev/nvme0n1 bs=1Mなどとすると、コピーの進捗状況が見れて良い☆
- ディスククローンとパーティションテーブル修正に必要なツール
- コピー元、先ディスク両方を読めるマシンかマザーボード
- ※SATA HDD→NVMe SSDなら、SATAとNVMe両方読めるマシンが必要。
- ※SAS HDD→SATA SSDなら、SASとSATA両方読めるマシンが必要。
- まぁマザーボードにSATAやNVMeのコネクタがなくても、USBに変換してしまえばOK
- 最近の大容量NVMe SSDは、その電力要求量の大きさからかUSB接続だと動かないので、ちうい!
- WD Black SN850Xは3A近く流れるせいか、ちゃんとPCIeスロットに刺さないと動かなかった・・・
- US配列キーボード
- シェルでJPキーボードが使えないことがあるため、あるとょぃ
大変危険な操作です(特に手順2)バックアップを作ってから実施する、消えてもいいディスクで一度練習する、などしましょう!
- CentOSのインストールディスクからブートする
ddでコピーする。コピー元、コピー先のデバイスファイル名はlsblkを叩いて、気合で見つける(ぉ USBやSATA, SAS接続のディスクは/dev/sd?、NVMe接続のディスクは/dev/nvme?に居ることがぉーぃgdiskコマンドでv(ベリファイ)すると Problem: The secondary header's self-pointer indicates that it isn't reside at the end of the disk. エラーが出るハズなのでxでエキスパートコマンド・メニューに入りeを叩いて、ディスク末尾の副テーブル位置を修正する- 再び
vを叩いて No problems found. と出ればOK wを叩いて変更をディスクに反映。ここまでの手順にミスがあったり No problems found. にならなかったりする場合はqを叩いて変更を破棄し、4からやり直す。rebootで再起動
gdiskの代わりにpartedでも可能だが、partedはパーティション操作がディスクに即時反映される(危険)ので、w叩くまでならミスってもディスクに書き込まれないgdiskの方が安全。
MBRディスク:ディスク先頭にのみパーティション・テーブルを持つ
GPTディスク:ディスク先頭のみ主パーティション・テーブルを持ち、ディスク末尾に副テーブル(gdiskが言うにはbackup data structure)を持つ
単純にddでディスククローンすると末尾の副テーブル位置がおかしくなるので、これを直さないと正しいパーティション・テーブルとして認識されない
gdiskのエキスパートコマンドであるeコマンドは、この副テーブル位置の修正を行う。副テーブルがない時は、主テーブルを正とし、副テーブルを作成する。(拡大時、縮小時どちらもこの操作でOK)
より大きいディスクにコピーすると、副テーブルがディスクの真ん中に来てしまう。
より小さいディスクにコピーすると、副テーブルがディスクの末尾からはみ出てしまう。(はみ出た部分はコピーされないので、なくなってしまう)
コピー元ディスクにWindowsが入っている場合は、コピー前に以下手順を踏んでおくと成功確率(クローン後にブートできる確率)が上がるかもっっっ!?
- セキュアブートOFF
- 高速シャットダウンOFF
- Windows Update全適用
使ったことないので解説できないけど、CloneZillaとかいう良さげなツールがあるっぽい☆
ぢつは gdisk コマンドはWindows版もあるっ(32/64bit) 管理者権限のコマンドプロンプトで実行しよう。引数のドライブ指定は 0: 1: など番号でどうぞ。