NFS를 통해 공유되는 Fuseblk 파티션에 있는 수백만 개의 파일에 대한 읽기 속도가 느립니다.

NFS를 통해 공유되는 Fuseblk 파티션에 있는 수백만 개의 파일에 대한 읽기 속도가 느립니다.

저는 NFSServer1(RHEL)과 NFSClient1(Ubuntu)이라는 두 개의 Linux 시스템을 가지고 있습니다.

ntfs-3g드라이버는 NFSServer1 에 설치됩니다 . 다음 명령을 실행하여 장치 파티션을 마운트합니다 ldmtool.NTFSmount -t ntfs-3g -o ro,noatime $devPath $mountPath

참고: 이 두 파티션은 Windows 동적 디스크 파티션을 사용하여 파생 /dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1됩니다 ./dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2LDM 도구

[root@ROADQAScaleNFS2 ~]# df -Th
Filesystem                                Type      Size  Used Avail Use% Mounted on
/dev/sdc4                                 fuseblk   127G   11G  117G   9% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4
/dev/sdc2                                 fuseblk   450M   13M  438M   3% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1 fuseblk    10G  5.8G  4.3G  58% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2 fuseblk    10G  6.0G  4.1G  60% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2
[root@ROADQAScaleNFS2 ~]# mount
/dev/sdc4 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/sdc2 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)

이 모든 파티션에는 약 1천만 개의 파일이 있습니다.

마운트된 이러한 파티션은 NFSClient1에서 NFS 공유로 액세스할 수 있습니다.

[root@NFSClient ~]# mount
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)

NFS 서버의 NFS 데몬 스레드 수는 64로 설정됩니다.

fuseblk다음으로 NFS 클라이언트에서 다음 명령을 사용하여 stat 파티션을 실행합니다 find.

find -H /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 -printf '%p|' | xargs -d '|' stat --printf="%F, %i:\t%n\t%.19x\t%.19y\t%.19z\t%.19w\t%s\t%u\t%g\n" \ |$SED -e "s|/monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2/||g" -e "s|directory,|d/d|g" -e "s|symbolic link,|l/l|g" -e "s|regular file,|r/r|g" -e "s|socket,|h/h|g" \ -e "s|regular empty file,|r/r|g" -e "s|fifo,|p/p|g"

매우 느리게 수행됩니다. 5~6분 동안 휴식한 후 몇 초 동안 회복해야 합니다. 다른 모든 장착 지점에서도 마찬가지입니다. 12시간이 지나도 실행이 완료되지 않습니다.

ext4xfs이러한 느린 동작은 장치 유형 에서는 관찰되지 않습니다.

테스트로 NFSServer1에서 동일한 find 명령을 실행해 보았는데 꽤 빨랐습니다. 전체 실행 프로세스는 약 40분 내에 완료됩니다. 하지만 NFS 서버에 액세스할 수 없습니다. NFS 서버 팀에 다음과 같은 다른 설치 옵션을 사용해 보도록 요청했습니다.ntfs-3g 매뉴얼 페이지, 하지만 그건 도움이 되지 않습니다.

NFS 파티션의 읽기 성능을 향상시킬 수 있는 방법이 있다면 fuseblk정말 감사하겠습니다.

매우 감사합니다!

답변1

FUSE는 사용자 공간의 파일 시스템입니다. 컨텍스트 전환 오버헤드로 인해 커널의 파일 시스템만큼 빠르지는 않습니다. find위와 같이 파일 시스템 집약적인 작업을 수행해야 하는 경우인 것 같습니다.

그래서.

  • NTFS3 커널 드라이버(제 기억이 맞다면 Linux 5.15 이상에서 사용 가능)를 사용하거나
  • 모든 데이터를 다른 파일 시스템으로 이동한 번(다시 필요한 경우 NTFS로 동기화) 또는
  • 반가상화된 Windows Server VM을 실행하여 NFS를 통해 파일 시스템 제공

개인적으로 나는 두 번째 옵션을 강력히 선호합니다. 해당 파일 시스템에 전혀 적합하지 않은 파일 시스템의 항목에 영구적으로 액세스하는 이유는 무엇입니까? 우리는 실제 데이터가 40GB 미만이라는 것을 이야기하고 있습니다. 그것은 아무것도 아닙니다.

내 말은, 당신은니드포스피드 팀. 누군가 NFS를 통해 귀하의 데이터에 액세스하기 위해 누군가를 고용했습니다. NTFS로의 직접 내보내기를 지원하는 이유는 저와는 조금 다릅니다.

관련 정보