このチュートリアルでは、Linuxでのスワップファイルの概念、それが使用される理由、および従来のスワップパーティションに対するその利点について説明します。スワップファイルを作成する方法やサイズを変更する方法を学びます。
Linuxのスワップファイルとは何ですか?
スワップファイルを使用すると、LinuxはディスクスペースをRAMとしてシミュレートできます。システムがRAMを使い果たし始めると、スワップスペースを使用して、RAMの一部のコンテンツをディスクスペースにスワップします。これにより、RAMが解放され、より重要なプロセスに対応できるようになります。 RAMが再び解放されると、ディスクからデータをスワップバックします。 Linuxでのスワップの詳細については、この記事を読むことをお勧めします。
従来、スワップスペースはディスク上の個別のパーティションとして使用されていました。 Linuxをインストールするときは、スワップ専用に別のパーティションを作成します。しかし、この傾向は近年変化しています。
スワップファイルを使用すると、別のパーティションはもう必要ありません。ルートの下にファイルを作成し、それをスワップスペースとして使用するようにシステムに指示します。
専用のスワップパーティションを使用すると、スワップスペースのサイズ変更は悪夢であり、多くの場合不可能な作業です。ただし、スワップファイルを使用すると、必要に応じてサイズを変更できます。
Ubuntuの最近のバージョンと他のいくつかのLinuxディストリビューションは、デフォルトでスワップファイルの使用を開始しました。スワップパーティションを作成しない場合でも、Ubuntuは独自に約1GBのスワップファイルを作成します。
スワップファイルについてもう少し見てみましょう。
Linuxのスワップスペースを確認する
スワップスペースの追加を開始する前に、システムでスワップスペースがすでに使用可能かどうかを確認することをお勧めします。
Linuxのfreeコマンドで確認できます。私の場合、DellXPSには14GBのスワップがあります。
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 14G 0B 14G
freeコマンドは、スワップスペースのサイズを示しますが、それが実際のスワップパーティションなのかスワップファイルなのかはわかりません。この点では、swaponコマンドの方が優れています。
swapon --show
NAME TYPE SIZE USED PRIO
/dev/nvme0n1p4 partition 14.9G 0B -2
ご覧のとおり、14.9 GBのスワップスペースがあり、別のパーティションにあります。スワップファイルの場合、タイプはパーティションではなくファイルになります。
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
システムにスワップスペースがない場合は、次のように表示されます。
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 0B 0B 0B
swaponコマンドは出力を表示しません。
Linuxでスワップファイルを作成する
システムにスワップスペースがない場合、またはスワップスペースが十分でないと思われる場合は、Linuxでスワップファイルを作成できます。複数のスワップファイルを作成することもできます。
Linuxでスワップファイルを作成する方法を見てみましょう。このチュートリアルではUbuntu18.04を使用していますが、他のLinuxディストリビューションでも機能するはずです。
ステップ1:新しいスワップファイルを作成する
まず最初に、必要なスワップスペースのサイズでファイルを作成します。システムに1GBのスワップスペースを追加したいとします。 fallocateコマンドを使用して、サイズ1GBのファイルを作成します。
sudo fallocate -l 1G /swapfile
ルートのみがスワップファイルの読み取りと書き込みを許可することをお勧めします。このファイルをスワップ領域に使用しようとすると、「安全でないアクセス許可0644、0600が推奨されます」などの警告が表示されることもあります。
sudo chmod 600 /swapfile
スワップファイルの名前は何でもかまいません。複数のスワップスペースが必要な場合は、swap_file_1、swap_file_2などの適切な名前を付けることができます。これは、事前定義されたサイズのファイルです。
ステップ2:新しいファイルをスワップスペースとしてマークする
このファイルがスワップスペースとして使用されることをLinuxシステムに通知する必要があります。 mkswapツールを使用してそれを行うことができます。
sudo mkswap /swapfile
次のような出力が表示されます:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a
ステップ3:スワップファイルを有効にする
これで、システムはファイルswapfileをスワップスペースとして使用できることを認識しました。しかし、それはまだ行われていません。システムがこのファイルをスワップとして使用できるようにするには、スワップファイルを有効にする必要があります。
sudo swapon /swapfile
スワップスペースを確認すると、Linuxシステムがそれをスワップエリアとして認識して使用していることがわかります。
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
ステップ4:変更を永続的にする
これまでに行ったことは一時的なものです。システムを再起動すると、すべての変更が消えます。
新しく作成したスワップファイルを/etc/ fstabファイルに追加することで、変更を永続的にすることができます。
/ etc/fstabファイルに変更を加える前にバックアップを作成することをお勧めします。
sudo cp /etc/fstab /etc/fstab.back
これで、/ etc/fstabファイルの最後に次の行を追加できます。
/swapfile none swap sw 0 0
コマンドラインテキストエディタを使用して手動で実行するか、次のコマンドを使用するだけです。
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
これで、すべてが整いました。 Linuxシステムを再起動した後でも、スワップファイルは使用されます。
swappinessを調整する
swappinessパラメーターは、スワップスペースを使用する頻度を決定します。 swappinessの値の範囲は0〜100です。値が大きいほど、スワップスペースがより頻繁に使用されることを意味します。
Ubuntuデスクトップのデフォルトのswappinessは60ですが、サーバーでは1です。次のコマンドでswappinessを確認できます。
cat /proc/sys/vm/swappiness
サーバーが低いswappinessを使用する必要があるのはなぜですか?スワップはRAMよりも低速であり、パフォーマンスを向上させるために、RAMを可能な限り使用する必要があります。サーバーでは、パフォーマンスファクターが重要であるため、スワップピンネスは可能な限り低くなります。
次のsystemdコマンドを使用して、swappinessをオンザフライで変更できます。
sudo sysctl vm.swappiness=25
ただし、これは一時的な変更にすぎません。永続的にしたい場合は、/ etc / sysctl.confファイルを編集して、ファイルの最後にswappiness値を追加できます。
vm.swappiness=25
Linuxでのスワップスペースのサイズ変更
Linuxでスワップスペースのサイズを変更する方法はいくつかあります。しかし、それを見る前に、その周りのいくつかのことを学ぶ必要があります。
スワップ領域のスワップファイルの使用を停止するようにシステムに要求すると、すべてのデータ(正確にはページ)がRAMに転送されます。したがって、スワップオフする前に十分な空きRAMが必要です。
これが、別の一時スワップファイルを作成して有効にすることをお勧めする理由です。このように、元のスワップ領域をスワップオフすると、システムは一時スワップファイルを使用します。これで、元のスワップスペースのサイズを変更できます。一時スワップファイルを手動で削除するか、そのままにしておくと、次回の起動時に自動的に削除されます。
十分な空きRAMがある場合、または一時的なスワップスペースを作成した場合は、元のファイルをスワップオフします。
sudo swapoff /swapfile
これで、fallocateコマンドを使用してファイルのサイズを変更できます。たとえば、サイズを2GBに変更するとします。
sudo fallocate -l 2G /swapfile
次に、ファイルをスワップスペースとして再度マークします。
sudo mkswap /swapfile
そして、スワップを再度オンにします:
sudo swapon /swapfile
同時に複数のスワップファイルを使用することもできます。
Linuxでのスワップファイルの削除
Linuxでスワップファイルを使用しない理由があるかもしれません。削除する場合、プロセスはスワップのサイズ変更で見たものと同様です。
まず、十分な空きRAMがあることを確認します。次に、ファイルをスワップオフします:
sudo swapoff /swapfile
次のステップは、/ etc/fstabファイルからそれぞれのエントリを削除することです。
そして最後に、ファイルを削除してスペースを解放することができます:
sudo rm /swapfile
交換しますか?
これで、Linuxでのスワップファイルの概念を十分に理解できたと思います。必要に応じて、スワップファイルを簡単に作成したり、サイズを変更したりできるようになりました。
このトピックについて何か追加することがある場合、または疑問がある場合は、以下にコメントを残してください。