現在、パーティションがいっぱいになってしまう制限的なパーティション分割スキームに困っています。次のようになります。
/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
まず、十分な空き容量があるかどうかを常に確認する必要があります。今回は、十分な空き容量がありました。
コピーについて:
それほど単純ではありません。特別な属性が常に正しくコピーされるわけではない特別なファイルがあります。 の代わりにcp -R
、
cp -vfa /usr /newusr
現在何が行われているかを確認したい場合は、「-v」フラグを使用して確認できます。
/etc/fstab
変更に合わせて編集することを忘れないでください。- 警告: 再パーティション化後、カーネルは必ずしも新しいパーティション テーブルを再度読み取ることができないため、古いパーティション テーブルが引き続き使用される可能性があります。これは非常に危険です。現在のパーティション テーブルに関するカーネルのバージョンは で確認でき
/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、オフィスマシン、サーバーなど)については言及していませんが、正式な方法で実行できるかどうかはこれに依存します。