매우 많은 양의 사용자 업로드 이미지를 저장하는 모범 사례

매우 많은 양의 사용자 업로드 이미지를 저장하는 모범 사례

우리는 현재 사용자가 많은 이미지를 업로드할 수 있는 Django 기반 웹사이트를 보유하고 있습니다. 이 모든 정보는 당사 서버의 단일 하드 드라이브에 저장됩니다. 문제는 사용 가능한 하드 드라이브의 최대 용량에 천천히 도달하므로 수직 확장이 더 이상 옵션이 아니라는 것입니다.

내가 아는 한 Amazon S3/CloudFront에는 그러한 제한이 없지만 트래픽이 많은 사이트의 경우 이러한 서비스는 자체 서버 랙보다 훨씬 비쌉니다. 자체 환경에서 여러 디스크에 업로드를 분할하는 모범 사례가 있습니까?

답변1

이는 좋지 않습니다. 데이터 내용이 중요한 서버 환경에서는 디스크 오류의 심각한 위험을 완화하기 위해 최소한 RAID를 사용해야 하며 RAID는 스토리지 문제에 대한 해답이기도 합니다. RAID 어레이를 사용하여 스토리지 용량을 늘릴 수 있습니다. (RAID는 다양한 성능 특성과 중복성을 갖춘 단일 가상 디스크를 제공하기 위해 여러 디스크를 사용하는 데 사용됩니다.)

또한 실제로 알고 사용해야 할 다른 기술도 있습니다. OS를 지정하지 않았지만 Linux 변형이기를 바랍니다. 이 경우 디스크 관리를 처리하는 LVM을 살펴봐야 하며 무엇보다도 다음 기능이 있습니다. OS 수준 아래에서 여러 디스크를 단일 가상 디스크로 병합하는 기능.

물론 일반적으로 여러 개의 디스크를 사용하여 이를 하나의 대형 외부 하드 디스크로 병합할 수 있는 SANS와 같은 것을 볼 수도 있습니다.

답변2

클라우드 기반 서비스를 피한다고 가정할 때 전통적인 대기업 접근 방식은 여러 개별 디스크를 단일 논리 파일 시스템으로 병합할 수 있는 하드웨어나 소프트웨어를 조달하는 것입니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 나는 몇 가지를 열거할 것이다:

  • glusterfs와 같은 분산 파일 시스템을 사용하면 각각 자체 CPU, RAM 및 스토리지를 갖춘 여러 서버를 보유하고 모든 서버 간에 공유되는 단일 논리 파일 시스템을 가질 수 있습니다.

  • 또한 이 분산 개념을 한 단계 더 발전시켜 전체 시스템을 아주 간단하게 클러스터링하여 하나의 논리적 컴퓨터를 실행하는 것처럼 보이게 할 수도 있습니다. 그러나 실제로는 일련의 네트워크로 연결된 컴퓨터가 밀접하게 연결되어 있습니다. 매우 빠른 네트워킹).

  • 섀시에 직접 설치되거나 연결되어 있는 많은 하드 디스크에 연결되는 적당히 강력한 엔터프라이즈급 서버인 "스토리지 서버"를 구입하면 마더보드, 섀시, CPU, RAM 등을 구입하는 비용을 절약할 수 있습니다. 파이버 채널 또는 SAS를 통해 외부 스토리지 랙으로 연결되며 때로는 60개에서 그 이상까지 번호가 매겨진 하드 드라이브가 포함됩니다. 이러한 구성에서 하드 디스크는 일반적으로 하드웨어 RAID 컨트롤러 또는 백플레인을 사용하여 하나의 논리 장치로 결합됩니다. 물론 이 방법은 결국 최대치에 도달하게 됩니다. 모든 디스크가 있는 경우 최대 디스크 밀도에서 단일 랙에 넣을 수 있는 용량입니다. 이 경우 이러한 스토리지 서버의 파일 시스템 계층 또는 시스템 계층 클러스터를 사용하여 확장할 수 있습니다.

향후 몇 년 내에 필요할 것으로 예상되는 정확한 스토리지 크기에 따라 N(여기서 N은 미리 계획하려는 연수), 이러한 솔루션 중 일부는 다른 솔루션보다 관리 비용이 더 높거나 더 어려울 수 있습니다.

수천 테라바이트의 중복 스토리지가 필요한 극단적인 예에서는 Amazon S3가 다운스트림 고객에게 제공하는 규모에 따라 일반적으로 이를 관리하기 위한 중앙 집중식 인프라를 갖춘 일종의 클러스터 시스템이 있어야 합니다. 이러한 경우 우수한 성능을 유지하려면 매우 빠른 노드 간 네트워킹이 중요합니다. 최소한 10G 이더넷을 살펴보십시오.

현재 활동 중이라고 하신 것으로 보아단일 하드 드라이브그러나 규모를 크게 늘리지 않고 여기에서 규모를 확장하는 가장 경제적인 방법은 4~8개의 하드 드라이브를 수용할 수 있는 2U 또는 3U 서버를 구입하고 거기에 RAID에 여러 개의 디스크를 장착하는 것입니다. RAID10, RAID5 및 RAID6은 모두 이 디스크 수에 대해 매우 일반적인 구성이지만, RAID5/RAID6을 사용하는 경우 과도한 CPU 로드를 피하기 위해 하드웨어 RAID 컨트롤러를 사용해야 합니다.

이 방법과 현재 사용 가능한 디스크를 사용하면 사용 가능한 스토리지(중복 포함)를 약 16TB까지 확장할 수 있지만, 대용량 디스크는 처리량이 낮고 응답 시간이 길어 속도가 느려지는 경향이 있습니다. 트래픽이 많은 사이트는 더 작은 용량의 디스크를 사용하는 경향이 있습니다.... 이는 물론 더 많은 용량이 필요하다는 것을 의미합니다.~의동일한 가용 용량을 달성할 수 있습니다. :/

관련 정보