パーティションをルートパーティションに移動する

パーティションをルートパーティションに移動する

現在、パーティションがいっぱいになってしまう制限的なパーティション分割スキームに困っています。次のようになります。

/dev/sda7             870G  315G  511G  39% /
/dev/sda6             2.0G  271M  1.6G  15% /tmp
/dev/sda3              15G   13G  1.5G  90% /usr
/dev/sda2              15G  8.6G  5.0G  64% /var
/dev/sda1              99M   36M   58M  39% /boot
tmpfs                 7.9G     0  7.9G   0% /dev/shm

データをルート パーティションに移動したいのです/usrが (/varおそらく、ルート パーティションにも移動したいです)。パーティション自体はあまり気にしないので、マージは必要ありません。

これを実行するための最善のアプローチは何でしょうか? 現在、私の計画は次のとおりです。

cp -R /usr /newusr
umount /usr
mv /newusr /usr

本当にこんなに単純なことなのでしょうか、それとも私が何かを見落としているのでしょうか?

答え1

あなたのアプローチは正しいです。ルート パーティションにディレクトリを作成し、そこにデータをコピーし、usrパーティションをアンマウントして、新しいディレクトリを に移動しますusr。後で を編集することを忘れないでください/etc/fstab

答え2

  1. まず、十分な空き容量があるかどうかを常に確認する必要があります。今回は、十分な空き容量がありました。

  2. コピーについて:

それほど単純ではありません。特別な属性が常に正しくコピーされるわけではない特別なファイルがあります。 の代わりにcp -R

cp -vfa /usr /newusr

現在何が行われているかを確認したい場合は、「-v」フラグを使用して確認できます。

  1. /etc/fstab変更に合わせて編集することを忘れないでください。
  2. 警告: 再パーティション化後、カーネルは必ずしも新しいパーティション テーブルを再度読み取ることができないため、古いパーティション テーブルが引き続き使用される可能性があります。これは非常に危険です。現在のパーティション テーブルに関するカーネルのバージョンは で確認でき/proc/partitions、ディスク上のパーティション テーブルは で読み取ることができますfdisk -l /dev/sda。現在変更したいパーティションに不一致がある場合は、再起動することをお勧めします。

答え3

これを実現するには、シングル ユーザー モードまたは LiveCD を使用して実行する必要があります。これはインターネットで見つけることができます。

さらに、実行時にこれを実行することも可能です(もちろん少しリスクはありますが)が、この方法は/varでのみ機能し、/usr一部のランタイム ライブラリはこのフォルダーに依存しています。動作するかどうかは、事前にテスト マシンで試すことができます。

まず最初にしなければならない移動するディレクトリを使用しているか、そのディレクトリに書き込んでいるプロセス/サービスがあるかどうかを確認します。

lsof | grep -E '/usr|/var'

一般的に、/varはpidとsockファイルにまだ使用されています。/usrどのライブラリでも必要になります。

したがって、表示されるサービスとプロセスを停止/強制終了します。

COMMAND    PID  TID        USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
cupsd      723             root    5u      REG                8,1          0    8651393 /var/log/cups/error_log
cupsd      723             root    6u      REG                8,1          0    8651908 /var/log/cups/page_log
cupsd      723             root   12u     unix 0xffff88020d97d780        0t0       9958 /var/run/cups/cups.sock

この短い例では、cups デーモンが実行されており、それらのディレクトリを使用しています。これらを停止すると、lsof 出力には表示されなくなります。

その後、現在のデータのコピーが必要になります。cp ではなく rsync を使用することをお勧めします (権限、シンボリックリンクなどすべてを保持するため)。

mkdir /mnt/var
mkdir /mnt/usr

バックアップを行ってください

rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr

フォルダをアンマウントする

umount /var
umount /usr

データを復元する

rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr

編集する/etc/fstabファイルをコメントアウト/削除する/varそして/usrマウントされるはずの場所。

その後、停止したすべてのサービスを開始するか、マシンを再起動します。/usr動作しません。デーモンを停止することはできません (init pid に依存するため、デーモンを強制終了できない可能性があります)。唯一の方法は、LiveCD を使用することです。

マシンの種類(PC、オフィスマシン、サーバーなど)については言及していませんが、正式な方法で実行できるかどうかはこれに依存します。

関連情報