/ varを別のパーティションに保存するにはどうすればよいですか?


13

とは/var別のパーティションに保存したいと思い/ます。これを設定する正しい方法は何ですか?

回答:


17

最初に新しいパーティションを準備します(たとえば、partedmkfs)。

パーティションが/ dev / sda5であるとします

新しいパーティションをマウントします。

mkdir /var2
mount /dev/sda5 /var2

現在の変数を同期します:

rsync -a /var/ /var2

/ etc / fstabにエントリを追加します

/dev/sda5    /var    ext4    defaults      2 2

リブート。

古い/ varに戻る必要がある場合は、fstabのエントリをコメントアウトしてください。


1
私は古い上のスペースを回復するためにいくつかの情報を追加する/var、のLiveCDから起動をインストールしたシステム上のパーティションをマウントします/rm -rf /var/*
-enzotib

1
いい視点ね。または/、実行中(ただし再起動後)に、現在のシステムの他の場所にマウントできます。次に、あなたが古いで取得することができます/varし、あなたのような場合はそれを削除
アレクサンドルLevchuk

1
私もそれらについて疑問に思っていました。最初の1つは本当に古風で効果のないもので、2つ目はブート中にextをスキャンするときにfsckの順序を制御します。私はもう彼らに注意を払わない。構文で必要なため、1 1を入力してください。
アレクサンドルレフチュク

2
30回目の再起動時に/ varの前に/のようなfsckスキャンを実行させるには、2 2を入力する必要があります。それ以外の場合、/ varが失敗し、単一のユーザーシェルで手動で修正するように求められた場合、ファイルシステムはありません。楽しいもの。
アレクサンドルレフチュク

2
fstabでUUIDを使用することをお勧めしませんか?を使用して適切なものを取得しましたが、blkid -o list -s UUIDsudoで実行する必要があると思います
-steevc

2

仮想サーバーでの新しい/ varパーティションの構成

雇用主のホスティング会社によってプロビジョニングされた新しい仮想サーバーを引き継いだとき、ルートファイルシステムに十分な空き領域がありませんでした。幸運なことに、彼らは論理ボリュームマネージャ(LVM)を使用して仮想ディスクを細分化し、新しいボリュームを作成するのに十分な空き容量がありました。私はのために余分な論理ボリュームを作成varし、homeそのルートファイルシステム内の通常のディレクトリされていました。仮想サーバープロバイダーは、シングルユーザーモードでサーバーにアクセスできるKVMのようなインターフェイスを提供していなかったため、Aleksanderによって概説された方法と非常によく似た方法を使用しました(この回答には、 LVM固有のコマンドに追加)。

LVMで新しい/ varファイルシステムを作成します

新しいvarファイルシステム用の論理ボリュームを作成し、(一時ディレクトリを使用して)マウントし、現在の/varファイルシステムから新しいファイルシステムにファイルをコピーします。

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

実行中のプロセスはファイルを/var開いたままにして使用するため、ディレクトリツリーを新しいファイルシステムに単純に移動することはできません。ファイル属性と拡張属性(オプション)を保持しながら-r、現在の/varパーティションから新しいファイルシステムにファイルを再帰的に()コピーします-a, --archive。慎重なユーザーは、コピーする前に最初に現在のボリュームのLVMスナップショットを作成するかもしれませんが、この質問にはあまりにも詳細なトピックです。

sudo cp -ra /var/ /var.new/

また、ファイルがでコピーすることができrsync、そので、-a, --archiveタイムスタンプ、所有権、モード、などを保存するためのオプションとその-X, --xattrsようにAppArmorのとSELinuxで使用されるセキュリティラベルなどの拡張属性を保持するためのオプション:

sudo rsync -raX /var/ /var.new/

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

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

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

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

一時的なマウントポイントを削除

マシンが再起動すると、新しいファイルシステムがマウントされる/varため、一時的なマウントポイントを安全に削除できます。

sudo rmdir /var.new

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

古い/varファイルは引き続きルートパーティションのスペースを占有しますが、別のファイルシステムがマウントされ/varている間は簡単にアクセスできません(/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/

関係するオプションの説明。しかし、あなたが使用lvcreateしてmkfs.ext4いるか、その理由を使用しているかを説明せずに。答えの主要なトピックではないので、新しいパーティションを作成するためのものであることがわかります。
PhoneixS

@PhoneixSのフィードバックに感謝します。回答をより明確にするために編集し、追加のコンテキスト情報を提供しました。
アンソニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.