以前、「Ubuntu で一時的にスワップをオフにする」で、モバイルPC"VersaPro(VY12M/C-3)"のスワップ領域をUSBメモリに退避させました。
3週間程度使ってみたところ、スワップ領域の消費は最大1.5GB程度で推移しています。
USBメモリでもHDDと比較して効果が実感できたため、SDカード上に移動することにしました。
モバイルPCという性格上、でっぱり部分はできるだけ無くしたいので。
目次
SDカード上にスワップ領域を作成
今回は、Class 4のmicroSDカードを利用しました。
※クラスなどの詳細については「SD規格の簡単まとめ」をご参照ください
ディスクのデバイス名を確認します。
partedコマンドを使います。
$ sudo parted
GNU Parted 3.2
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print list
モデル: ATA TOSHIBA MK8032GS (scsi)
ディスク /dev/sda: 80.0GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
モデル: BUFFALO USB Flash Disk (scsi)
ディスク /dev/sdb: 1007MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 1007MB 1006MB primary linux-swap(v1)
モデル: BUFFALO USB Flash Disk (scsi)
ディスク /dev/sdc: 1007MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 1007MB 1006MB primary linux-swap(v1)
モデル: ATA Hitachi XXM2.1.0 (scsi)
ディスク /dev/sdd: 32.0MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 31.5MB 30.4MB primary fat16 lba
モデル: Generic- Multi-Card (scsi)
ディスク /dev/sde: 7948MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 7948MB 7947MB primary linux-swap(v1)
(parted) quit
上記コマンド[parted]-[print list]で、対象のmicroSDが「/dev/sde」だと分かったので、データ領域とスワップ領域に分割します。
SDカード上にスワップ領域を作成
予定通り、2GBのスワップ領域を作成します。
※全体の容量8GBを2GBと6GBに分割します
partedコマンド簡易説明
n : 領域確保
p : 基本パーティションに指定 ・ e : 論理パーティションに指定
w : 書き込み(変更を適用)
$ sudo fdisk /dev/sde
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
コマンド (m でヘルプ): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
パーティション番号 (1-4, default 1):
First sector (2048-15523839, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-15523839, default 15523839): 3880440
Created a new partition 1 of type 'Linux' and of size 1.9 GiB.
コマンド (m でヘルプ): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
パーティション番号 (2-4, default 2):
First sector (3880441-15523839, default 3880960):
Last sector, +sectors or +size{K,M,G,T,P} (3880960-15523839, default 15523839):
Created a new partition 2 of type 'Linux' and of size 5.6 GiB.
コマンド (m でヘルプ): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
スワップ領域を定義する
上記処理では領域が分割されただけで、ファイルシステムの定義やフォーマットが完了していません。
今回は、GUIアプリケーションのGparted上で"linux swap"で作成しました。
なお、6GBはWindows・Android端末でも使うので、FAT32でフォーマットしました。
起動時に有効になるように設定する
UUIDに対応するパーティションを確認する
blkidコマンドで、スワップパーティションのUUIDを確認します。
$ sudo blkid
[sudo] link のパスワード:
/dev/sda1: UUID="e08a850b-13b9-43f5-a379-a9ad3608cfea" TYPE="ext4" PARTUUID="bef9c299-01"
/dev/sda5: UUID="62475fb4-027c-4623-930d-f9a0b65bd0ce" TYPE="swap" PARTUUID="bef9c299-05"
/dev/mmcblk0p1: UUID="c9bfe5b8-1836-4711-938a-3f7eaa335f24" TYPE="swap" PARTUUID="a1086e1c-01"
/dev/mmcblk0p2: LABEL="mSDc4_8(6)G" UUID="D291-B29C" TYPE="vfat" PARTUUID="a1086e1c-02"
/dev/mmcblk0: PTUUID="a1086e1c" PTTYPE="dos"
TYPE="swap"の行がスワップパーティションです。
※UUID="c9bfe5b8-1836-4711-938a-3f7eaa335f24"
fstabを編集する
変更前にバックアップを取得
ベタですが、コピーします。
$ sudo cp /etc/fstab /etc/fstab_org20180309
fstabを編集
ディスクパーティションやブロックデバイス、リモートディレクトリなどを起動時に自動マウントする"fstab"を編集します。
編集例
SDカード上のスワップ領域の有効かに併せて、元々あるHDDスワップ領域"/dev/sda5"も無効化します。
$ diff /etc/fstab_org20180309 /etc/fstab
11c11,13
< UUID=62475fb4-027c-4623-930d-f9a0b65bd0ce none swap sw 0 0
---
> #UUID=62475fb4-027c-4623-930d-f9a0b65bd0ce none swap sw 0 0
> # swap was on /dev/sde during installation
> UUID=c9bfe5b8-1836-4711-938a-3f7eaa335f24 none swap sw 0 0
$ diff -u /etc/fstab_org20180309 /etc/fstab
--- /etc/fstab_org20180309 2018-03-09 20:35:54.127127831 +0900
+++ /etc/fstab 2018-03-09 20:38:08.018826290 +0900
@@ -8,4 +8,6 @@
# / was on /dev/sda1 during installation
UUID=e08a850b-13b9-43f5-a379-a9ad3608cfea / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
-UUID=62475fb4-027c-4623-930d-f9a0b65bd0ce none swap sw 0 0
+#UUID=62475fb4-027c-4623-930d-f9a0b65bd0ce none swap sw 0 0
+# swap was on /dev/sde during installation
+UUID=c9bfe5b8-1836-4711-938a-3f7eaa335f24 none swap sw 0 0
fstab記述について
1列目:デバイス名・スワップファイル名
2列目:マウントポイント(スワップにはマウントポイントが無い)
3列目:ファイルシステム
4列目:マウント時のオプション
5列目:dumpの有無(0:不要)
6列目:fsckチェックの有無(0:無し)
※diffコマンドについては、過去記事「diff コマンド」をご参照ください
おまけ
手動の場合
自動マウントではなく手動でマウントする場合、シェルを用意しておいた方が楽です。
スワップの有効化
$ cat swapon.sh
swapon /dev/mmcblk0p1
$ ls -lh swapon.sh
-rw-rw-r-- 1 link link 16 3月 9 20:43 swapon.sh
$ sudo chmod 0755 swapon.sh
$ sudo sh swapon.sh
※実行権限が必要です
スワップの無効化(開放)
$ cat swapoff.sh
swapoff /dev/mmcblk0p1
$ ls -lh swapoff.sh
-rw-rw-r-- 1 link link 24 3月 9 20:47 swapoff.sh
$ chmod 0755 swapoff.sh
$ sudo sh swapoff.sh
※実行権限が必要です