/ varを別の既存のパーティションに移動する方法は?


16

/ varを含む/パーティションがあり、小さすぎます。十分なスペースがある別の既存のパーティションがあります。

ここに私のdfがあります:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

/ varフォルダをsda1からsda2に移動するにはどうすればよいですか?

回答:


19

シングルユーザーモードに入り、プロセスへの書き込み/varが停止していることを確認します。(で確認lsof | grep /var

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old/var.oldスペースの再利用が完了したら削除できます
  • mkdir -p /var
  • mount -o bind /home/var /var
  • を更新/etc/fstabして、バインドマウントを永続的にします。

/etc/fstab

 /home/var /var        none    bind

いいね!シングルユーザーモードに入るにはどうすればよいですか?「var」フォルダーは/ homeに残りますか?
ジェレミー

はい/home/var、この方法で問題を解決する場合、常にディレクトリが存在します。再起動して、ブートメニューからシングルユーザーモードを選択することにより、シングルユーザーモードに移行することができます。
ゾレダチェ

これがいつでもうまくいくかどうかはよくわかりません。/ runファイルシステムがあるため、より新しいバージョン(wheezy)を使用している場合は問題ないかもしれません。OTOH:ブートプロセスの初期段階で、ファイルがバインドマウントされる前に/ varで開かれます。
cstamas

1
@cstamas、別のファイルシステムで/ varを使用することがサポートされており、常にサポートされています。/ varを別の場所に置くことは、FHSおよび公式のDebianドキュメントで良いこととして提案されています。
ゾレダチェ

わかりました、あなたは正しいと思います。バインドマウントを使用してこれを行うのは、私にとって奇妙なことでした。
cstamas

5

以下も使用できます。

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

これは、fstabやマウントをいじるよりもずっと簡単に思えます。


1
なぜ誰もこれに反対票を投じるのかわかりません。これは完璧に機能します。シンボリックリンクは正常に機能するはずです。私は他のものにバインドマウントを使用しているだけなので、それらを最初に考える傾向があります。
ゾレダチェ

1
これに追加すると、それほど安全ではないかもしれませんが、実際には機能します。私は最近、本番環境に置く前にマシンでこれを行いました。使用中のマシンであるか、多くのプロセスが実行されているマシンの場合は注意が必要です。私の場合、これはTomcatのみを実行することを目的とした新しいサーバーでした。
AJブラウン

1
/ varのシンボリックリンクは機能しますが、その代わりに/ etc / fstabにエントリを置き、どのパーティション/ボリュームに何を、そしてなぜ(コメントを追加できます)に自分自身を記憶することを好みます。この方法は、ハードウェアで何かを変更する必要がある場合に構成を変更する必要があることも理解しやすいです。
ゲルロス14年

1
これがどのように機能するかわかりません。動作させたいのですが、initのような基本的なものは/ varを使用しませんか?
スー・スペンス

1

/varシングルユーザーモードに変更せずに移動する

私は私の雇用者のホスティング会社によって私のために準備されていた新しい仮想サーバーを引き継いだとき、私はのために余分な論理ボリュームを作成varし、homeどのルートパーティションに定期的にディレクトリをしていました。仮想サーバープロバイダーは、シングルユーザーモードでサーバーにアクセスできるKVMのようなインターフェイスを提供していなかったため、上記の回答は私のセットアップには適用されませんでした。この答えが同様の状況の他の人に役立つことを願っています(LVMの詳細を保持しましたが、新しいファイルシステムが論理ボリュームまたはディスクパーティションに作成されているかどうかは特に関係ないため、これらはスキップできます)。

/varLVMで新しいファイルシステムを作成して使用する

新しいvarボリュームのファイルシステムを作成し、(一時ディレクトリを使用して)マウントし、現在の/varファイルシステムから新しいファイルシステムにファイルをコピーします。でファイルをコピーする場合rsync-a, --archiveタイムスタンプ、所有権、モードなど-X, --xattrsを保持するオプションと、AppArmorおよびSELinuxで使用されるセキュリティラベルなどの拡張属性を保持するオプションを使用します。

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

ファイルシステムテーブルを更新する

/var次の行をに追加して、新しいファイルシステムを新しいマウントポイントとして使用するように設定します/etc/fstab。これ0はパス番号(最後のフィールド)として使用されるためfsck、特定の回数の再起動後にファイルシステムが自動的にチェックされないようにします()(シングルユーザーモードでサーバーにログインするアクセス権がありません)。

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

私はシングルユーザーモードに変更できないため、コンピューターを再起動して、この新しいボリュームをとして使用し/varます。

ルートファイルシステムからディスクスペースを回復する

マシンが再起動したら、次の手順を実行して一時ディレクトリをクリーンアップ/varし、ルートファイルシステムから古いファイルを削除します。

  1. 一時的なマウントポイントを削除します。

    sudo rmdir /var.new
    
  2. /varルートファイルシステム上の古いディレクトリ上のファイルへの代替パスを作成するために、新しいマウントポイントを作成します(現在/var、ディレクトリにマウントされている新しいファイルシステムによって「マスク」されています)。

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.