はじめに
Ubuntu で Minecraft サーバーを建てたりしていたら SSD が死んでしまったので、データをクローンしつつディスクを交換します。
環境
OS : Ubuntu 22.04
Disk (dead) : 128 GB SSD (PLEXTOR 2012 年製)
Disk (new) : 512 GB SSD (Crucial)
準備
今回交換する予定のディスクには OS 本体は入っていないので、Live USB は必要ないのですが、いつかやることになると思うので今回はこの方法を採りました。
必要なものを下にまとめました。
- Ubuntu の iso ファイル (ダウンロードページ)
- Rufus や Etcher などの書き込みソフト
- USB メモリ (2 GB 以上)
1 - Live USB の作成
Rufus や Ether といったソフトで USB メモリに用意した iso ファイルを書き込みます。
特に注意点はありません。
実機での操作
2 - SSD を接続
置き換えたい SSD と新品の SSD を PC に接続します。
3 - ブートデバイスの変更
交換したいディスクが搭載されている PC に手順 1 で用意した USB メモリを挿し、電源を入れます。
このとき BIOS か UEFI に入ってブート順を変更し、 Live USB の OS が起動するようにしましょう。
4 - パッケージのインストール
ddrescue
というパッケージを利用します。
普通の apt install
ではインストールできないので、
sudo add-apt-repository universe
sudo apt update
sudo apt install ddrescue
の 3 コマンドを実行します。
(有志によるメンテナンスが行われているリポジトリからのインストールを許可するコマンドを発行しています。)
5 - パーティション作成、フォーマット
fdisk -l
や lsblk
を使用して置き換え対象と新しいディスクのデバイスファイル名を確認します。
今回は /dev/sdb
のデータを /dev/sdc
に移行するという想定でコマンドを書いたので、各自で引数を自分の環境のものに置き換えて実行してください。
早速データ移行を、とその前に新しく接続したディスクのフォーマットを行いましょう。
今回は新しく用意したディスクのすべての領域を使用する 1 つのパーティションを作成します。
sudo parted /dev/sdc # parted の対話モードを開始
(parted) mklabel gpt # パーティション形式を GPT に設定
(parted) mkpart # パーティションを作成(するモードに入る)
Partition name? []? new_disk # パーティション名を設定
File system type [ext2]? ext4 # ファイルシステムを設定(ext4 が無難)
Start? 0% # パーティションの開始位置
End? 100% # パーティションの終了位置
(parted) p # 設定が正しく行われたかの確認
(parted) q # parted を終了する
次に、作成したパーティションのフォーマットを行います。
作成したパーティションは /dev/sdc1
であるとして進めます。
mkfs -t ext4 /dev/sdc1
6 - データ移行
いよいよ古いディスクから新しいディスクにデータをコピーします。。
/dev/sda から /dev/sdc にデータを移す際は下記のコマンドを実行します。
ddrescue -f -v /dev/sda /dev/sdc
# 書き込み先のデータに書き込み元のデータを強制的に上書きする
# かつ、詳細情報を表示する。
128 GB SSD に 40 GB ほどデータが入っている状態でクローンを行い、 10 分ほどで処理が完了しました。
HDD から移行するのであればもっと時間がかかるかもしれません
おわりに
ddrescue の公式サイトを見ていたら、
"Never try to repair a file system on a drive with I/O errors; you will probably lose even more data."
「I/O エラーが出ているドライブには使用しないほうが良い」と書かれていたので、今回の私のように「SSD が死んだので ddrescue を使って復旧します!」はやるべきではないということのようです。
参考文献