第12回 AlmaLinuxのswapを拡張する

AlmaLinuxのswapについて

前回、「第10回 Raspberry Pi用のAlmaLinuxをSSDにコピーする」では、bootパーティションを512MBで設定してみました。ところが、swapについては配布されているrawイメージのままでしたから100MBswapファイルが使用されています。このswapについても、AlmaLinuxの2023年6月15日より前のバージョンではファイルではなくパーティションとして100MBが使用されていたので、ちょっと不便だったのですがファイルになりましたので好みに合わせて変更することが容易になりました。

このswapは、AlmaLinuxのようなLinuxシステムで仮想記憶装置として働くもので、アプリケーションを実行していて物理的なメモリーが不足するようになった場合には、仮想的にメモリーの代替として利用される仕組みとなっています。

Raspberry Pi 4では、搭載しているメモリーも2GB、4GB、8GBと種類があり、最大で8GBを使用することができます。また、AlmaLinuxでは最初から64-bitのカーネルになっているために搭載している大きなメモリー空間を有効に利用することができます。そのため、以前のRaspberry Pi 3Bまでの頃のようにメモリーが不足することも少なくなってきているかとは思います。

それでも最近のようにアプリケーションが大きなメモリーを使用する場合に備えて、ここではswapを拡張する方法を見ていくことにします。

またswapについては、その仕組みとしてメモリーのページ単位でディスクなどの仮想記憶装置に読み書きするようになったことから従来使われていたswappingからpagingと呼ばれるようもになって来ています。

なお、Kubernetesを使う場合には、逆に前提条件として「swapを無効化」する必要がある点にも注意が必要です。

:Raspberry Pi OSの32-bit版の場合では、ポインターでアドレスできるメモリーは4GBまでで、1つのプロセスで使用できるメモリーはカーネルが1GB使うために3GBまでに制限されてしまいます。

swapの状態を確認

freeコマンドを実行して、メモリーの使用状況を見ることができます。

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       1.0Gi       6.0Gi        21Mi       786Mi       6.6Gi
Swap:           99Mi          0B        99Mi

オプションとして-hを使用することで、わかりやすい単位の表示としています。最初の行がMemで物理メモリーの様子を表示しています。ここでは、Raspberry Pi 4の8GBモデルで実行していますからメモリ合計が7.6GBとして表示されています。

次の行がSwapとしてswapの状態を表示しています。合計が99MBですが、まだ使われていない状態になっています。

次に、swaponコマンドを実行してみます。

$ swapon -s
Filename Type Size Used Priority
/swapfile                               file 102396 0 -2

ここで、swaponコマンドはswap領域としてのディスクパーティション、またはファイルを有効化したり無効化することのできるコマンドです。ここではオプションとして-sを使用して現在の使用状況を表示しています。

この表示を見てもわかるようにswapの実際の領域としては、/swapfileというファイルが使用されています。

AlmaLinuxの場合には、/etc/fstabでswapが設定されています。

$ cat /etc/fstab
UUID=0f355284-0ba7-4cd4-92d4-69025db053b0  / ext4    defaults,noatime 0 0
UUID=6E74-BA51  /boot vfat    defaults,noatime 0 0
/swapfile none swap defaults 0 0

上記の例のように、/etc/fstabswapを設定している行があります。

:Raspberry Pi OSの場合には、dphys-swapfileというサービスが実行されています。この場合には、/etc/fstabではなく/etc/dphys-swapfileという設定ファイルが使用されています。

swapの無効化

次のコマンドを実行して、swapを停止して無効化することができます。

$ systemctl status swapfile.swap

まず、状態がActive: activeとなっていることを確認します。

$ sudo systemctl stop swapfile.swap

swapを停止しています。

$ systemctl status swapfile.swap

停止後の状態を確認しています。状態が、Active: inactive (dead)となりました。

現在のswapを確認してみます。

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       640Mi       6.7Gi        15Mi       421Mi       7.0Gi
Swap:             0B          0B          0B

freeコマンドの実行でSwap0Bになりました。

$ swapon -s

swaponコマンドでは何も表示されなくなっています。

swap領域の拡張

それでは、swap領域を拡張していきます。ここでは例として/swapfileを4GB用意して設定していくことにします。

swapを停止している状態で、次のコマンドを実行します。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
$ sudo mkswap -L swap /swapfile

ddコマンドでゼロを1MBずつのブロックで4096回書き込むことで4GB/swapfileを作成しています。出来上がった/swapfileを、mkswapコマンドでswapとしての設定をしています。また、その際に-Lオプションでラベルをswapとして設定しています。

ここでは、元々あったフィルを拡張していますが、新しいファイルを作成する場合には、次のようなオーナーとパーミッションに設定するようにします。

$ ls -ld /swapfile
-rw-------. 1 root root 4294967296  8月 17 09:27 /swapfile

準備ができたら、停止していたswapを再開します。

$ sudo systemctl start swapfile.swap

再開後の状態を確認してみます。

$ systemctl status swapfile.swap

状態が、Actieve: activeとなりました。

拡張後のswapの状態を確認

再開後に、拡張したswapの状態を確認してみます。

まずfreeコマンドを実行します。

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       929Mi       6.3Gi        18Mi       557Mi       6.7Gi
Swap:          4.0Gi          0B       4.0Gi

Swap4GBで設定されています。

同様にswaponコマンドで確認してみます。

$ swapon -s
Filename Type Size Used Priority
/swapfile                               file 4194300 0 -2

Swap4GBに拡張されてることが確認できました。

恒久的なswapの無効化

AlmaLinuxの場合には、/etc/fstabでswapが設定されていますから、/etc/fstabにあるswapの行を削除するかコメントアウトしてから再起動することで恒久的に無効化することができます。

$ cat /etc/fstab
UUID=0f355284-0ba7-4cd4-92d4-69025db053b0  / ext4    defaults,noatime 0 0
UUID=6E74-BA51  /boot vfat    defaults,noatime 0 0
## /swapfile none swap defaults 0 0

Kubernetesを使用する場合のように、swapを無効化したい場合には、このようにする必要があります。

まとめ

最近では、使用できるメモリーが大きくなって来ていることもあり、swapに頼る頻度も少なくなりつつあるかとは思います。

その一方でアプリケーションが要求するメモリーが増大化しつつあることもあり、このようにswapを操作することが出来ることでRaspberry Piで動かすAlmaLinuxも応用する幅が広がってくるのではないでしょうか。

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次