目的
Oracle Linux 6.5 のスワップ領域を拡張します。その際、理解しておくべき周辺知識もまとめました。
CentOS 7.0 でも確認しましたが、ほぼ同様の手順・内容でした。
インストールはほぼデフォルトで行いました(パーティションのカスタマイズ無し)。
エントリ中の引用元及びリンク先も参考になりますので、ぜひご参照ください。
LVM (logical volume manager)
概要
LVM(logical volume manager)とは,複数のハード・ディスクやパーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能。LinuxをはじめとしたUNIX系OS上で利用できる。
LVM | 日経 xTECH(クロステック)
引用先の図を見ていただけると、イメージしやすいかと思います。
対象システムを以下の観点で確認します。
・ハードディスク
・物理ボリューム(PV)
・ボリューム・グループ(VG)
・論理ボリューム(LV)
・論理ボリュームのマウント
ハードディスク
第 1 SCSI ディスク (SCSI ID アドレスによる) は /dev/sda と名付けられる。
各ディスクのパーティションは、ディスク名に十進数を付け加えることで表します。例えば sda1 と sda2 は、それぞれシステムの第 1 SCSI ディスクドライブの第 1、第 2 パーティションを表します。
C.4. Linux におけるデバイス名
(抜粋して引用)
[root@node1 /]# fdisk -l ディスク /dev/sda: 17.2 GB, 17179869184 バイト ヘッド 255, セクタ 63, シリンダ 2088 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00023de7 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 64 512000 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 64 2089 16264192 8e Linux LVM ディスク /dev/mapper/vg_node1-lv_root: 14.9 GB, 14935916544 バイト ヘッド 255, セクタ 63, シリンダ 1815 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/vg_node1-lv_swap: 1715 MB, 1715470336 バイト ヘッド 255, セクタ 63, シリンダ 208 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000
ディスク"/dev/sda"があります。命名法より、SCSIディスクが1台認識されているとわかります。
ディスク"/dev/sda"はパーティションが分割されており、"/dev/sda1"、"/dev/sda2"となっています。"/dev/sda2"をLVMで管理しています。
"/dev/mapper/*"はdevice-mapperのシンボリックリンクです(詳細は後述)。物理的なディスクではありません。
物理ボリューム(PV)
[root@node1 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name vg_node1 PV Size 15.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 3970 Free PE 0 Allocated PE 3970 PV UUID Qtlekc-lawA-jUM3-R7Zj-A56o-ZlO3-NOEr97
物理ボリューム"/dev/sda2"があります。
物理ボリューム"/dev/sda2"はボリューム・グループ"vg_node1"に含まれます。
ボリューム・グループ(VG)
[root@node1 ~]# vgdisplay --- Volume group --- VG Name vg_node1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 15.51 GiB PE Size 4.00 MiB Total PE 3970 Alloc PE / Size 3970 / 15.51 GiB Free PE / Size 0 / 0 VG UUID QBpWWJ-bhdh-E9Xp-Xhh7-ni0U-frtx-9cgtBn
ボリューム・グループ"vg_node1"があります。
"Free PE / Size"からボリューム・グループに空きがないことがわかります。
論理ボリューム(LV)
[root@node1 ~]# lvdisplay --- Logical volume --- LV Path /dev/vg_node1/lv_root LV Name lv_root VG Name vg_node1 LV UUID adNNG4-xDa7-K70g-Xz0I-pv5q-gKL6-W8nph1 LV Write Access read/write LV Creation host, time node1.oracle12c.jp, 2014-08-09 10:09:13 +0900 LV Status available # open 1 LV Size 13.91 GiB Current LE 3561 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/vg_node1/lv_swap LV Name lv_swap VG Name vg_node1 LV UUID X99LXu-lbzL-8eDN-5cDk-RWlt-zaMP-iNt3ro LV Write Access read/write LV Creation host, time node1.oracle12c.jp, 2014-08-09 10:09:15 +0900 LV Status available # open 2 LV Size 1.60 GiB Current LE 409 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1
論理ボリューム "lv_root", "lv_swap" があります。
共にボリューム・グループ"vg_node1"に含まれます。
※ CentOS 7.0の場合は "LV Name" が "root", "swap" でした。
論理ボリュームのマウント
[root@node1 /]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sat Aug 9 10:11:10 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/vg_node1-lv_root / ext4 defaults 1 1 UUID=8a00f86c-e555-47b7-a0e6-aafe2cb1f978 /boot ext4 defaults 1 2 /dev/mapper/vg_node1-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
/dev/mapper/{ボリュームグループ名}-{論理ボリューム名}
となっています。
LVM構成のまとめ
対象システムのLVM構成をまとめると、以下のようになります。
device-mapper
概要
http://lc.linux.or.jp/lc2009/slide/T-02-slide.pdf
- device-mapper は、2.6 カーネルから取り込まれた Linux のブロックデバイスドライバおよびそれをサポートするライブラリ群 ("dm", "DM" と略される)
- ブロックデバイスの共通部分にプラグインし、ブロックの読み書き要求に対して様々な変換を加えることができる
DMデバイス一覧
[root@node1 dm]# dmsetup ls vg_node1-lv_swap (252:1) vg_node1-lv_root (252:0)
lvdisplayの"Block device"と付き合わせることで、以下の対応が得られます。
マップ名 | ボリュームグループ名 | 論理ボリューム名 |
---|---|---|
vg_node1-lv_root | vg_node1 | lv_root |
vg_node1-lv_swap | vg_node1 | lv_swap |
シンボリックリンク
http://lc.linux.or.jp/lc2009/slide/T-02-slide.pdf
- /dev/mapper/<マップ名> を使うことが推奨される
- /dev/dm-<番号> はカーネル内でのブロックデバイス共通の名前管理のための便宜的なもの。マップを作成する順番により変動するので、通常使うべきではない。
- sysfs 上では dm-<番号> を参照せざるを得ないが、/sys/block/dm-<番号>/dm/name に <マップ名> が格納されている
- DMアプリケーションによって他の名前(通常 /dev/mapper/.. へのシンボリックリンク)が用意されることもある
- multipath: /dev/mpath/<デバイス名>
- LVM2: /dev/<ボリュームグループ名>/<ボリューム名>
対象システムでは以下のようなシンボリックリンクが設定されていました。
/dev/vg_node1/lv_root -> /dev/dm-0
/dev/vg_node1/lv_swap -> /dev/dm-1
/dev/mapper/vg_node1-lv_root -> /dev/dm-0
/dev/mapper/vg_node1-lv_swap -> /dev/dm-1
※ CentOS 7.0 の場合はdm-<番号>が逆になっていました。
スワップ設定
現状のスワップ設定の確認
[root@node1 ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1675260 0 -1
対象システムにおいて、"/dev/dm-1"は"vg_node1-lv_swap"のことです。
スワップ設定変更の検討
仮にスワップ領域を400MB拡張したいとします。
ボリューム・グループ"vg_node1"に空きはありません。そのため、このままではスワップ領域を拡張することは出来ません。
ボリューム・グループの空き領域を広げるためにはルートディレクトリ領域を狭めなければいけません。ルートディレクトリのサイズ拡縮を行うにはルートディレクトリのアンマウントが必要ですが、システム稼働中にはできません。
そこで、スワップ領域の調整ではなく、スワップファイルを追加することでスワップサイズを拡大することにします。
スワップ設定の変更
スワップ領域の作成及び利用の手順は以下を参照ください。
資料:linux スワップ(swap)領域の作成
例)スワップ領域を400MB拡張する。
[root@node1 ~]# dd if=/dev/zero of=/swapfile bs=1M count=400 400+0 records in 400+0 records out 419430400 bytes (419 MB) copied, 0.893626 s, 469 MB/s [root@node1 ~]# chmod 600 /swapfile [root@node1 ~]# mkswap /swapfile mkswap: /swapfile: warning: don't erase bootbits sectors on whole disk. Use -f to force. スワップ空間バージョン1を設定します、サイズ = 409596 KiB ラベルはありません, UUID=99e867ba-a594-4c68-bbdb-9026a55382a5 [root@node1 ~]# swapon /swapfile [root@node1 ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1675260 0 -1 /swapfile file 409596 0 -2 [root@node1 ~]# vi /etc/fstab 以下を追記 /swapfile swap swap defaults 0 0