대용량의 작은 파일(SSD가 아닌 HDD)을 저장하기 위한 최고 성능의 Linux 파일 시스템은 무엇입니까?

대용량의 작은 파일(SSD가 아닌 HDD)을 저장하기 위한 최고 성능의 Linux 파일 시스템은 무엇입니까?

많은 작은 파일과 몇 개의 큰 파일이 포함된 디렉터리 트리가 있습니다. 평균 파일 크기는 약 1KB입니다. 트리에는 210158개의 파일과 디렉터리가 있습니다(이 숫자는 다음을 find | wc -l실행 하여 얻었습니다).

적은 수의 파일이 일주일에 여러 번 추가/제거/다시 작성됩니다. 이는 작은 파일과 (몇몇) 큰 파일 모두에 적용됩니다.

내가 시도한 파일 시스템(ext4, btrfs)에는 디스크에서 파일을 찾는 데 몇 가지 문제가 있습니다. 시간이 지남에 따라 디스크(반도체 디스크가 아닌 회전하는 미디어)에서 파일의 물리적 위치 분포가 더욱 무작위화됩니다. 이러한 무작위 배포의 부정적인 결과는 파일 시스템이 점점 느려진다는 것입니다(예: 최신 파일 시스템보다 4배 느려짐).

이러한 성능 저하에 영향을 받지 않고 순환 미디어에서 안정적인 성능 프로필을 유지할 수 있는 Linux 파일 시스템(또는 파일 시스템 유지 관리 방법)이 있습니까? 파일 시스템은 Fuse에서 실행될 수 있지만 안정적이어야 합니다.

답변1

성능

나는 작은 벤치마크를 작성했습니다(원천) 수십만 개의 작은 파일을 처리할 때 어떤 파일 시스템이 가장 잘 작동하는지 알아보려면 다음을 수행하세요.

  • /dev/urandom의 데이터를 사용하여 300,000개의 파일(512B~1536B)을 생성합니다.
  • 30,000개의 임의 파일을 다시 작성하고 크기를 변경합니다.
  • 30,000개의 연속 파일 읽기
  • 30,000개의 임의 파일 읽기
  • 모든 파일 삭제

  • 각 단계 후에 캐시 동기화 및 삭제

결과(평균 시간(초), 낮을수록 좋음):

Using Linux Kernel version 3.1.7
Btrfs:
    create:    53 s
    rewrite:    6 s
    read sq:    4 s
    read rn:  312 s
    delete:   373 s

ext4:
    create:    46 s
    rewrite:   18 s
    read sq:   29 s
    read rn:  272 s
    delete:    12 s

ReiserFS:
    create:    62 s
    rewrite:  321 s
    read sq:    6 s
    read rn:  246 s
    delete:    41 s

XFS:
    create:    68 s
    rewrite:  430 s
    read sq:   37 s
    read rn:  367 s
    delete:    36 s

결과:
Ext4는 전반적인 성능이 좋지만 ReiserFS는 순차 파일을 읽는 속도가 매우 빠릅니다. 그것은 밝혀XFS는 작은 파일이 많을 때 속도가 느립니다. 이 사용 사례에서는 XFS를 사용하면 안 됩니다.

조각화 문제

파일 시스템이 드라이브 전체에 파일을 배포하는 것을 방지하는 유일한 방법은 파티션을 실제로 필요한 크기로 유지하는 것입니다. 그러나 파일 내 조각화를 방지하기 위해 파티션을 너무 작게 만들지 않도록 주의하십시오. 사용좌심실 용적매우 도움이 됩니다.

추가 읽기

Arch Wiki에는 파일 시스템 성능에 대한 훌륭한 기사가 있습니다.

https://wiki.archlinux.org/index.php/Beginner%27s_Guide#Filesystem_types

https://wiki.archlinux.org/index.php/Maximizing_Performance#Storage_devices

답변2

디렉터리에 100만~200만 개의 파일이 있으면 ext4 성능이 저하됩니다. 이 페이지를 참고해주세요http://genomewiki.ucsc.edu/index.php/File_system_performanceUCSC의 Hiram Clawson 제작

답변3

나는 이 작업을 위해 많은 수의 작은 파일을 처리하도록 특별히 설계된 ReiserFS를 사용합니다. 하나쯤 있으면 편해요그것에 대해 읽어보세요funtoo 위키에서요.

ReiserFS에는 작은 파일의 성능을 향상시키기 위해 특별히 설계된 많은 기능도 있습니다. ext2와 달리 ReiserFS는 고정된 1k 또는 4k 블록에 저장 공간을 할당하지 않습니다. 대신 필요한 정확한 크기를 할당합니다.

답변4

XFS는 이러한 상황에서 좋은 성능을 발휘하는 것으로 알려져 있습니다. 이것이 우리가 직장에서 메일 저장소로 사용하는 이유 중 하나입니다(디렉토리 하나에 수십만 개의 파일이 포함될 수 있음). ReiserFS보다 내결함성이 더 좋고, 더 다양하며 일반적으로 매우 성숙한 파일 시스템입니다.

또한 XFS는 온라인 조각 모음을 지원합니다. 지연 할당 기술을 사용하기는 하지만 우선 다른 파일 시스템에 비해 조각화를 줄입니다.

관련 정보