web-dev-qa-db-ja.com

Linuxハードドライブをより小さなフラッシュドライブに複製する方法

現在、Linuxがインストールされているハードドライブを16GBのフラッシュドライブに複製しようとしています。ハードドライブは233GBですが、df -hは、3.5Gのみが使用されていることを示しています。 Clonezillaを使用して、割り当てられた容量だけを使用してイメージを作成し、それをフラッシュドライブにコピーして、他のLinuxラップトップにイメージを展開できますか?

編集: Parted MagicでClonzillaを使用しようとしましたが、device-imageを実行しようとすると、次のエラーがスローされます。

split /home/partimag/lubuntu.img/lubuntu-vg-root.ext4.ptcl-img.gz.aa: Input/output error
Checking the disk space...
Failed to save partition /dev/lubuntu-vg/root.
Press Enter to continue
2
AndreasKralj

ディスクレイアウトについてあまり指定していないので、いくつかの仮定をします。アプリケーションに合わせて変更するか、追加の詳細を提供してください。これを編集できます。

仮定:

  • 1つの物理ディスク
  • 2つのパーティション(ブート+ LVM PV)
  • 2 LV(ルート+スワップ)

これはCentOS/Red Hatのデフォルトのインストールであり、非常に一般的です。

GPartedをブートメディアとして使用できますが、実際のGPartedツールなしでこれを試してみましょう。

スタックの一番下から始めます。 LVM論理ボリュームとそのファイルシステムを縮小します。

lvreduce -rL 8G /dev/mapper/centos-root

ここで8Gを指定したのは、使用可能な16Gよりも小さく、スワップボリュームがまだ小さい可能性があるためです。

Centos-rootをLV名に置き換えます。不明な場合は、lvs/lvdisplay/ls /dev/mapperを実行してください。)

次に、LVMPVを縮小できるはずです。

pvresize --setphysicalvolumesize 14G /dev/vda2

/ dev/vda2をディスクに置き換えます。

14Gを選択したのは、16Gの制限をわずかに下回っており、この方法で正確な計算を行う必要がないためです。ルートボリュームの前にスワップが割り当てられていれば、うまくいくはずです。サイズを変更したルートボ​​リュームの背後にスワップが割り当てられている場合、このコマンドは失敗する可能性があります。その場合、ルートとスワップの間にギャップがあり、PVを縮小できるように、スワップをその空き領域にスライドさせる必要があります。私はこれに遭遇しましたが、次のステップでそれを克服しました。

/dev/vda2: cannot resize to *n* extents as later ones are allocated.

まず、移動する必要のあるエクステントを見つけます。

pvs -v --segments /dev/vda2

上記のターゲット境界nの後に発生するエクステントの範囲を持つLVが表示されます。

pvmove --alloc anywhere /dev/vda2:n-n

このコマンドは、縮小ルートから作成した空き領域をボリュームが占めるようにレイアウトを再配置します。その後、もう一度pvresizeを試みることができ、これで機能するはずです。

最後に、LVMパーティションを縮小します。

fdisk /dev/vda2

まず、パーティションテーブルを印刷(p)します。 (これは後で必要になります。)削除したいもの(d)はLVMパーティションであり、できればディスクの最後にあります。次に、新しい小さいサイズで再作成します。 (n)以前と同じセクターで始まることを絶対に確認してください。 (元のテーブルを印刷した場所までスクロールします。)これも15Gにします。これは、数学であり、実際には16Gではない16Gフラッシュドライブに収まることがわかっているためです。この操作を(w)で終了して、変更を書き込みます。

すべてが16G未満であることを確認し、CloneZillaプロセスを再試行します。

shrinking disk layout

2
Aaron Copley