GNU/Linux >> Linux の 問題 >  >> Linux

btrfs を使用して ssd ディスクにスワップファイルを作成する方法

2019 年のステータス

Btrfs と Linux カーネルの開発により、私の最初の回答は時代遅れになりました .この他の回答をご覧ください。

2016 年の元の回答

btrfs FAQ から:

btrfs はスワップ ファイルをサポートしていますか?現在のところサポートしていません。ファイルを NOCOW にするだけでは役に立ちません。スワップ ファイルのサポートは、潜在的な破損のために btrfs が意図的に実装しない 1 つの機能に依存しています。 (...) 回避策としては、パフォーマンスは劣りますが、ループ デバイスを介してスワップ ファイルをマウントすることです。

そのため、btrfs パーティションにスワップファイルを作成する良い方法はまだありません。


前述のように、Linux 5.0 以降 BTRFS でスワップ ファイルを作成できるようになりました。ただし、圧縮されておらず、NoCOW である必要があります。このようなファイルを実際に作成する方法は次のとおりです:

<オール>
  • 空のファイルを作成します:touch /swap
  • chattr を使用 NoCOW を設定する 属性:chattr +C /swap
  • C であることを確認してください 属性の出現:lsattr /swap
  • 入力してください:dd if=/dev/zero of=/swap bs=1M count=1024 # 1 ギガバイト
  • mkswap /swap && chmod 600 /swap && swapon /swap
  • または、ディレクトリを作成して chattr +C を設定することもできます そのディレクトリに移動し、その下にスワップファイルを作成します。

    chattr +C はできないことに注意してください 既存の空でないファイルに。これは未定義の動作であると文書化されています (実際には属性を変更しないだけです)。したがって、空のファイルを作成してから chattr を作成する必要があります 、または chattr でディレクトリを作成します その中にファイルを作成します(この場合、chattr の後に作成されたすべてのファイル ディレクトリに nocow 属性が含まれます)。

    注意: 前述のとおり、これにはカーネル バージョン 5.0 以降が必要です。たとえば、Raspberry Pi は 4.19.* カーネルを使用するため、この手法を使用することはできません。


    コミットで確認できるように、カーネル バージョン 5.0 にスワップ ファイルのサポートが追加されました。ファイルが btrfs にある場合、ファイルは 1 つのデバイスで圧縮なしで NOCOW として完全に割り当てられる必要があります。


    Linux
    1. Btrfsでデータをコピーせずにファイルを複製するにはどうすればよいですか?

    2. Disk / hddに永続的な変更を加えたUSBドライブでライブシステムを作成するにはどうすればよいですか?

    3. Btrfs ファイル システムを作成してマウントする方法 (例で説明)

    1. Linuxでスワップを作成する方法

    2. BTRFS ファイル システムを作成してクエリを実行する方法

    3. Linuxで特定のサイズのファイルを作成するには?

    1. Linuxでスワップファイルを作成する方法

    2. Linux でファイル圧縮を使用して ZFS ファイルシステムを作成する方法

    3. ddを使用してFFでファイルをパディングする方法は?