/ var、/ homeを別のパーティションに移動する


59

私は(のようないくつかのフォルダに移動しようとしています/varとを/homeこのガイドを読んだ後、別のパーティションに):

3.2.1インテリジェントパーティションスキームの選択

このガイドに従って 1つのフォルダーを正常に移動できました。

ただし、複数のフォルダーでは機能しないようで、すべてのフォルダーが適切なフォルダーなしでパーティションにダンプされます。

私は、マウントしたい/var/home/tmp別のパーティションへ。誰かがこれについて私を導くことができますか?


ディレクトリごとに追加のパーティションを作成しましたか?
mreithub

@mreithub私はそれが理想的にはすべて同じパーティション内に保存され、フォルダによってのみ異なることを望んでいます。そうすれば、スペースについて心配する必要がなく、私にとってずっと簡単です。
toffee.beanns

1
/var別のパーティションに置くことはお勧めしません。それには何の利点もありません。OS全体を単一のパーティションに保持します(/)。内のユーザーデータ-唯一のOSではありませんもののために別々のパーティションを使用してください/home(あなたが大きなものを持っている場合)でのメールスプール、/var/mail例えばで、データベースの/var/lib/mysql/srv、...
ジル「悪さSO-ストップ」

7
「@Gilles それに何のメリットがありません」?????? (たぶん、もっと疑問符が必要です)。もちろん、それには利点があります。/はほとんど静的です。/ varはほぼ完全に動的です。/ varを別のパーティションにマウントする場合、ルートパーティションを読み取り専用でマウントできます。それがGood Thing™である状況はたくさんあります。
-Auspex

回答:


73

1.最初に、各マウントポイント(/ var、/ home、/ tmp)のパーティションを作成するための未割り当てスペースが必要です。これにはGpartedを使用します。

2.次に、それらのパーティションのファイルシステムを作成する必要があります(Gpartedでも実行できます)、または以下を使用します。

mkfs.ext4 /dev/sdaX

たとえば、/ dev / sdaXデバイスに新しいext4ファイルシステムを作成するには(/ dev / sdaXを自分のデバイスに置き換えてください)

3. / mntの下に新しいファイルシステムをマウントします

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4.プロセス中にディレクトリでrwアクティビティがないように、シングルユーザーモードに移動します。

init 1

5.ルートパスワードを入力します。

6. varのみのデータをバックアップします(/ varディレクトリ自体ではありません)

cd /var
cp -ax * /mnt/var

7.データが正常に転送されたら、/ varディレクトリの名前を変更します。

cd /
mv var var.old

8.新しいvarディレクトリを作成します

mkdir var

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

umount /dev/sdaX

10. / varとして再マウントします

mount /dev/sdaX /var

11. / etc / fstabファイルを編集して、新しいパーティションを含めます。/varがマウントポイントであるため、ブート時に自動的にマウントされます。

/dev/sdaX       /var     ext4    defaults    0 0

12. / homeおよび/ tmpに対して手順1〜11を繰り返します。

13.最後に、マルチタスクモードに戻ります。

init 5

ええ、gpartedの使用を考えていました。答えてくれてありがとう。私は実際にこれらのいくつかのフォルダーに30GBのスペースを確保することを計画しています/ home、/ tmp、/ var /、/ opt、/ usr / ?
toffee.beanns

1
lvmの使用を検討していましたが、gpartedよりも優れているでしょうか
toffee.beanns

LVMは完全に異なるトピックです。LVMは、物理ハードディスク上に論理ボリュームを作成するレイヤーとして使用されます。Gpartedは、LVM物理ボリュームを作成するための唯一のツールです。
cioby23

1
実際にcp -ax * /mnt/varは、隠しファイル/ディレクトリを無視するため、悪い考えです。好むcp -ax . /mnt/var。(@ cioby23、回答を更新する必要があると思います)
berbt

6
init 5回答に最終版を追加してください。
ロバートポラック

16

それらをすべて同じパーティションで使用する場合はLVM、1つまたは3つの単純なバインドマウントを使用できます。

バインドベースのソリューションを作成するには

  1. ファイルシステムでパーティションを作成します
  2. レスキューモードに移動します(単一のユーザーはまだいくつかのフォルダーを必要とします)
  3. としてマウント /mnt/data
  4. 移動するすべてのフォルダーを移動します。使用するcpmv dir dir.oldより安全かもしれないが、私はこれをしなかったので、後のことは私には関係しませんでしたインストール。

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. fstabに適切なバインドマウントエントリを作成します。たとえば、

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. リブート


そのmount(8)下のマニュアルページnodiratimeにはIf noatime option is set, this option is not needed.、とにかくそれを含めることで冗長性の利点がありますか?
brannerchinese

5

個人的には@Fabianのバインドマウントソリューションを使用するか、シンボリックリンクを使用します。

  1. /etc/fstab新しいパーティションのエントリを作成します(新しいパーティションblkidの正しいUUIDを取得するために使用し、忘れないでくださいmkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. mount -aまたは新しいパーティションをマウントするのに似たものを使用します

  3. 元のフォルダーを新しいパーティションに移動します。

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. シンボリックリンクを作成する

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

バインド・マウント方式は、おそらくベストプラクティスのソリューションですが、あなたが不必要に長いで終わるていないので、私は一種のこの1を好むdfmountパーティションのリスト。


1
マウントする前に/ varが必要な場合、それぞれのメソッドはどうなりますか?私はむしろ、バインド方法がよりきれいになると疑っていますが、私は本当に知りません。
-Auspex

@Auspexこの点に関して、2つの方法に違いはありません(/etc/fstab起動中にすべてのローカルパーティションが同時にマウントされるため)。/mnt/dataマウントされる前に、すべてのシンボリックリンクは「死んでいる」ので、それらの(および存在しないサブディレクトリでの)読み取り/書き込みの試みは失敗します(正しく覚えていればENOENTで)。バインドマウントを使用すると、ほぼ同じ結果が得られますが、プログラムは実際にルートパーティションに書き込む場合があります(存在しないディレクトリについて賢くしようとする場合)
-mreithub

1
まあ、それは厳密には真実ではありません。ルートが最初にマウントされます。Debianの「読み取り専用ルート」アドバイスは、プロセスがマウントされる前に/ varにアクセスする可能性について言及しているため、私は特に尋ねました。しかし、私の場合、Raspberry Piがあり、読み取り専用のファイルシステムを/に設定している(マシンに電源が入ったときにSDカードが破損し続けるため) 。ルートファイルシステムには何も書き込まれません。これはROであるため、どちらの場合もエラーになります。
オースペックス

0

cioby23を指定した手順に加えて、次のことも行わなければなりませんでした。

  restorecon -R /var

sshdを開始するため。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.