티스토리 뷰

CS/리눅스

[Linux] Swap Memory

무화과(Fig) 2025. 1. 20. 14:33

출처: https://www.atatus.com/blog/what-is-swap-space/

 

Swap Memory


Swap Memory는 Linux 시스템에서 물리적 RAM이 부족할 때 사용하는 디스크 공간이다.

RAM의 확장 개념으로 하드 디스크나 SSD의 일부를 메모리처럼 사용하기 때문에 가상 메모리라고 할 수 있다.

 

 

 

Swap Memory가 필요한 이유


1. 메모리가 부족한 경우

RAM이 가득 찼을 때 시스템이 중단되는 것을 방지할 수 있고, 당장 사용하지 않는 데이터를 Swap으로 이동시켜 실행 중인 프로그램을 계속해서 구동할 수 있다.

 

2. 비활성 프로세스 관리

오랫동안 사용하지 않는 프로세스의 메모리 페이지를 Swap으로 이동시키고, 이를 통해 활성 프로세스를 위한 RAM 공간을 확보할 수 있다.

 

 

 

Linux에서 Swap Memory 확인하기


아래 명령어를 이용해 사진과 같이 메모리를 확인할 수 있다.

free -h

 

각 항목에 대한 설명은 아래와 같다.

현재 EC2 인스턴스의 전체 설치된 메모리(total)은 957Mi이다.
사용 중인 메모리(used)는 321Mi이다.
사용 가능한 메모리(free)는 76Mi이다.
공유 메모리(shared)는 0이다.
버퍼와 캐시를 위해 사용하는 메모리(buff/cache)는 559Mi이다.
swap 메모리의 사용 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기(available) 약 464Mi이다.
할당된 Swap 메모리는 2.0Gi이다.

 

 

 

Swap Memory 추가하기


1. 디스크 용량 확인

먼저 swap memory를 할당할 수 있을 지 디스크 용량을 확인해준다.

df -h

 

 

2. Swap Memory 설정

권장되는 Swap 공간은 아래와 같다. 보통 기존 RAM 용량의 2배 크기만큼 설정해준다고 한다.

 

 

이후 아래의 명령어를 차례로 입력해준다.

# 2GB 크기의 swap 파일을 생성한다.
sudo fallocate -l 2G /swapfile

# swap 파일의 권한을 변경한다. (보안을 위해 root만 읽기/쓰기 가능하도록 설정)
chmod 600 /swapfile

# 생성한 파일을 swap 파일 형식으로 포맷한다.
sudo mkswap /swapfile

# swap 파일을 활성화한다. 이제 시스템이 이 파일을 swap 공간으로 사용할 수 있다.
sudo swapon /swapfile

# 아래부터는 시스템 재부팅 후에도 swap 파일이 자동으로 활성화되도록 하기 위한 단계이다.
# 파일 시스템 테이블을 편집하기 위해 vi 편집기를 연다.
vi /etc/fstab

# 에디터가 열렸다면, 해당 파일의 마지막 라인에 아래의 명령어를 입력하고 저장하고 나온다.
/swapfile none swap sw 0 0

 


 

* 명령어 정리

1. chmod: 파일이나 디렉토리의 권한을 변경하는 명령어

- chmod 600의 의미

Linux에서 파일 권한은 세 가지 범주로 나뉜다.

1. 소유자(Owner/User)
2. 그룹(Group)
3. 다른 사용자(Others)

그리고 각 범주별로 세 가지 권한이 있다.

읽기(Read) = 4
쓰기(Write) = 2
실행(Execute) = 1

chmod 600에서 600의 의미는

첫 번째 6: 소유자 권한 (4(읽기) + 2(쓰기) = 6) → 읽기/쓰기 가능
두 번째 0: 그룹 권한 (0) → 아무 권한 없음
세 번째 0: 다른 사용자 권한 (0) → 아무 권한 없음

swap 파일의 경우 보안을 위해 root 사용자만 접근할 수 있도록 600 권한을 설정한다.
다른 사용자가 swap 파일을 수정하거나 읽을 수 있다면 시스템 메모리의 내용이 노출될 수 있기 때문이다.

 

 

2. mkswap: 생성된 파일에 Swap 메모리로 사용할 수 있는 특별한 형식을 부여

mk는 make의 줄임말.

mkdir - 디렉토리 만들기
mkfs - make filesystem: 파일시스템 만들기
mkswap - make swap: swap 영역 만들기
mkuser - make user: 사용자 계정 만들기

 

 

 

 

 

 

참고

https://jw910911.tistory.com/122

https://ssue-dev.tistory.com/2#Swap%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%ED%95%A0%EB%8B%B9%20%EB%B0%A9%EB%B2%95-1

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함