web-dev-qa-db-ja.com

Linuxパーティションをより小さなパーティションに複製する最良の方法は何ですか?

現在80GBを持っています RAID (はい、そうです、それが私がそれを変更する理由です...) ext 約80%無料のLinuxデバイス以前のRAID0パーティションの1つを使用して、40 GB ext4 パーティションに変更したいと思います。別の大きなパーティションにすべてのファイル用の十分な空き領域があります。切り替えを行うために考えた最善の方法は次のとおりです。

  1. cp -aファイルシステム上のすべてのファイルを大きなパーティションの下のディレクトリに
  2. 再パーティション
  3. cp -aすべてのファイルを新しいパーティションに戻す

問題は、特別なファイルプロパティ(Linuxのルートデバイス)が心配なことです。 cp -a必要なファイルプロパティをall保持して、後で新しいパーティションを起動できるようにしますか?私はそれを行う別の方法を逃していますか?

2
thecoop

私は...するだろう:

  1. resize2fs -p /dev/<device_name_fs_is_on> 20Gのようなものでファイルシステムのサイズを変更します
    間違いなく最初の実行を拒否し、最初にfsckを実行することをお勧めします。強制的に実行することもできますが、エラー(マイナーなものでも)でファイルシステムのサイズを変更しようとすると災害が発生する可能性があるため、fsck操作を強くお勧めします。チェックが完了したら、サイズ変更コマンドを再実行します
  2. dd if=/dev/<device_name_fs_is_on> of=/path/to/other/location/filesystem.img bs=1048576 count=20480を使用して他のドライブにコピーします
  3. 必要に応じてディスクを再フォーマットします
  4. dd if=/path/to/other/location/filesystem.img of=/dev/<new_device_name>を使用してファイルシステムをコピーして戻します
  5. サイズを変更して、新しいパーティションをresize2fs -p /dev/<new_device_name>で埋めます
  6. 新しくサイズ変更されたファイルシステムをマウントし、/ etc/fstabなどの関連する構成を編集します
  7. また、grub構成をチェックして、新しいルートパーティション名を参照していることを確認する必要があります。また、initrdを再構築する必要がある場合もあります(ただし、RAIDから通常に移行する場合はそうではなく、その逆ではなく、 initrdはRAIDに対応していません)
  8. 指を交差させて再起動します...

これはルートファイルシステムであるため、マウント中はファイルシステムのサイズを変更できないため(手順2)、ライブCDからこれを行う必要があります。

手順1でresize2fsに渡された20Gを変更する場合は、手順2でddに渡された1048576x20480もそれに応じて変更してください。

明らかに、これはリスクのない操作ではないため、手順3の前に、他の方法でファイルシステム上の重要なデータと構成を個別にバックアップすることをお勧めします。
さらに安全性を高めるために:時間とディスクに余裕がある場合は、縮小したファイルシステムを追加のディスクに復元し、手順6と7に従って適切に再構成し、手順に進む前にそれを起動できることを確認します。 3.このようにして、古い場所からワイプする前に、ファイルシステムの完全に機能するコピーが他の場所にあることがわかり、その段階で問題を発見した場合、簡単に古いセットアップに戻して中止/再試行できます。

このようにして、個々のファイル、dir、およびデバイスノードではなく、ファイルシステムホールセールで操作しているときに、コピー中にファイル/ディレクトリ/デバイスのプロパティが失われることはありませんany

6
David Spillett

私はそれを使ったことがありませんが、 System Rescue CD で利用できるpartimageと呼ばれるパーティションイメージングプログラムがあります。

Partimageを使用するとどうなるかわかりませんが、cpを使用する場合(コピーするときにコピー先のディレクトリをコピーしようとしないように注意してください。cp -axが必要になる場合があります)。コピー中に変更される物理ハードディスクの場所をハードコーディングするため、Grubを再インストールします。

1
Neal