Skip to content

Latest commit

 

History

History
77 lines (56 loc) · 5.85 KB

File metadata and controls

77 lines (56 loc) · 5.85 KB

百合子設計局
報告書番号 018

無料ツールだけでできる!GPTディスクの拡大縮小コピー法

操 作 を 誤 る と

デ ー タ が 消 え る 可 能 性 が あ り ま す

自 己 責 任 で ど う ぞ

(上級者向け解説記事です。バックアップを取ってからしようね♡👩🏻‍✈️

なんかこの内容の良質な日本語記事がネットに転がってない気がするので、ちょっと執筆してみる。(ツール買えっていうアフィ記事ばっか出てくるので)

MBRディスクはddで単純コピーしただけでもブートできるけど、GPTディスクはコピー後に手直しが必要。が、意外とそれを書いてある記事が少ない・・・

以下手順はHDDでもSSDでも可能です。

用意するもの

  • コピー元ディスク
  • コピー先ディスク
  • CentOS 7.9のインストールディスク(ぉ
    • ディスククローンとパーティションテーブル修正に必要なツール dd gdisk cgdisk が入っていて、無料で入手できるのでょぃ
    • ダウンロード先: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)バックアップを作ってから実施する、消えてもいいディスクで一度練習する、などしましょう!

  1. CentOSのインストールディスクからブートする
  2. ddでコピーする。コピー元、コピー先のデバイスファイル名はlsblkを叩いて、気合で見つける(ぉ USBやSATA, SAS接続のディスクは/dev/sd?、NVMe接続のディスクは/dev/nvme?に居ることがぉーぃ
  3. gdisk コマンドで v (ベリファイ)すると Problem: The secondary header's self-pointer indicates that it isn't reside at the end of the disk. エラーが出るハズなので
  4. x でエキスパートコマンド・メニューに入り
  5. e を叩いて、ディスク末尾の副テーブル位置を修正する
  6. 再び v を叩いて No problems found. と出ればOK
  7. w を叩いて変更をディスクに反映。ここまでの手順にミスがあったり No problems found. にならなかったりする場合は qを叩いて変更を破棄し、4からやり直す。
  8. rebootで再起動

gdiskの代わりにpartedでも可能だが、partedはパーティション操作がディスクに即時反映される(危険)ので、w叩くまでならミスってもディスクに書き込まれないgdiskの方が安全。

技術的解説

MBRディスク:ディスク先頭にのみパーティション・テーブルを持つ

GPTディスク:ディスク先頭のみ主パーティション・テーブルを持ち、ディスク末尾に副テーブル(gdiskが言うにはbackup data structure)を持つ

単純にddでディスククローンすると末尾の副テーブル位置がおかしくなるので、これを直さないと正しいパーティション・テーブルとして認識されない

gdiskのエキスパートコマンドであるeコマンドは、この副テーブル位置の修正を行う。副テーブルがない時は、主テーブルを正とし、副テーブルを作成する。(拡大時、縮小時どちらもこの操作でOK)

拡大コピー時

より大きいディスクにコピーすると、副テーブルがディスクの真ん中に来てしまう。

縮小コピー時

より小さいディスクにコピーすると、副テーブルがディスクの末尾からはみ出てしまう。(はみ出た部分はコピーされないので、なくなってしまう)

おまじない

コピー元ディスクにWindowsが入っている場合は、コピー前に以下手順を踏んでおくと成功確率(クローン後にブートできる確率)が上がるかもっっっ!?

  1. セキュアブートOFF
  2. 高速シャットダウンOFF
  3. Windows Update全適用

別解

使ったことないので解説できないけど、CloneZillaとかいう良さげなツールがあるっぽい☆

ぢつは gdisk コマンドはWindows版もあるっ(32/64bit) 管理者権限のコマンドプロンプトで実行しよう。引数のドライブ指定は 0: 1: など番号でどうぞ。