소프트웨어 RAID를 사용하여 Samba를 통한 느린 전송

소프트웨어 RAID를 사용하여 Samba를 통한 느린 전송

저는 다음과 같이 구성된 미니 PC(Intel Celeron J4005, 4GB RAM, Intel Gigabit LAN)를 가지고 있습니다.

  • Ubuntu(5.4.0-81-일반, sda에 설치됨)
  • 삼바(버전 4.11.6 - 우분투)
  • FTP(vsftpd, 암호화 없음)
  • RAID5(mdadm, md0:sdb-sdc-sdd, USB-SATA)

RAID 어레이는 Samba와 FTP를 통해 공유되지만 FTP를 제거하고 모든 주요 클라이언트는 Windows 시스템입니다. 문제는 Samba 공유를 통해 얻는 속도가 FTP보다 훨씬 느리다는 것입니다.

장비 방법 읽기 속도(Mbyte/s, 대용량 파일 1개)
MD0 현지의 ~220
MD0 랜, FTP ~115(네트워크 제한)
MD0 랜, 삼바 ~48
MD0 LAN, Samba, 두 번째 실행(메모리에 캐시됨) ~115(네트워크 제한)
sda 랜, 삼바 ~115(네트워크 제한)

기본 Samba 설정과 현재 설정(아래 참조)을 사용해 보았지만 동일한 결과를 얻었습니다. 테스트 사이에 캐시를 새로 고쳤습니다.

iostat 출력 예(LAN, Samba, 첫 실행):

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
md0            793.00 433408.00     0.00   0.00    0.00   546.54    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sda              0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sdb            254.00  16768.00     8.00   3.05   14.74    66.02    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    3.27  84.80
sdc            171.00  16896.00    93.00  35.23    2.99    98.81    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.32  60.80
sdd            161.00  16640.00   101.00  38.55   11.74   103.35    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    1.57  96.00

iostat 출력 예(LAN, FTP, 첫 실행):

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
md0           1828.00 292480.00     0.00   0.00    0.00   160.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sda              0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sdb            458.00  39040.00   153.00  25.04    1.66    85.24    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.18  75.60
sdc            457.00  38976.00   152.00  24.96    1.45    85.29    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.09  70.40
sdd            457.00  38976.00   152.00  24.96    1.59    85.29    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.15  75.20

문제가 무엇인지 모르겠습니다. 누군가 나를 도와줄 수 있습니까? 아니면 적어도 어디에서 조사를 시작해야 합니까?


삼바 구성:

[global]
   workgroup = WORKGROUP
   min protocol = SMB3
   
   log level = 1
   socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536 IPTOS_LOWDELAY SO_KEEPALIVE
   use sendfile = true
   aio read size = 65536
   aio write size = 65536
   read raw = yes
   write raw = yes
   getwd cache = yes
   acl allow execute always = true
   
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user

[Share]
  path = /media/hdd
  writable = yes
  valid users = myuser
  directory mode = 0770
  create mode = 0660

RAID 어레이 구성:

/dev/md0:
           Version : 1.2
     Creation Time : Tue Sep  7 13:19:26 2021
        Raid Level : raid5
        Array Size : 976441344 (931.21 GiB 999.88 GB)
     Used Dev Size : 488220672 (465.60 GiB 499.94 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Tue Sep 9 14:37:52 2021
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 64K

Consistency Policy : bitmap

파일 시스템 정보:

root@MiniPC:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.8G     0  1.8G   0% /dev
tmpfs           371M   12M  360M   3% /run
/dev/sda2        58G  3.4G   55G   6% /
tmpfs           1.9G   12K  1.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           500M   79M  422M  16% /var/cache/apt
tmpfs           500M     0  500M   0% /tmp
tmpfs           500M     0  500M   0% /var/backups
tmpfs           500M  2.2M  498M   1% /var/log
tmpfs           500M     0  500M   0% /var/tmp
/dev/sda1       511M  5.3M  506M   2% /boot/efi
/dev/md0        917G  356G  562G  39% /media/hdd

root@MiniPC:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0  59.6G  0 disk
├─sda1    8:1    0   512M  0 part  /boot/efi
└─sda2    8:2    0  59.1G  0 part  /
sdb       8:16   0 465.7G  0 disk
└─sdb1    8:17   0 465.7G  0 part
  └─md0   9:0    0 931.2G  0 raid5 /media/hdd
sdc       8:32   0 465.8G  0 disk
└─sdc1    8:33   0 465.8G  0 part
  └─md0   9:0    0 931.2G  0 raid5 /media/hdd
sdd       8:48   0 465.8G  0 disk
└─sdd1    8:49   0 465.8G  0 part
  └─md0   9:0    0 931.2G  0 raid5 /media/hdd

답변1

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

aio 읽기 크기(S)

If this integer parameter is set to a non-zero value, Samba will read from files
asynchronously when the request size is bigger than this value.
Note that it happens only for non-chained and non-chaining reads and when
not using write cache.

The only reasonable values for this parameter are 0 (no async I/O) and 1 (always do async I/O).

same is said for aio write side

smb.conf에서 이 두 가지를 모두 제거하는 것이 좋습니다. 나는 smb.conf에서 이들 중 하나를 사용한 적이 없습니다.

win10 컴퓨터를 사용하는 1gbps 유선 네트워크를 통해 하루 종일 112MB/초의 읽기/쓰기 속도를 얻습니다. 여기에서 내 smb.conf 글로벌 섹션을 참조하세요.

[global]
    workgroup = SAMBA
    security = user

    passdb backend = tdbsam

    printing = bsd
    printcap name = /dev/null
    load printers = no
    disable spoolss = yes
  # cups options = raw

    smb encrypt = required
    client min protocol = SMB3
    client max protocol = SMB3

RHEL 7에서 조정된 구성 파일은 참조용입니다.

> tuned-adm list
    Available profiles:
    - atomic-guest                - Optimize virtual guests based on the Atomic variant
    - atomic-host                 - Optimize bare metal systems running the Atomic variant
    - balanced                    - General non-specialized tuned profile
    - cpu-partitioning            - Optimize for CPU partitioning
    - default                     - Legacy default tuned profile
    - desktop                     - Optimize for the desktop use-case
    - desktop-powersave           - Optmize for the desktop use-case with power saving
    - enterprise-storage          - Legacy profile for RHEL6, for RHEL7, please use throughput-performance profile
    - hpc-compute                 - Optimize for HPC compute workloads
    - laptop-ac-powersave         - Optimize for laptop with power savings
    - laptop-battery-powersave    - Optimize laptop profile with more aggressive power saving
    - latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
    - mssql                       - Optimize for MS SQL Server
    - network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
    - network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
    - oracle                      - Optimize for Oracle RDBMS
    - powersave                   - Optimize for low power consumption
    - server-powersave            - Optimize for server power savings
    - spindown-disk               - Optimize for power saving by spinning-down rotational disks
    - throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
    - virtual-guest               - Optimize for running inside a virtual guest
    - virtual-host                - Optimize for running KVM guests
Current active profile: latency-performance

답변2

SMB에 비해 FTP는 대용량 파일을 전송할 때 매우 빠르고 효율적입니다. 작은 파일의 경우 어려울 수 있지만 전반적으로 FTP 파일 전송 프로토콜의 속도가 더 좋습니다. SMB에서 짧은 메시지를 사용하면 네트워크 대기 시간이 민감해져서 속도가 느려집니다.

에서:https://cloudinfrastructureservices.co.uk/ftp-vs-smb-whats-the-difference-performance-speed-security/#:~:text=FTP%20is%20extremely%20fast%20and,which%20can%20decrease% 20%20 속도.

관련 정보