집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux에서 스왑 파티션의 역할에 대한 자세한 설명
이 기사는 Linux에서 스왑 파티션의 역할에 대한 자세한 해석을 주로 소개합니다. 편집자는 그것이 꽤 좋다고 생각하고 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
이 글은 리눅스에서의 스왑 파티션 관련 내용을 주로 연구합니다. 구체적인 소개는 다음과 같습니다.
임베디드 리눅스 중국어 사이트 뉴스, 리눅스 시스템의 스왑 파티션, 즉 스왑 영역, 스왑 공간의 역할은 간단히 설명하면 다음과 같습니다. 시스템의 물리적 메모리가 부족할 때 , 현재 실행 중인 프로그램에서 사용할 수 있도록 공간의 일부가 해제되어야 합니다. 해제된 공간은 오랫동안 작동하지 않은 일부 프로그램에서 발생할 수 있으며, 해제된 공간은 Swap 공간에 일시적으로 저장되어 있으며 해당 프로그램이 실행될 때 저장된 데이터가 Swap에서 메모리로 복원됩니다. 이런 방식으로 시스템은 물리적 메모리가 부족할 때 항상 Swap을 수행합니다. 실제로 스왑 조정은 Linux 서버, 특히 웹 서버의 성능에 매우 중요합니다. 스왑을 조정하면 시스템 성능 병목 현상을 극복할 수 있고 시스템 업그레이드 비용을 절약할 수 있습니다.
모두가 알고 있듯이 현대 운영체제는 "가상 메모리" 기술을 구현했습니다. 이는 기능적인 면에서 물리적 메모리의 한계를 뛰어넘어 프로그램이 실제 물리적 메모리보다 더 큰 공간을 조작할 수 있게 해줄 뿐만 아니라, 더 중요하게는, " '가상메모리'란 각 프로세스가 다른 프로그램의 방해를 받지 않도록 각 프로세스를 격리해 주는 안전보호망입니다.
아마 컴퓨터 사용자라면 이런 현상을 자주 접하게 될 것입니다. 예를 들어, Windows 시스템을 사용하는 경우 여러 프로그램을 동시에 실행할 수 있습니다.오랜 시간 동안 주의를 기울이지 않은 프로그램으로 전환하면 하드 디스크 경고음이 들립니다. 자주 실행되는 프로그램에 의해 이 프로그램의 메모리가 '훔쳐' 스왑 영역에 배치되었기 때문입니다. 따라서 이 프로그램이 프런트 엔드에 배치되면 스왑 영역에서 데이터를 검색하여 메모리에 넣은 다음 계속 실행됩니다.
또한, 물리적 메모리에서 스왑 아웃된 모든 데이터가 스왑에 들어가는 것은 아니며(그렇다면 스왑이 압도될 것입니다), 데이터의 상당 부분이 파일 시스템으로 직접 스왑됩니다. 예를 들어, 일부 프로그램은 일부 파일을 열고 파일을 읽고 씁니다(사실 모든 프로그램은 실행 중인 프로그램 자체인 최소한 하나의 파일을 열어야 합니다). 필요 없음 파일 부분의 데이터는 Swap 공간에 배치되지만 파일에 직접 배치할 수 있습니다. 파일 읽기 작업인 경우 메모리 데이터가 직접 해제되며 교체할 필요가 없습니다. 다음에 파일 쓰기 작업인 경우 변경된 데이터만 필요할 때 파일 시스템에서 직접 복원할 수 있기 때문입니다. 복구를 위해 파일에 저장해야 합니다. 그러나 malloc과 new 함수에 의해 생성된 객체의 데이터는 파일 시스템에 해당 "예약" 파일이 없기 때문에 Swap 공간이 필요하므로 "익명" 메모리 데이터라고 합니다. 이 유형의 데이터에는 스택의 일부 상태 및 변수 데이터도 포함됩니다. 따라서 스왑 공간은 "익명" 데이터를 위한 교환 공간이다.
일부 Linux(국내 중국어 버전) 설치 매뉴얼에는 다음과 같은 지침이 있습니다. 스왑 공간은 128M을 초과할 수 없습니다. 왜 이런 말이 나오는 걸까요? 숫자 "128M"의 유래를 설명하기 전에 먼저 질문에 대한 답변을 드리겠습니다. 이제 128M 제한이 전혀 없습니다! 현재 한도는 2G입니다!
리눅스 시스템의 스왑 공간은 페이징되어 있으며, 각 페이지의 크기는 메모리 페이지의 크기와 동일하므로 스왑 공간과 메모리 간의 데이터 교환이 용이합니다. 이전 버전의 Linux에서는 스왑 공간을 구현했을 때 스왑 공간의 첫 번째 페이지를 모든 스왑 공간 페이지에 대한 "비트 맵"으로 사용했습니다. 이는 첫 번째 페이지의 모든 비트가 스왑 공간의 페이지에 해당함을 의미합니다. 이 비트가 1이면 해당 페이지의 Swap이 가능하다는 의미이고, 0이면 해당 페이지는 배드 블록이므로 사용할 수 없다는 의미입니다. 이런 방식으로 첫 번째 스왑 페이지는 매핑 페이지이므로 첫 번째 스왑 매핑 비트는 0이어야 합니다. 또한 마지막 10개의 매핑 비트도 Swap 버전을 나타내기 위해 사용됩니다(원래 버전은 Swap_space, 현재 버전은 swapspace2). 그러면 한 페이지의 크기가 s라면 이 Swap 구현 메소드는 총 "8 * (s - 10) - 1"개의 Swap 페이지를 관리할 수 있다. i386 시스템의 경우 s=4096이면 전체 공간 크기는 133890048입니다. 1MB=2^20Byte를 고려하면 크기는 정확히 128M입니다.
이런 스왑 공간 관리 방법은 스왑 공간의 불량 블록을 방지하기 위한 것입니다. 시스템이 Swap에 불량 블록이 있음을 감지하면 해당 비트맵에 0을 표시하여 이 페이지를 사용할 수 없음을 나타냅니다. 이런 식으로 Swap을 사용하면 불량 블록이 사용되지 않으며 시스템에 오류가 발생합니다.
현재 시스템 설계자들은 다음과 같이 믿습니다.
1. 이제 하드 드라이브의 품질은 불량 블록이 거의 없이 매우 좋습니다.
2. 불량 블록이 있더라도 많지 않습니다. 불량 블록만 나열하면 되며, 페이지마다 매핑을 만들 필요가 없습니다.
3. 불량 블록이 많은 경우 이 하드 드라이브를 스왑 공간으로 사용하면 안 됩니다.
그래서 이제 리눅스는 비트 매핑 방식을 취소하고 128M 제한도 취소했습니다. 주소로 직접 액세스할 수 있으며 2G로 제한됩니다.
스왑 공간을 너무 많이 할당하면 디스크 공간이 낭비되고, 스왑 공간이 너무 적으면 시스템 오류가 발생합니다.
시스템의 물리적 메모리를 모두 사용하면 시스템이 매우 느리게 실행되지만 스왑 공간을 모두 사용하면 시스템에서 오류가 발생합니다. 예를 들어, 웹 서버는 다양한 요청 수에 따라 여러 서비스 프로세스(또는 스레드)를 생성할 수 있습니다. 스왑 공간을 모두 사용하면 서비스 프로세스를 시작할 수 없으며 일반적으로 "애플리케이션 메모리 부족" 오류가 발생합니다. .심각한 경우 서비스 프로세스의 교착 상태가 발생합니다. 따라서 Swap 공간의 할당은 매우 중요합니다.
일반적으로 스왑 공간은 물리적 메모리 크기보다 크거나 같아야 하며 최소값은 64M 이상이어야 합니다. 일반적으로 스왑 공간 크기는 물리적 메모리의 2~2.5배가 되어야 합니다. 그러나 애플리케이션에 따라 구성이 달라야 합니다. 소형 데스크탑 시스템인 경우에는 더 작은 Swap 공간만 필요하지만, 대형 서버 시스템은 상황에 따라 서로 다른 크기의 Swap 공간이 필요합니다. 특히 데이터베이스 서버와 웹 서버의 경우 방문 횟수가 증가함에 따라 스왑 공간에 대한 요구 사항도 증가하므로 구체적인 구성에 대해서는 각 서버 제품의 지침을 참조하세요.
또한 Swap 파티션의 개수도 성능에 큰 영향을 미칩니다. Swap 작업은 디스크 IO 작업이므로 Swap 영역이 여러 개인 경우 Swap 공간 할당이 모든 Swap에 대해 순환 방식으로 수행되므로 IO 로드 균형이 크게 유지되고 Swap 교환 속도가 빨라집니다. 스왑 영역이 하나만 있는 경우 모든 스왑 작업은 스왑 영역을 매우 바쁘게 만들어 시스템이 대부분의 시간 동안 대기 상태에 있게 되므로 매우 비효율적입니다. 성능 모니터링 도구를 사용하면 현재 CPU 사용량이 많지 않지만 시스템이 느린 것을 알 수 있습니다. 이는 병목 현상이 IO이며 CPU 속도를 높여도 문제를 해결할 수 없음을 나타냅니다.
시스템 성능 모니터링
스왑 공간 할당은 확실히 중요하지만 시스템이 실행되는 동안 성능을 모니터링하는 것은 더욱 중요합니다. 성능 모니터링 도구를 통해 시스템의 다양한 성능 지표를 확인하고 시스템 성능 병목 현상을 찾을 수 있습니다. 이 문서에서는 Solaris에서 Swap과 관련된 일부 명령과 사용법만 소개합니다.
가장 일반적으로 사용되는 것은 Vmstat 명령입니다(대부분의 Unix 플랫폼에 이러한 명령이 있습니다). 이 명령은 대부분의 성능 표시기를 볼 수 있습니다. 예:
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99 0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100 0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100 …………
명령 설명:
vmstat 다음 매개변수는 성능 표시기 캡처에 대한 시간 간격을 지정합니다. 3은 3초마다 캡처를 의미합니다. 데이터의 첫 번째 행을 읽을 필요가 없으며 시작 이후의 평균 성능만 반영합니다. 두 번째 줄부터 시스템 성능 지표가 3초마다 반영됩니다. 이러한 성능 지표 중 스왑과 관련된 지표는 다음과 같습니다.
w under procs
메모리를 해제하고 스왑 아웃(3초 이내)해야 하는 현재 프로세스 수를 나타냅니다.
swpd under memory
사용된 스왑 공간의 크기를 나타냅니다.
si는 스왑 아래에 있으므로
si는 초당 현재(3초 이내) 스왑된(스왑 인) 총 메모리 양을 킬로바이트 단위로 나타냅니다. 따라서 매초 현재(3초 이내) 총 양을 나타냅니다. 초당 스왑아웃된 메모리의 양(KB)입니다.
위 표시기가 많을수록 시스템이 더 바쁜 것입니다. 이러한 표시기로 표시되는 시스템 사용량은 시스템의 특정 구성과 관련이 있습니다. 시스템 관리자는 시스템이 정상적으로 동작하고 있을 때 이들 지표의 값을 기록해 둬야 하며, 시스템에 문제가 발생한 경우 이를 비교하여 신속하게 문제점을 찾아내고, 시스템의 정상적인 작동을 위한 표준 지표 값을 공식화해야 한다. 성능 목적을 위해.
또한 Swapon-s를 사용하면 현재 Swap 리소스 사용량을 쉽게 확인할 수 있습니다. 예:
Filename Type Size Used Priority
/dev/hda9 partition 361420 0 3
Swap 공간에서 사용된 리소스와 사용되지 않은 리소스의 크기를 쉽게 확인할 수 있습니다.
좋은 시스템 성능을 보장하려면 스왑 로드를 30% 미만으로 유지해야 합니다.
스왑 공간을 늘리려면 다음 단계를 따르세요.
1) 슈퍼 사용자가 됩니다.
$su - 루트
2) 스왑 파일 만들기
dd if=/dev/zero of=swapfile bs=1024 count=65536
연속된 공간으로 스왑 파일을 만듭니다.
3) 스왑 파일 활성화
/usr/sbin/swapon swapfile
swapfile은 이전 단계에서 생성된 스왑 파일을 의미합니다.
4) 이제 새로 추가된 Swap 파일이 적용되었지만 시스템을 다시 시작한 후에는 이전 단계가 기억되지 않습니다. 따라서 파일 이름과 Swap 유형은 /etc/fstab 파일에 다음과 같이 기록되어야 합니다.
/path/swapfile none Swap sw,pri=3 0 0
5) Swap 파일이 추가되었는지 확인합니다.
/usr/sbin/swapon -s
초과된 스왑 공간을 삭제합니다.
1) 슈퍼유저 되기
2) Swapoff 명령을 사용하여 스왑 공간을 확보하세요.
#/usr/sbin/swapoff 스왑 파일
3) /etc/fstab 파일을 편집하고 이 스왑 파일의 엔터티를 제거합니다.
4) 파일 시스템에서 이 파일을 재활용합니다.
#rm swapfile
5) 물론, Swap 공간이 파일이 아니고 파티션인 경우에는 새로운 파일 시스템을 생성한 후 원본 파일 시스템에 마운트해야 합니다.
관련 권장 사항:
Oracle이 Linux 스왑 파티션을 사용하지 못하도록 방지하는 방법
MySQL이 Linux 스왑 파티션 사용을 방지하고 읽기 및 쓰기 성능을 향상시키는 방법
위 내용은 Linux에서 스왑 파티션의 역할에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!