既存のドライブを使用している場合と同様に、クローンドライブをPCに挿入してシームレスに起動できるようにするには、ハードドライブのクローン作成を進めるための最善の方法は何でしょうか。
私はDebianを実行しているハードドライブを持っていますが、SMARTのデータによると失敗しているようです。バックアップはありますが、OSを新しいドライブに再インストールすることもできます。しかし、現時点での私の最初の好みはドライブのクローンを作成することであろう、そして私は現在ブータブルCDからSystem Rescue CD 5.0.3を使うこと以外に選択肢はない。
ドライブにはそれほど多くはありません - おそらく10 GB未満の使用済みスペースで、非常に少ないデータしかありません。そのため、これほど時間がかかるとは思っていないので、時間にはあまり関心がありません。
思い出せば、私はDebianをインストールするときに暗号化ドライブとして設定するためのオプションを試したので、/ dev / sdaは暗号化されていないブートパーティションとして表示され、残りは暗号化される暗号化領域内に10 GBの小さなルートパーティションがあり、残りは現在未使用です。
私はまた古いPATAドライブを扱っています - 利用可能なSATAドライブはありません - そしてコンピュータはPATAリボンケーブルが起動のためにCD-ROMドライブと接続されている近いマザーボード上に一つのPATAコネクタがありますローカルドライブのために2台目のPATAドライブを接続する余地はありません。
これを回避するために、私はブート用の別のCD-ROMドライブとインストール先のハードドライブをマザーボードに同じ単一のPATAコネクタを持つ2台目のコンピュータを持っています。
私はSystem Rescue CD 5.0.3を立ち上げるためにCD-ROMドライブを介して両方のコンピュータをブートしました、そして私は故障したドライブをできるだけクローンにする私の選択肢を検討しています。
コンピュータはLAN経由で利用可能であり、私はグラフィカルインタフェースのない端末を介してSSH経由で両方ともリモートで接続しています。
転送元ドライブと転送先ドライブのサイズがあまりよくわかりません。コピー元のドライブがコピー先のドライブよりも容量が大きい可能性があるため、理想的には、空のドライブ全体を使用するのではなく、使用済みの容量だけを転送したいと思います。
説明したようにddrescueを使用することを検討していました ここに ;ただし、データのローカル転送についてのみ説明しています。
更新: 私はDebianインストーラがどのようにソースドライブを設定するのかを調べています。 3つのパーティションがあり、最後のパーティションだけが暗号化されているようです。
src # fdisk -l /dev/sda
Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x332e4146
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 247807 245760 120M 83 Linux
/dev/sda2 247808 8060927 7813120 3.7G 82 Linux swap / Solaris
/dev/sda3 8060928 78176255 70115328 33.4G 83 Linux
src# cryptsetup --verbose isLuks /dev/sda1
Device /dev/sda1 is not a valid LUKS device.
Command failed with code 22: Invalid argument
src# cryptsetup --verbose isLuks /dev/sda2
Device /dev/sda2 is not a valid LUKS device.
Command failed with code 22: Invalid argument
src# cryptsetup --verbose isLuks /dev/sda3
Command successful.
私は、同じ容量のドライブ間でも転送しようとしていると思います。40GBのPATAドライブから別の40 GBのPATAドライブです。
目的地は次のとおりです。
dest# fdisk -l /dev/sda
Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
更新: 宛先からddrescueを使用するために、NBDを使用してLAN経由でソースドライブのパーティションを公開することを検討しています。
これが私がこれまでにソースドライブを公開するために試みたものです...
src# nbd-server -d 8000 /dev/sda
...そして宛先コンピュータにローカルにマウントします。
dest# nbd-client src 8000 /mnt/nbd-sda
残念ながら、これを試すとエラーが発生します。リモートデバイスをマウントすることすらできません。
Warning: the oldstyle protocol is no longer supported.
This method now uses the newstyle protocol with a default export
Error: Cannot open NBD: No such file or directory
Please ensure the 'nbd' module is loaded.
Exiting.
更新: 私が次にしようとしているのは、単に目的のドライブのパーティションを手動で再作成することです。
私はMBRをコピーすることから始めました:
src# dd if=/dev/sda of=/tmp/sda-mbr.dat bs=512 count=1
dest# scp root@src:/tmp/sda-mbr.dat /tmp
dest# dd if=/tmp/sda-mbr.dat of=/dev/sda
dest# sync
先に進む前に、少なくとも今回はリカバリパーティションを作成することをお勧めします。
dest# fdisk /dev/sda
最後のパーティションを削除し、最終パーティション用に約15 GBのスペースを確保します。
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x332e4146
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 247807 245760 120M 83 Linux
/dev/sda2 247808 8060927 7813120 3.7G 82 Linux swap / Solaris
/dev/sda3 8060928 45809663 37748736 18G 83 Linux
/dev/sda4 45809664 78177791 32368128 15.4G 83 Linux
ソースに/ dev / sda3と同じ暗号化パーティションを宛先に作成する必要があります。私はこのリカバリパーティションに対しても同じことをするかもしれません。
dest# cryptsetup luksFormat /dev/sda3 --verify-passphrase
dest# cryptsetup luksFormat /dev/sda4 --verify-passphrase
次に、暗号化されたリカバリパーティションを開きます。
dest# cryptsetup open /dev/sda4 sda4-opened
dest# mkdir /mnt/sda4-open
dest# mke2fs -j /dev/mapper/sda4-opened
dest# mount /dev/mapper/sda4-opened /mnt/sda4-open
少なくとも今、私はこのリカバリパーティションをリモートでマウントして、より良いドライブにデータを転送することができます。
まず、ソースドライブの暗号化パーティションを開きました。
src# cryptsetup open /dev/sda3 sda3-opened
src# mkdir /mnt/sda3-open
src# mount /dev/mapper/sda3-opened /mnt/sda3-open
これでdfを使用した場合、ここで使用しているのは12 GBのディスク容量だけです。
アンマウントしましょう。
src# umount /mnt/sda3-open
src# rmdir /mnt/sda3-open
今、私はソースドライブにリカバリパーティションをマウントしたいと思いました:
src# mkdir /mnt/dest-sda4
src# sshfs root@dest:/mnt/sda4-open /mnt/dest-sda4
これをマウントすれば、ddrescueを実行できます。
src# ddrescue -f -n /dev/sda1 /mnt/dest-sda4/sda1.ddrescue.img /mnt/dest-sda4/sda1.ddrescue.log
これは元のパーティションと同じサイズのイメージを生成したので、これは未使用スペースを除外していないように見えます。
私はしようとしています fsarchiver 代わりに今:
src# fsarchiver savefs /mnt/dest-sda4/sda1.fsarchiver.img.fsa /dev/sda1
Statistics for filesystem 0
* files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
/ dev / sda1をマウントしてdfを実行すると、33 MBしか使用していないことがわかります。また、.fsaファイルは24 MBしかないため、圧縮されている可能性があります。元の120 MBよりも優れています。
それでは、ルートパーティションsda3で試してみましょう。
src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened
これはおそらくしばらく時間がかかるので、私は今のところこのアップデートを保存しています。
更新: これは思ったより早くなりました。これが私が得ることになったものです:
dest# ls -lh
total 7.7G
drwx------ 2 root root 16K Apr 8 01:49 lost+found
-rw-r--r-- 1 root root 24M Apr 8 02:04 sda1.fsarchiver.img.fsa
-rw-r--r-- 1 root root 7.7G Apr 8 02:43 sda3.fsarchiver.img.fsa
上記のコマンドからの出力を見ると、さらに興味深い部分があります。
src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened
Statistics for filesystem 0
* files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
これを正しく読んでいるのであれば、ソースドライブからデータを読み取るのが難しくなかったので、これはお勧めです。
いくつかクリーンアップしましょう。
src# umount /mnt/dest-sda4
src# rmdir /mnt/dest-sda4
次に、アーカイブしたファイルを復元先の/ dev / sda1と/ dev / sda3に復元しますが、セットアップを中断した場所を忘れたため、まず復元先のドライブに何があるかを見てみましょう。
まず、/ dev / sda1にファイルシステムはありますか?
dest# mkdir /mnt/sda1
dest# mount /dev/sda1 /mnt/sda1
NTFS signature is missing.
Failed to mount '/dev/sda1': Invalid argument
The device '/dev/sda1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
OK。私はファイルシステムを期待していませんでしたが、私はNTFSメッセージを期待していませんでした。だから何もない。
最初のパーティションイメージを復元しましょう。
dest# fsarchiver restfs /mnt/sda4-open/sda1.fsarchiver.img.fsa id=0,dest=/dev/sda1
Statistics for filesystem 0
* files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
今マウントしましょう:
dest# mount /dev/sda1 /mnt/sda1
dest# ls -l /mnt/sda1
...
dest$ df -h | grep sda1
...
物事はこれまでのところ良く見えます。
それではルートパーティションをやってみましょう。
dest# cryptsetup open /dev/sda3 sda3-opened
dest# mkdir /mnt/sda3-open
dest# mount /dev/mapper/sda3-opened /mnt/sda3-open
NTFS signature is missing.
Failed to mount '/dev/mapper/sda3-opened': Invalid argument
The device '/dev/mapper/sda3-opened' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
以前と同じです - そこには何もありません。
パーティションイメージを復元しましょう。
dest# fsarchiver restfs /mnt/sda4-open/sda3.fsarchiver.img.fsa id=0,dest=/dev/mapper/sda3-opened
Statistics for filesystem 0
* files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
今マウントしましょう:
dest# mount /dev/mapper/sda3-opened /mnt/sda3-open
dest# ls -l /mnt/sda3
...
dest$ df -h | grep sda3
...
物事はこれまでのところ良く見えます。
私は以下の両方を実行しました:
# fsarchiver probe simple
物事は予想通りに見えます。
私はまだ足りないと思うことの1つは、これがGrubを台無しにすると思うことです。私は、ステージ1がMBRから正常に起動したことを思い出したようですが、前回このようなことをしようとしたときに/ bootパーティションにステージ2が見つかりませんでした。
このページ につながった この Grubを修復する方法について説明します。
dest# mount -o bind /proc /mnt/sda3-open/proc
dest# mount -o bind /dev /mnt/sda3-open/dev
dest# mount -o bind /sys /mnt/sda3-open/sys
dest# chroot /mnt/sda3-open /bin/bash
(dest) chroot# mount /dev/sda1 /boot/
(dest) chroot# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
(dest) chroot# umount /boot
(dest) chroot# exit
dest# umount /mnt/sda3-open/{sys,dev,proc}
再起動すると、これは機能し、ドライブは正しく起動するはずです。しかし、それは今遅くなっており、私はまだそれに入りたくないです。
また、私はまだこれがハッピーエンドになるだろうと確信していません。上記のgrub-installコマンドはi386用にインストールしていると述べていますが、64ビットが欲しいと思います。
私はrescue64でSystem Rescue CDを再起動することによってこの部分をやり直さなければならないかもしれません。デフォルトの起動で32ビットが起動したかどうかわかりません。
繰り返しになりますが、私は明日残りを扱います。
更新: だから良いニュースはSystem Rescue CDのためのデフォルトの起動がrescue64であったことである、それでそれは何の問題もなかったでしょう。
それは私がLVMについて完全に忘れていたことがわかり、ドライブのUUIDは明らかに一致しません。
...
cryptsetup: lvm is not available
cryptsetup: lvm is not available
cryptsetup: lvm is not available
cryptsetup: lvm is not available
ALERT! /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx does not exist.
Check cryptopts=source= bootarg: cat /proc/cmdline
or missing modules, devices: cat /proc/modules; ls /dev
-r Dropping to a shell. Will skip /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxx
xxxxxxxx if you can't fix.
modprobe: module ehci-orion not found in modules.dep
BusyBox vx.xx.x (Debian x:x.xx.x-x+xxxxxx) built-in shell (ash)
Enter 'help for a list of built-in commands.
/bin/sh: can't access tty: job control turned off
(initramfs)
私はこれらと戦うことができると思いますが、私は気にしません。代わりに、私はdirktが提案したものを試して、完全な/ dev / sda - UUIDとすべて - をクローン化するつもりです。 LAN
私はNBDを動かすことができなかったので私は昨夜これをすることができなかったので、私は画像ファイルに保存することに頼りました。完全なディスククローンを作成しているのであればそれはできません。そのため、パイプまたは名前付きパイプのほうがうまく機能するかどうかを確認しましょう。
そのため、最初に戻ると、両方のコンピュータはSystem Rescue CDのブータブルCDから起動し、それぞれのDHCP割り当てIPアドレスを介してネットワーク経由で利用可能になりました。 passwd
コマンド。
実際のドライブでこれを行う前に、私は小さな偽のもので練習したいので、それを設定することから始めます。
src# dd if=/dev/zero of=/root/tempsrc.dat bs=1M count=128
...
src# fdisk -l /root/tempsrc.dat
Disk /root/tempsrc.dat: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8b8647e7
Device Boot Start End Sectors Size Id Type
/root/tempsrc.dat1 * 2048 34815 32768 16M 83 Linux
/root/tempsrc.dat2 34816 100351 65536 32M 82 Linux swap / Solaris
/root/tempsrc.dat3 100352 262143 161792 79M 83 Linux
src# mkdir /mnt/tempsrc
src# mkdir /mnt/tempsrc-mounted
src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 2048 \* 512)
src# mke2fs /dev/loop1
src# mount /dev/loop1 /mnt/tempsrc-mounted
src# echo 'This is partition 1' > /mnt/tempsrc-mounted/note1.txt
src# umount /mnt/tempsrc-mounted
src# losetup -d /dev/loop1
src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 100352 \* 512)
src# cryptsetup luksFormat /dev/loop1 --verify-passphrase
src# cryptsetup open /dev/loop1 loop1-opened
src# mke2fs -j /dev/mapper/loop1-opened
src# mount /dev/mapper/loop1-opened /mnt/tempsrc-mounted
src# echo 'This is partition 3' > /mnt/tempsrc-mounted/note3.txt
src# umount /mnt/tempsrc-mounted
src# cryptsetup close loop1-opened
src# losetup -d /dev/loop1
src# rmdir /mnt/tempsrc-mounted
src# rmdir /mnt/tempsrc
知っている。私は二度とLVMを扱わなかった。しかたがない。
SDカードイメージのようなディスクのイメージを含む/root/tempsrc.datがあり、それをリモートの転送先に転送します。最初のパーティションにはというファイルがあります。 note1.txt
3番目のパーティションは暗号化されており、 note3.txt
異なる内容で。私は実行した後、私はこれのすべてに到達できることを確認したいと思います fsarchiver
そしてそれを転送します。
目的地で何か準備をしましょう。
dest# dd if=/dev/zero of=/root/tempdest.dat bs=1M count=128
dest# fdisk -l /root/tempdest.dat
Disk /root/tempdest.dat: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
これらのループバックデバイスも作成しましょう。
src# losetup /dev/loop1 /root/tempsrc.dat
dest# losetup /dev/loop2 /root/tempdest.dat
転送を実行する準備が整ったので、fsarchiverはそれを処理できないことを確認しました。 ここに そして ここに 。
私は次のようなことをすることを望んでいました:
src# fsarchiver savefs /tmp/fifo1 /dev/loop1
dest# fsarchiver restfs /tmp/fifo2 id=0,dest=/dev/loop2
更新: 転送先の40 GBドライブを一時的な3台目のドライブに交換し、転送先PCの電源を入れました。
この新しいドライブを設定することから始めましょう:
dest# mkdir /mnt/sda-open
dest# mount /dev/sda1 /mnt/sda-open
今回は/ dev / sda全体を一度に操作することを除いて、再度転送を試みます。
src# mkdir /mnt/dest-sda
src# sshfs root@dest:/mnt/sda-open /mnt/dest-sda
src# fsarchiver savefs /mnt/dest-sda/src-sda.fsarchiver.img.fsa /dev/sda
filesys.c#317,generic_mount(): partition [/dev/sda] cannot be mounted on [/tmp/fsa/20180408-222928-xxxxxxxx-00] as [vfat] with options []
oper_save.c#1032,filesystem_mount_partition(): cannot mount partition [/dev/sda]: filesystem may not be supported by either fsarchiver or the kernel.
removed /mnt/dest-sda/src-sda.fsarchiver.img.fsa
まあ、そんなにその考えのために。私は彼らがそれを「FS」アーカイバと呼ぶ理由があると思います。 partimageを試してみましょう。
src# partimage --compress=1 save /dev/sda /mnt/dest-sda/src-sda.partimg.bz2
これもうまくいきませんでした。どうやらこれはファイルシステムを扱っていて、ディスク全体でも扱っていないようです。
私たちはディスク全体を操作しているので、ddrescueが現在うまくいくかどうか見てみましょう。
src# ddrescue --no-scrape /dev/sda /mnt/dest-sda/src-sda.ddrescue.img /mnt/dest-sda/src-sda.ddrescue.img.log
GNU ddrescue 1.21
Press Ctrl-C to interrupt
ipos: 785580 kB, non-trimmed: 0 B, current rate: 12320 kB/s
opos: 785580 kB, non-scraped: 0 B, average rate: 10615 kB/s
non-tried: 39241 MB, errsize: 0 B, run time: 1m 14s
rescued: 785580 kB, errors: 0, remaining time: 1h
percent rescued: 1.96% time since last successful read: 0s
Copying non-tried blocks... Pass 1 (forwards)
私は午後5時41分にこれを始めました。 40 GB以上のドライブでは100 MbpsのLANだと思います。現時点では、出力はそれが約1時間で行われると主張している。