본문 바로가기

Learning/ └Essential & Admin

Linux_ServerAdmin (7)SWAP관리

 

Linux_ServerAdmin (7)SWAP관리

 

 

 

 

 

 

 

SWAP이란?

 

SWAP? 디스크내에 존재하는 가상적인 메모리 공간, 물리적인 메모리(RAM) 연장 공간처럼 쓰이는 공간

 

스왑(SWAP)은 메모리 내의 데이터 페이지 또는 세그먼트를 교체하는 것이다. 스왑핑은 컴퓨터가 주기억장치보다 더

큰 프로그램이나 데이터 파일을 다룰 수 있게 하는 유용한 테크닉이다. 운영체계는 주기억장치 내에 가능한 한 많

은 데이터를 복사해 넣고, 나머지는 디스크 상에 남겨둔다. 운영체계가 디스크에 있는 데이터를 필요로할 때, 주기

억장치 내의 데이터 일부를 디스크 상의 데이터와 교체한다. DOS는 스왑핑을 수행하지 않지만, OS/2, 윈도우, 유닉

스 등을 포함한 많은 운영체계들이 스왑핑을 수행한다. 스왑핑은 때로, 페이징이라고 불리기도 한다.

 

 

 

SWAP 관리 ( 추가/삭제 )

 

 

SWAP 추가 방법

- SWAP File(EX: /swap/swapfile)

() 큰 파일 생성

# dd if=/dev/zero of=/swap/swapfile bs=1M count=10240

() 스왑 파일시스템 생성(swapfs)

# mkswap /swap/swapfile

() 스왑 Activate(swap on)

# swapon /swap/swapfile

() /etc/fstab 파일 설정

# vi /etc/fstab

- SWAP Partition(EX: /dev/sdb1)

() 파티션 준비

# fdisk /dev/sdb (System Partition ID : 82)

() 스왑 파일시스템 생성(swapfs)

# mkswap /dev/sdb1

() 스왑 ON(swap on)

# swapon /dev/sdb1

() /etc/fstab 파일 설정

# vi /etc/fstab

 

 

 

(1) 스왑 확인 방법

 

 

현재 스왑 공간(스왑 공간, 스왑 전체크기, 스왑사용량)을 확인하는 방법은

() free 명령어를 사용하는 방법이나

() top 명령어를 통해 확인하는 방법

() /proc/swaps 파일을 확인하는 방법

() /proc/meminfo 파일을 확인하는 방법

등이 있다.

 

스왑을 추가하고 확인하거나 스왑을 삭제하고 확인할 때는 /proc/swaps 또는 free 명령어를 사용하는 방법이 적

당하다. 스왑 사용량을 모니터링 할 때는 top 명령어를 사용하는 것이 좋다.

 

[EX] 스왑 공간/스왑 용량/스왑 사용량 확인

 

# cat /proc/swaps (# swapon -s)

# free

# top -n 1 | head -20

 

 

# cat /proc/meminfo

 

MemTotal: 1023864 kB

MemFree: 212184 kB

Buffers: 69160 kB

Cached: 453584 kB

SwapCached: 0 kB

Active: 306904 kB

Inactive: 383868 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 1023864 kB

LowFree: 212184 kB

SwapTotal: 1052248 kB <----- 전체 스왑량

SwapFree: 1052248 kB <----- 남은 스왑량

Dirty: 44 kB

Writeback: 0 kB

AnonPages: 168020 kB

Mapped: 56132 kB

Slab: 75588 kB

PageTables: 22208 kB

NFS_Unstable: 0 kB

Bounce: 0 kB

CommitLimit: 1564180 kB

Committed_AS: 497300 kB

VmallocTotal: 34359738367 kB

VmallocUsed: 263560 kB

VmallocChunk: 34359474419 kB

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

Hugepagesize: 2048 kB

 

 

[참고] 스왑의 우선순위(Priority)

# cat /proc/swaps (# swapon -s)

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

 

# man swapon

-p 우선권

swapon 에서 사용될 우선권을 설정한다. 이 옵션은 swapon 이 커 널

1.3.2 와 그 이후 버전에서 컴파일된 경우에만 가능하다. priority

0 ~ 32767 사이의 값이다. 스왑 우선권에 대한 자세한 내 용 은

swapon(2) 을 참고하라. pri=value 이라는 항목을 /etc/fstab 의 옵

션 필드에 써넣으면 swapon -a 할 때 이용된다.

 

# man 2 swapon

PRIORITY

각각의 스왑 영역은 높던 낮던 우선권을 가지고 있다. 디폴트는 낮음이다.

낮은 우선권 영역에서새 영역은 이전 영역보다 낮은 우선권을 갖는다.

 

swapflags 으로 설정된 모든 우선권은 상위 우선권이다. 그들은 호출자에 의

해 골라진 음수가 아닌 값을 갖는다. 높은 번호는 높은 우선권을 말한다.

 

스 왑 페이지는 우선권 순서대로 영역으로부터 할당된다, 제일 높은 우선권이

처음. 서로 다른 우선권을 가지고 있기 때문에, 낮은 우선권 영역을 쓰기 전

에 높은 우선권 영역은 고갈된다. 두개 이상의 영역이 같은 우선권을 가지고

있고, 제일 높은 우선권이 가능하다면, 페이지는 그들 사 이 의 round-robin

basis에 할당된다.

 

 

 

 

(2) 스왑(SWAP) 추가 방법

 

스왑은 파일 형태와 파티션 형태로 추가가 가능하며, 스왑을 현재 추가 할때는 mkswap, swapon 명령어를 사용하고

부팅시에 스왑을 마운트 할 수 있도록 하기 위해서는 /etc/fstab 파일을 사용한다. 스왑 관리에 관련된 명령어는

dd, mkswap, swapon, swapoff, rm 명령어등이 있다.

 

SWAP 추가 방법

- SWAP File(EX: /swap/swapfile)

# dd if=/dev/zero of=/swap/swapfile bs=1M count=10240

# mkswap /swap/swapfile

# swapon /swap/swapfile

# vi /etc/fstab

 

- SWAP Partition(EX: /dev/sdb1)

# fdisk /dev/sdb (System ID : 82)

# mkswap /dev/sdb1

# swapon /dev/sdb1

# vi /etc/fstab

 

 

[EX] 스왑 파일 추가 실습

 

스왑 공간 확인

# free

total used free shared buffers cached

Mem: 1023864 813064 210800 0 69428 453800

-/+ buffers/cache: 289836 734028

Swap: 1052248 0 1052248

 

 

# cat /proc/swaps (# swapon -s)

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

 

 

스왑 파일 생성

# mkdir /swap

# dd if=/dev/zero of=/swap/swapfile bs=1024 count=102400

102400+0 records in

102400+0 records out

104857600 bytes (105 MB) copied, 0.714035 seconds, 147 MB/s

-> (if: input file, of: output file, bs: block size, count: block count)

-> dd명령을 이용해서 swapfile이라는 스왑 파일을 만든다.

-> /dev/zero 포맷으로 /swapdir/swapfile 파일에 대해서 블럭 사이즈는 1024bytes(=sector) 단위로 102400(100M)

개 만큼 채운다.

 

 

스왑 영역 지정 및 스왑 활성화(SWAP ON)

# mkswap /swap/swapfile

Setting up swapspace version 1, size = 104853 kB

 

[참고] 스왑 파일의 위치는 절대경로/상대경로 모두 지정이 가능

# mkswap /swap/swapfile

or

# cd /swap

# mkswap swapfile

 

# swapon /swap/swapfile

#

 

# cat /proc/swaps (# swapon -s)

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

/swap/swapfile file 102392 0 -4

 

# free

total used free shared buffers cached

Mem: 1023864 918564 105300 0 69652 556324

-/+ buffers/cache: 292588 731276

Swap: 1154640 0 1154640

 

/etc/fstab 파일에 등록

# vi /etc/fstab

..... (중략) .....

LABEL=SWAP-sda2 swap swap defaults 0 0

..... (중략) .....

#

# SWAP Configuration

#

/swap/swapfile swap swap defaults 0 0 <----- 마지막 라인에 추가

-> 부팅시에 swap이 추가 될수 있도록 /etc/fstab 파일의 마지막 라인에 추가한다.

 

 

 

(3) 스왑 삭제 방법

 

 

SWAP 추가 방법

- SWAP File(EX: /swap/swapfile)

# dd if=/dev/zero of=/swap/swapfile bs=1M count=10240

# mkswap /swap/swapfile

# swapon /swap/swapfile

# vi /etc/fstab

 

# swapoff /swap/swapfile

# vi /etc/fstab

- SWAP Partition(EX: /dev/sdb1)

# fdisk /dev/sdb (System ID : 82)

# mkswap /dev/sdb1

# swapon /dev/sdb1

# vi /etc/fstab

 

# swapoff /dev/sdb1

# vi /etc/fstab

 

[EX] 스왑 파일 삭제

 

스왑 비활성화 및 확인(SWAP OFF)

# cat /proc/swaps

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

/swap/swapfile file 102392 0 -2

 

# swapoff /swap/swapfile

# cat /proc/swaps (# swapon -s)

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

 

# free (# free -m : MegaBytes)

total used free shared buffers cached

Mem: 1023864 919108 104756 0 70000 556356

-/+ buffers/cache: 292752 731112

Swap: 1052248 0 1052248

 

 

 

스왑 파일 삭제

# ls -lh /swap

-rw-r--r-- 1 root root 100M 86 13:52 swapfile

 

# rm /swap/swapfile

#

-> /swap/swapfileSWAP ON 되었을때 자동으로 삭제되는 파일이 아니다. 따라서 별도로 삭제 해 줘야 한다.

-> 스왑으로 사용되고 있던 파일이 SWAP OFF 되면 스왑파일(: /swap/swapfile)로 사용되던 파일은 불 필요한 파

일이 된다.

 

 

 

 

스왑 파티션 추가 (/dev/sdb1)

 

 

(전제조건)

/dev/sdb 디스크가 사용중이면 안된다.

# df -h

-> /dev/sdb1(/testmount)

 

/dev/sdb 디스크의 system partition id 변경(83 -> 82)

# fdisk -l /dev/sdb

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

 

# fdisk /dev/sdb

-> /dev/sdb1(System Partition ID : 82)

 

 

 

swapfs 생성

# mkswap /dev/sdb1

Setting up swapspace version 1, size = 1069248 kB

 

SWAP 활성화 및 확인

# swapon /dev/sdb1

# cat /proc/swaps

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

/dev/sdb1 partition 1044184 0 -3

 

# free

total used free shared buffers cached

Mem: 3115336 539752 2575584 0 78596 329252

-/+ buffers/cache: 131904 2983432

Swap: 2096432 0 2096432

 

 

부팅시의 설정

# vi /etc/fstab

..... (중략) .....

#

# SWAP Configuration

#

/swap/swapfile swap swap defaults 0 0

/dev/sdb1 swap swap defaults 0 0

 

 

 

swap 삭제

# cat /proc/swaps

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

/dev/sdb1 partition 1044184 0 -3

 

# swapoff /dev/sdb1

# cat /proc/swaps

Filename Type Size Used Priority

/dev/sda2 partition 1052248 0 -1

 

# free

total used free shared buffers cached

Mem: 3115336 485912 2629424 0 32852 328492

-/+ buffers/cache: 124568 2990768

Swap: 1052248 0 1052248

 

 

# vi /etc/fstab

..... (중략) .....

#

# SWAP Configuration

#

#/swap/swapfile swap swap defaults 0 0

#/dev/sdb1 swap swap defaults 0 0

 

# fdisk /dev/sdb

/dev/sdb1(System Partition ID :83)

# mkfs.ext3 /dev/sdb1

 

 

 

 

[참고] SWAP 추가하는 경우

 

 

MEM 사용량 80% 이상 -> SWAP 공간 추가(File or Partition) -> 결정(EX: /swap/swapfile)

 

 

(정리) SWAP File 추가하는 방법

() 큰 파일 생성

# mkdir /swap

# dd if=/dev/zero of=/swap/swapfile bs=1024 count=102400

() swapfs 파일시스템 생성

# mkswap /swap/swapfile

() SWAP ON

# swapon /swap/swapfile

() /etc/fstab 편집

# vi /etc/fstab

/swap/swapfile swap swap defaults 0 0

 

SWAP File 삭제하는 방법

() SWAP OFF

# swapoff /swap/swapfile

() /etc/fstab 편집

# vi /etc/fstab

() 스왑 파일 삭제

# rm /swap/swapfile

 

SWAP 확인 방법

# free

# cat /proc/swaps

# top