티스토리 뷰
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: 사용자 계정 만들기
참고
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프린트프론트엔드6기
- js
- 코드잇 스프린트
- hydrationboundary
- tanstackquery
- GitHub
- 유사배열객체
- currentTarget
- map
- innerhtml
- 배열
- react
- 비동기
- arguments
- javascript
- Target
- 리액트
- 비제어 컴포넌트
- 제어 컴포넌트
- 중급 프로젝트
- 동기
- Git
- 프론트엔드
- 코드잇스프린트
- 취업까지달린다
- 객체
- html
- CSS
- Next.js
- rest parameter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함