Медленное чтение миллионов файлов в разделах Fuseblk, совместно используемых через NFS.
У меня две системы Linux: NFSServer1 (RHEL) и NFSClient1 (Ubuntu).
На NFSServer1,ntfs-3g
водитель иldmtool
установлен. NTFS
разделы устройства монтируются выполнением команды:mount -t ntfs-3g -o ro,noatime $devPath $mountPath
Примечание: два раздела/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1
и/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2
являются динамическими разделами диска Windows, полученными с помощью ldmtool
[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)
Суммарно на всех этих разделах около 10 миллионов файлов.
Доступ к этим смонтированным разделам осуществляется из 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.
Далее, на клиенте NFS, когда мы выдаем статистику раздела, используя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 часов.
Это вялое поведение не наблюдается для
ext4
и
xfs
типы устройств.
В качестве теста я попытался выполнить ту же команду find на NFSServer1, это было довольно быстро. Все выполнение завершилось примерно за 40 минут. Однако у меня нет доступа к серверу NFS. Я попросил команду сервера NFS попробовать разные варианты монтирования, как указано на странице руководства ntfs-3g , но это не помогло.
Если есть способ улучшить скорость чтенияfuseblk
разделы по NFS, буду благодарен вам ребята.
Большое спасибо!