
Ubuntu 14.04 시스템에는 3개의 폴더가 있습니다. 각 폴더에는 각 폴더에 2KB-30KB 크기의 250K 그림이 포함되어 있으며 디렉터리당 1M 파일까지 증가할 것으로 예상됩니다.
애플리케이션을 여러 서버로 확장하려고 시도하는 동안 공유 스토리지에 대한 Glusterfs를 조사하고 있습니다. 250K 파일은 ext4에서는 문제가 되지 않으므로 glusterfs에서는 문제가 되는 것 같습니다. 파일을 복사하려고 하면 컴퓨터가 완전히 충돌합니다.
파일을 2개 수준의 디렉터리로 분할하려고 합니다.
mkdir -p {000..255}/{000..255}
/000/000/filename
/001/000/filename
/001/001/filename
...
이것이 타당한 좋은 방법처럼 들리나요? 전체 구조에는 나중에 수백만 개의 파일이 포함됩니다. 이를 통해 glusterfs가 수백만 개의 파일을 호스팅하면서 우수한 성능으로 프로덕션 환경에서 안정적일 수 있습니까?
답변1
GlusterFS를 사용하여 매우 작은 파일을 많이 저장하고 액세스하는 것은 많은 구현에서 직면하는 어려움이며 이미 문제를 해결할 수 있는 좋은 길에 있는 것 같습니다. 즉, 파일을 별도의 디렉터리로 나누는 것입니다.
그런 솔루션을 구현할 수 있습니다. 여러 개의 디렉토리를 만들고, 각 디렉토리에 들어갈 수 있는 파일 수에 대한 제한을 선택하고, 파일을 저장할 장소가 부족하지 않기를 바랍니다. 귀하의 예에서는 65,000개가 넘는 디렉터리를 생성하므로 곧 문제가 될 가능성은 없습니다.
또 다른 옵션은 파일이 생성된 날짜를 기준으로 디렉터리를 생성하는 것입니다. 예를 들어 파일이 cust_logo_xad.png
오늘 생성된 경우 여기에 저장됩니다.
/gluster/files/2015/08/24/cust_logo_xad.png
다양한 엔터티(고객, 부서 등)에 대한 데이터를 호스팅하는 경우 소유권을 기준으로 파일을 분리하여 엔터티에 일종의 고유 ID를 할당할 수 있습니다. 예를 들어:
/gluster/files/ry/ry7eg4k/cust_logo_xad.png
그 외에도 다음 사항을 살펴보는 것이 좋습니다.작은 파일을 호스팅하기 위한 스토리지 클러스터 조정에 대한 GlusterFS 문서입니다. 최소한 다음 사항을 확인하세요.
- GlusterFS 스토리지 서버의 파일 시스템에는 사용 가능한 여유 inode가 충분합니다(
mkfs
옵션). - GlusterFS 스토리지 서버의 드라이브는 많은 IOP를 처리할 수 있습니다.
- 작업에 적합한 파일 시스템(ext4 또는 xfs)을 사용합니다.
- 귀하의 응용 프로그램/직원은 작은 파일이 많은 디렉터리를 자주 검색하려고 시도하지 않습니다.
가능하다면(아직 하지 않은 경우) 항상 파일을 검색(예: ls
)하거나 검색(예: ) 하는 것보다 파일에 대한 색인 역할을 할 데이터베이스를 만드는 것이 좋습니다 .find