CentOS7에 Swap 스왑 공간 추가 방법

6802 단어
앞말
어떻게 하면 서버의 응답을 더욱 빨리 할 수 있습니까?어떻게 응용 프로그램에 메모리 부족 오류가 발생하는 것을 피합니까?가장 간단한 방법은 교환 공간을 늘리는 것이다.Swap은 메모리 디스크의 자류지로서 운영체제는 여기에 메모리에 넣을 수 없는 물건을 잠시 저장할 수 있다.
이것은 어느 정도에 서버의 사용 가능한 메모리를 증가시킨 것과 같다.swap에서 읽는 것은 메모리보다 느리지만 없는 것보다 낫다. 메모리가 부족할 때의 안전망이라고 할 수 있다.
만약 swap이 없다면, 서버는 메모리가 부족하면 메모리를 방출하기 위해 응용을 종료하고, 심지어는 붕괴될 수도 있으며, 이것은 당신이 아직 저장하지 못한 데이터를 잃어버리거나 그 기회를 초래할 수도 있다.일부 응용 프로그램은 데이터 접근의 신뢰성을 확보하기 위해 시스템 설정을 명확하게 요구한다.
이 문서에서는 CentOS 7 서버에서 swap 파일을 만들고 활성화하는 방법을 설명합니다.
주: swap은 일반적으로 전통적인 기계 하드디스크에서 더욱 잘 나타나는데 SSD에서 swap를 사용하면 문제를 일으킬 수 있다. 특히 하드웨어가 노화된 후에.따라서 Digital Ocean 및 SSD 기반 클라우드 호스트 서비스를 사용하는 다른 사용자에게는 swap을 추천하지 않습니다.이것은 심지어 당신의 가상 기기와 함께 호스트를 사용하는 다른 사용자에게도 영향을 줄 수 있다.
Digital Ocean 사용자에게 가장 좋은 방법은 Droplet을 업데이트하는 것입니다.일반적으로 업그레이드 후의 호스트는 향상되고 하드웨어 문제의 영향을 받기 쉽다.
준비 작업
우선, Sudo 권한을 가진 비root 사용자를 설정한 CentOS 7 서버가 필요합니다. (설정 과정은 이 강좌의 첫 번째 단계부터 네 번째 단계를 참고할 수 있습니다.)
준비가 완료되면 이 사용자 이름 SSH로 CentOS 서버에 가서 swap 파일을 설치할 준비를 하세요.
시스템 Swap 정보 확인
우선 시스템의 저장소를 검사해서 swap이 설정되었는지 확인해야 합니다.하나의 시스템은 여러 개의 swap 파일이나 구역을 설정할 수 있지만, 일반적으로 하나면 충분하다.
swapon 명령을 사용하면 시스템이 swap을 설정했는지 확인할 수 있습니다. 이것은 일반적인 swap 도구입니다.-s 태그를 사용하여 현재 스토리지 디바이스의 swap 사용 상황을 나열합니다.
swapon -s

이 명령이 결과를 되돌려 주지 않으면 시스템이 swap을 설정하지 않았음을 나타냅니다.
또는 free 도구를 사용하여 시스템의 전체 메모리 사용 상황을 볼 수 있습니다. 메모리와 swap의 사용 상태 (표시 단위는 MB) 를 볼 수 있습니다.
free -m


             total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
Swap:            0          0       4095

이 시스템의total swap 공간이 0인 것을 볼 수 있습니다. 즉, swap을 설정한 적이 없습니다.이것은 우리가 swapon에서 본 결과와 일치한다.
사용 가능한 스토리지 공간 확인
일반적으로, 우리는 swap으로 단독 구역을 만듭니다.그러나 때때로 하드웨어나 소프트웨어의 제한으로 인해 새로운 구역을 만드는 방식이 실현되지 않을 때가 있다. 이런 상황에서 swap 파일을 만들어서 같은 기능을 실현할 수 있다.
시작하기 전에 디스크의 사용 가능한 공간을 확인하십시오.다음 명령을 입력합니다.
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 59G 1.5G 55G 3% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.3M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

여기의 -h 표시는dh가 메모리 블록의 개수를 직접 출력하는 것이 아니라 MB나 GB 단위로 출력하는 공간의 사용과 여가 상황을 알려주기 위한 것이다.
첫 번째 줄에서 볼 수 있듯이 우리의 저장 구역에는 59GB의 공간이 남아 있다. 이것은 우리가 조작하기에 충분하다.(저는 중간 규모의 새로운 클라우드 호스트입니다. 사람마다 상황이 크게 다를 수 있습니다.)
적당한 swap 공간은 얼마나 됩니까?이 문제에 관해서는 여러 가지 선택이 있는데, 이것은 당신의 응용 수요와 당신 개인의 선호에 달려 있다.일반적으로 메모리 용량의 두 배가 좋은 출발점이다.
내 시스템에는 4GB가 저장되어 있는데, 8GB의 swap을 설정하면 너무 많은 공간을 차지하기 때문에 나는 4GB만 설정하기로 결정했다.
Swap 파일 만들기
다음은 파일 시스템에서 swap 파일을 만들 것입니다.루트 디렉터리 (/) 아래에 swapfile이라는 파일을 만들어야 합니다. 물론 당신이 좋아하는 파일 이름을 선택할 수도 있습니다.이 파일이 분배하는 공간은 우리가 필요로 하는 swap 공간과 같습니다.
가장 빠른 생성 방식은fallocate 명령입니다. 이 명령은 지정한 크기의 공간을 미리 분배하는 파일을 만들 수 있습니다.다음 명령을 입력하여 4GB 파일을 만듭니다.
sudo fallocate -l 4G /swapfile 

암호를 입력하면 이 swap 파일이 생성됩니다.우리는 ls 명령으로 파일 크기를 검사할 수 있습니다.
ls -lh /swapfile -rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile 

이로써 우리의 swap 파일이 만들어졌습니다.
Swap 파일 활성화
현재 우리는 이미 swap 파일을 가지고 있지만, 시스템은 이 파일을 swap으로 사용해야 할지 모른다. 이 파일을 swap으로 포맷하고 사용해야 한다는 것을 알려야 한다.
우선 루트만 읽을 수 있도록 swap 파일의 권한을 변경해야 합니다. 그렇지 않으면 큰 안전 위험이 있습니다.chmod 명령을 사용하여 권한 작업:
sudo chmod 600 /swapfile

이렇게 하면 이 파일의 읽기와 쓰기는 루트만 할 수 있습니다.ls-lh 명령을 사용하여 다음을 확인합니다.
ls -lh /swapfile -rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

그리고 다음 명령을 사용하여 시스템이 이 파일을 swap에 사용하도록 알립니다.
sudo mkswap /swapfile Setting up swapspace version 1, size = 4194300 KiB no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

이제 이 swap 파일은 swap 공간으로 사용할 수 있습니다.다음 명령을 입력하여 swap 사용을 시작합니다.
sudo swapon /swapfile 

다음 명령을 입력하여 설정이 적용되었는지 확인할 수 있습니다.
swapon -s Filename Type Size Used Priority /swapfile file 4194300 0 -1

되돌아오는 결과에 우리가 방금 설정한 swap이 있음을 볼 수 있습니다.free 도구를 사용하여 확인:
free -m total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/+ buffers/cache: 196 3756 Swap: 4095 0 4095

이로써 저희 swap이 설정되었습니다. 운영체제는 필요할 때 사용할 것입니다.
Swap 파일 영구 적용
이로써 우리는 시스템에서 swap 파일을 사용했지만, 시스템이 다시 시작되면 서버에서 자동으로 이 파일을 사용할 수 없습니다.시스템이 리셋된 후에 자동으로 swap가 적용되도록 하려면 fstab 파일을 수정해서 실행할 수 있습니다. (이것은 파일 시스템과 구역을 관리하는 표입니다.)
파일 편집을 sudo 권한으로 열려면 다음과 같이 하십시오.
sudo nano /etc/fstab

파일 끝에 다음 줄의 내용을 추가하여 운영체제에 방금 만든 swap 파일을 자동으로 사용하도록 알려 줍니다.
/swapfile   swap    swap    sw  0   0

추가가 완료되면 종료를 저장합니다.나중에 서버가 다시 시작할 때마다 이 파일을 검사하고 swap을 자동으로 사용합니다.
Swap 구성 변경(옵션)
swap와 관련된 몇 가지 옵션이 시스템의 성능 표현에 영향을 줄 수 있습니다.대부분의 경우 이 옵션들은 선택할 수 있으며, 구체적으로 어떻게 수정해야 하는지는 당신의 응용 수요와 개인적인 선호에 달려 있다.
Swappiness
swappiness 파라미터는 시스템이 데이터를 메모리에서 swap 공간으로 교환하는 주파수를 결정하고 수치는 0에서 100 사이로 설정하여 시스템이 데이터를 메모리에서 swap 공간으로 교환하는 힘을 대표한다.
이 수치가 0에 가까울수록 시스템은 swap를 하지 않고 필요할 때만 swap 작업을 하는 경향이 있다.swap은 메모리보다 훨씬 느리기 때문에 swap에 대한 의존을 줄이는 것은 더욱 높은 시스템 성능을 의미한다.
이 수치가 100에 가까울수록 시스템은 swap을 많이 하는 경향이 있다.일부 응용 프로그램의 메모리 사용 습관은 이런 상황에 더욱 적합한데, 이것도 서버의 용도와 관련이 있다.
현재 swappiness 값을 보려면 다음 명령을 입력합니다.
cat /proc/sys/vm/swappiness 30

CentOS 7은 기본적으로 30의 swappiness를 설정합니다. 이것은 대부분의 데스크톱 시스템과 로컬 서버에 비교적 중용적인 수치입니다.VPS 시스템의 경우 0에 가까울 수 있는 값이 더 적합합니다.
sysctl 명령을 사용하면 swappiness를 수정할 수 있습니다.예를 들어 swappiness를 10으로 설정합니다.
sudo sysctl vm.swappiness=10 vm.swappiness = 10 

이번 수정은 다음 재부팅 전까지 적용됩니다.이 값을 영구적으로 수정하려면 sysctl 프로필을 편집해야 합니다.
sudo nano /etc/sysctl.conf

다음 내용을 파일 끝에 붙여넣습니다.
vm.swappiness = 10 

편집이 완료되면 저장이 종료되고 서버가 다시 시작할 때마다 swappiness를 이 값으로 설정합니다.
캐시 압력(Cache Pressure)
또 다른 변경 사항을 고려할 수 있는 구성 항목은 vfs_cache_pressure, 이 설정 항목은 특수 파일 시스템 메타파일 항목의 저장과 관련됩니다.이러한 정보에 대한 빈번한 읽기는 성능을 소모하기 때문에 캐시에 저장하는 시간을 연장하면 시스템의 성능을 향상시킬 수 있다.
proc 파일 시스템을 통해 캐시 압력의 현재 설정 값을 확인합니다.
cat /proc/sys/vm/vfs_cache_pressure 100 

이 수치는 비교적 높은 것으로 시스템이 캐시에서 inode 정보를 제거하는 속도가 비교적 빠르다는 것을 의미한다.보수적인 수치는 50이고sysctl 명령을 사용하여 설정합니다.
sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50 

이 명령은 다시 시작하기 전에만 유효합니다.이 설정을 영구적으로 유효하게 하려면 sysctl 프로필을 편집해야 합니다.
sudo nano /etc/sysctl.conf 

파일 끝에 다음을 추가합니다.
vm.vfs_cache_pressure = 50

저장이 종료되면 서버는 매번 재부팅할 때마다 자동으로 캐시 압력을 50으로 설정합니다.
총결산
이로써 우리의 시스템 메모리는 약간의 숨 쉴 공간을 얻었다.swap 공간이 있으면 흔히 볼 수 있는 문제를 효과적으로 피할 수 있다.
만약 메모리 부족 (OOM, out of memory) 의 오류 정보나 시스템이 필요한 응용 프로그램을 실행할 수 없다면, 가장 좋은 방법은 응용 프로그램 설정을 최적화하거나 서버를 업그레이드하는 것입니다. 그러나 swap 공간을 설정하는 것도 유연한 절약 방안입니다.

좋은 웹페이지 즐겨찾기