Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxのスワップパーティションとは?仕組み・必要性・最適なサイズまで徹底解説

Linuxをインストールする際、多くの場合「スワップパーティション」の作成が推奨されます。OS全体を1つのパーティションに収めることに慣れたWindowsユーザーにとって、この習慣は少し不思議に映るかもしれません。

そもそもスワップパーティションにはどんな役割があるのか、本当に必要なのか、サイズはどれくらいが適切なのか。これらの疑問への正しい答えを知っていれば、システムのパフォーマンスを大きく改善できます。

Linuxスワップパーティションの役割

Linuxのスワップパーティションとは?仕組み・必要性・最適なサイズまで徹底解説

スワップパーティションは、RAM(メインメモリ)があふれた際の「オーバーフロー領域」として機能します。RAMが完全に一杯になった場合、それ以降に起動したアプリケーションは、RAMではなくスワップパーティション上で動作することになります。

「これならRAMを増やさずに使えるメモリ量を増やせるのでは?」と思うかもしれませんが、そう簡単な話ではありません。RAMは極めて高速な理想的な記憶装置である一方、ハードディスクドライブ(HDD)は相対的にはるかに低速だからです。

SSD(ソリッドステートドライブ)は速度が大幅に向上したため、HDDほどの性能低下は気にならなくなりましたが、それでもRAMの速さには及びません。最新のNVMe SSDでも同様です。さらに言えば、SSDに余計な書き込み負荷をかけて寿命を縮めたくはないはずです。

スワップパーティションに近い存在として、Windowsのページファイルが挙げられます。ただし、両者には技術的に多くの違いがあります。

そして、Linuxのスワップパーティションは単なるオーバーフロー領域にとどまりません。PCをさまざまな形でサポートしてくれるのです。

優先順位付けによるメモリの効率化

スワップパーティションは、メモリ上の一部のデータをストレージへ退避させることで、より重要なプロセスのためにRAMに空き容量を確保する働きも持ちます。つまり、あまり使用されていないデータほどスワップへ移されるということです。

「どれくらい使われていないと『まれ』とみなすか」の基準となるのが、「swappiness(スワップネス)」という設定値です(実際にその名前が使われています)。値が高いほどデータはスワップへ移されやすくなり、低いほど移されにくくなります。

ハイバネーション(休止状態)

システムをハイバネーションにすると、メモリの内容はスワップパーティションに保存されます。つまり、スワップパーティションがないとLinuxではハイバネーションが利用できません。

ただし、近年はハイバネーションを使うユーザーがかなり少なくなっているため、この点は気にしなくてもよいかもしれません。

スワップパーティションは本当に必要?

Linuxのスワップパーティションとは?仕組み・必要性・最適なサイズまで徹底解説

では、スワップパーティションは必須なのでしょうか?答えは「いいえ」です。スワップパーティションがなくても、Linuxシステムは十分快適に動作します。ここまでメリットを見てきましたが、次は逆に「作らないほうがよいケース」を考えてみましょう。

スワップが逆効果になるケース

スワップパーティションにはデメリットもあります。使用していなくてもディスク容量を占有し続けますし、スワップを多用するとメインドライブの消耗が進みます。場合によっては、スワップがあってもパフォーマンスは改善せず、むしろ悪化することさえあります。

具体例を挙げましょう。RAM 2GB、5400rpmのHDDを搭載した古いネットブックにLinuxをインストールしたとします。2GBのメモリでは、ブラウザのタブをいくつか開くだけですぐに一杯になるでしょう。スワップがあれば、メモリがあふれても全タブを開いたままにできます。

しかし、ここでボトルネックが発生します。5400rpmという低速なHDDにシステムが絶えずアクセスしようとするため、ネットブックは極端に動作が重くなります。メモリを解放するためにすべてを閉じない限り、実用にならないほど遅くなってしまうのです。

さらに厄介なことに、swappinessの設定だけでは、RAMに空きができた時点でスワップ内のデータがすべて戻るとは限りません。多くのデータがスワップに残り続けて動作は重いまま。結局、再起動してまっさらな状態からやり直すことになりますが、シャットダウン前にスワップの内容をすべて書き戻す必要があるため、再起動にも時間がかかります。

スワップなしで起こること

スワップパーティションを設けないと決めた場合は、リスクも理解しておきましょう。必要なRAMが物理メモリの容量を超えた瞬間、画面がフリーズすることがあります。最悪の場合、強制的に電源を切るしかなく、作業中のデータをすべて失う危険があります。

そんなとき、「たとえ一度しか使わなくても、スワップがあってよかった」と思うかもしれません。これは、普段からメモリ不足に陥ることが多いかどうかによります。スワップ用に4GBを確保して空き容量が4GB減っても、気づかない程度なら問題ないでしょう。

Linuxスワップの推奨設定

ここからは、どのような場合にスワップパーティションを作成すべきか、サイズの目安を紹介します。

  • ハイバネーションを使いたい場合: スワップパーティションは必須です。サイズは搭載メモリと同容量に加え、すでにスワップへ移された分の余裕として10〜25%程度上乗せしましょう。
  • 少しでもパフォーマンスを上げたい場合(7200rpm以上のHDD搭載): 必要に応じてスワップを追加してもよいでしょう。サイズは自由ですが、ハイバネーション目的の場合より大きくする必要はありません。
  • 大容量メモリを必要とするアプリを時々使う場合: スワップは「保険」として安心感を与えてくれます。この場合、RAMと同じサイズまで大きくする必要はありません。
  • 5400rpmのHDDを使用している場合: ボトルネックでかえって動作が悪化する可能性があるため、スワップを作らない選択もありえます。どうしても必要な場合は、上記と同じ目安で作成し、swappinessの値をかなり低く設定してください。

swappinessの変更方法

Linuxのスワップパーティションとは?仕組み・必要性・最適なサイズまで徹底解説

Linuxデスクトップの多くの設定と同様に、swappinessの値もテキストファイルに保存されています。/proc/sys/vm ディレクトリ内にあるファイルを開いてください。

ファイルを開くと、現在のswappiness値が数字で1つ表示されます。root権限があれば、任意のテキストエディタで編集可能です。

UbuntuやFedoraに標準搭載されているGNOMEのテキストエディタで編集する場合は、次のコマンドを実行します。

sudo gedit /proc/sys/vm/swappiness

また、テキストエディタに依存しないコマンドラインの方法もあります。以下を入力するだけでOKです。

sudo sysctl vm.swappiness=20

値は0〜100の範囲で指定できます。この数値は、Linuxがいつメモリからスワップへの移動を積極的に開始するかを示しています。例えば20に設定すると、メモリ使用率が80%に達した時点でプロセスの移動が始まります。Ubuntuのデフォルト値60の場合は、メモリ使用率が40%に達した時点で移動が始まるということです。

変更が反映されたかどうかは、先ほどのテキストファイルを再度開けば確認できます。もちろん、ターミナルから確認するほうが手っ取り早いでしょう。次のコマンドを入力してください。

cat /proc/sys/vm/swappiness

あなたのPCは速くなった?

スワップパーティションは、システムのパフォーマンスに大きな影響を与えます。良い方向にも、悪い方向にもなり得るのです。スワップの役割を理解した今なら、自分の環境に合った適切な判断ができるはずです。

ただし、ドライブを再パーティショニングする前に覚えておいてほしいのは、メモリ管理で重要なのはRAMの容量やスワップのサイズだけではないという点です。LinuxがRAMをどのように管理しているのか、ぜひ一度学んでみてください。

  1. Bluetooth 5.1とは?知っておきたい新機能と活用法を徹底解説

    テクノロジーは私たちの生活のあらゆる場面に浸透しており、常に最新の技術動向を把握しておくことが重要です。スマートフォンから家電、ガジェットまで、テクノロジーは日々の暮らしに欠かせない存在となっています。その中でもBluetoothは、データ共有を手軽でストレスフリーにしてくれる便利な技術です。デバイス間でのデータ交換がかつてないほど簡単になりました。長いケーブルやコードはもう不要。デバイス同士をBluetoothでペアリングするだけで、すぐにデータのやり取りが完了します。 Bluetooth 5.1をご紹介 Bluetooth 5.1は最新バージョンのBluetoothで、驚きの機能が多数搭載

  2. Wi-Fi 6(802.11ax)とは?特徴・メリット・導入のポイントを徹底解説

    テクノロジーの世界では毎年のように新しい驚きが登場しますが、その中でも特に注目すべき存在が「Wi-Fi 6」です。Wi-Fi 6は次世代の無線通信規格で、正式名称は「802.11ax」。従来のWi-Fiに比べて通信速度と性能が大幅に向上しており、特に多くの機器が接続される混雑した環境でこそ真価を発揮します。スマートフォンやタブレット、PCなどデジタル機器が生活に深く浸透するほど、この新世代Wi-Fiの存在は大きな朗報となるでしょう。また、Wi-Fi 6では新しい命名規則が採用され、デバイス上に「Wi-Fi 5」「Wi-Fi 6」といったバージョン番号が表示されるようになりました。これにより、ど