Linux - 미러 논리 볼륨의 일부인 RAM 디스크

Linux - 미러 논리 볼륨의 일부인 RAM 디스크

우리는 총 RAM이 64GB인 서버를 보유하고 있으며, 애플리케이션은 일반적으로 사용 가능한 RAM 중 최대 30GB를 사용합니다. 이러한 애플리케이션 중 하나는 많은 플랫 파일을 처리하며 처리량 문제, 즉 디스크 I/O를 기다리는 문제가 있습니다. 가능한 솔루션을 탐색하는 동안 RAM 디스크에 대한 아이디어가 떠올랐습니다. RAM 디스크의 문제점은 고유한 변동성입니다.

RAM 디스크, RAID 1 구성 및 그룹화할 논리적 미러 볼륨에 대한 별도의 문서를 찾았습니다.물리적하지만 이러한 디스크 복제 솔루션 중 하나를 RAM 디스크와 함께 사용할 수 있는지 제안하는 문서를 찾을 수 없는 것 같습니다. 더 중요한 것은 RAM 디스크를 읽기/쓰기에 사용할 수 있게 하고 물리적 디스크가 RAM 디스크를 "섀도잉"하여 쓰기 작업을 따라잡도록 하는 것이기 때문에 우리는 RAM 디스크가 모든 작업에 대한 "기본" 디스크가 되기를 원할 것입니다. 읽기/쓰기.

참고로 우리는좋다단지 RAM이 OS를 사용하여 파일을 캐싱하는 것을 방지하려는 것이지만 독립형 RAM 디스크와 동일한 성능을 얻을 수 있다면 작동할 수 있습니다. 우리는 특정 파일이 장기간 액세스되지 않는 경우가 많지만 여전히 요청에 따라 읽기/쓰기 속도가 필요하기 때문에 처음에는 이를 피했습니다.

답변1

참고로 우리는 단순히 RAM이 OS를 사용하여 파일을 캐싱하는 것을 피하고 싶지만 독립형 RAM 디스크와 동일한 성능을 얻을 수 있다면 작동할 수 있습니다. 우리는 특정 파일이 장기간 액세스되지 않는 경우가 많지만 여전히 요청에 따라 읽기/쓰기 속도가 필요하기 때문에 처음에는 이를 피했습니다.

당신은 사용할 수 있습니다vmtouch당신의 문제를 해결하기 위해.이것은 특정 파일이나 심지어 전체 디렉터리와 그 아래의 모든 항목을 페이지 캐시에 고정하여 장기간 액세스하지 않더라도 제거되지 않도록 하는 유틸리티입니다. 페이지 캐시에 의존). 이를 위해서는 RAM 디스크와 거의 같은 양의 메모리가 필요하며 실제로는 더 적은 양이 필요합니다. 여전히 페이지 캐시를 사용하게 되지만 모든 작업에 RAM 디스크를 사용하는 것과 유사한 성능을 발휘하게 됩니다(MD 드라이버가 포함되지 않으므로 실제로는 뛰어난 성능을 발휘합니다).

답변2

함께 해킹할 수도 있지만 이는 좋지 않은 생각이며 안정성과 유지 관리성에 여러 가지 문제가 있을 수 있습니다.

RAMdisk와 물리적 디스크의 RAID1은 물리적 디스크의 성능으로 제한될 것이라고 생각합니다. RAID1 기능의 일부는 두 복사본이 동기화되도록 보장하는 것입니다.

읽기의 경우 MD 드라이버가 여러 장치 간에 읽기를 배포할 수 있으므로 몇 가지 이점이 있을 수 있습니다.

이를 생성하는 가능한 단계는 다음과 같습니다.

  1. 지원하려는 배열 크기를 가진 빈 파일을 만듭니다.
  2. losetup파일에서 블록 장치를 생성하는 데 사용됩니다 .
  3. mdadm새로 생성된 블록 장치와 해당 하드 디스크 파티션으로 어레이를 생성하는 데 사용됩니다 .
  4. 새 MD 어레이에 파일 시스템을 생성합니다.

나는 이것을 직접 시도하지 않았으므로 이것이 어떻게 수행될 수 있는지 이론적 예일 뿐입니다.

답변3

우선, RAM 디스크는 거의절대리눅스에서 정답입니다. 블록 장치이기 때문에 모든 읽기는 블록 계층, 파일 시스템, 일반 VFS 계층을 거쳐야 합니다.그리고데이터는 RAM 디스크에 저장되는 것 외에도 RAM에 캐시됩니다. 이러한 데이터 중복과 관련된 추가 레이어 수는 Linux에 tmpfs가 존재하는 이유입니다. 블록 레이어를 포함하는 대신 tmpfs 파일 시스템은 모든 추가 복잡성을 건너뛰고 페이지 캐시에 직접 데이터를 저장합니다. 또한 (크기를 미리 정의할 필요 없이) 저장된 데이터의 양에 따라 자동으로 크기가 조정되며 스왑 공간도 활용할 수 있습니다. 램디스크가 필요하다고 생각한다면 99%의 시간 동안 실제로 tmpfs를 대신 사용해야 합니다.


이제 실제 솔루션까지는 ...

모든 데이터가 실제로 RAM에 맞는 경우 다음과 같은 도구를 사용하여 모든 데이터를 RAM에 고정하는 것이 훨씬 좋습니다.vmtouch또는 응용 프로그램이 모든 파일을 mmap하도록 한 다음 매핑된 모든 영역에서 mlock을 호출합니다.

데이터가 RAM에 모두 맞지 않는 경우 현실적인 두 가지 옵션이 있습니다.

  • 이상적으로 BTRFS, F2FS 또는 ZFS와 같은 투명한 압축을 제공하는 파일 시스템을 사용하여 디스크에 압축된 데이터를 저장합니다. 상당히 빠른 CPU가 있다면 일반적으로 이 문제가 발생합니다.줄이다CPU 시간이 조금 더 필요한 대신 대용량 파일을 읽는 데 필요한 시간입니다. 개선은 일반적으로 데이터가 얼마나 잘 압축되는지에 비례하지만 많은 경우 쉽게 30% 이상의 개선으로 해석될 수 있습니다.
  • 더 빠른 스토리지에 투자해 보세요. 기존 스토리지를 교체하기에 충분하거나 이후에 사용할 수 있는 더 적은 양캐시기능적으로 기존 스토리지 속도를 높입니다.

답변4

지속성이 필요한 경우 RAMDISK는 올바른 솔루션이 아닙니다.

클래식 RAID1(미러링) 어레이에 배치하려면 한 쌍의 고속(읽기: 엔터프라이즈급, 전력 손실 보호 기능 포함) NVMe 디스크에 투자하는 것이 좋습니다.

관련 정보