ext4에서 쓰기 속도가 왜 그렇게 느린가요?

ext4에서 쓰기 속도가 왜 그렇게 느린가요?

내 서버의 ext4 파티션에 쓰는 것이 왜 그렇게 느린지 알아내려고 노력 중입니다. 오프사이트 백업 드라이브를 ExFAT에서 ext4로 다시 포맷했을 때 이 문제를 발견했습니다. 이러한 드라이브를 ExFAT로 포맷하면 쓰기 속도가 약 140-150MB/s로 보입니다. 이제 ext4로 포맷된 동일한 드라이브를 사용하면 약 40MB/s의 쓰기 속도를 볼 수 있습니다.

두 개의 드라이브는 USB 3을 통해 연결된 4TB Western Digital Elements Portable(25A1) 드라이브입니다.

벤치마크를 실행하기 전에 ext4 지연 초기화가 완료되었는지 확인했습니다.

findmnt --target드라이브 중 하나의 출력은 다음과 같습니다.

TARGET          SOURCE    FSTYPE OPTIONS
/mnt/off-site_2 /dev/sdd1 ext4   rw,nosuid,nodev,noexec,noatime

추가 정보(일부는 편의를 위해 의견에서 복사함):

  • 저는 많은 가족용 대용량(1GB~5GB) 파일을 이 드라이브에 동기화하고 있습니다.
  • 모든 파일이 사용 가능한 메모리 양보다 작습니다.
  • 시스템에는 8GB RAM이 설치되어 있으며 일반적으로 512MB 미만을 사용하며 나머지는 캐시에서 사용됩니다.
  • 드라이브에 데이터를 쓸 때 FS가 ExFAT인지 ext4인지에 관계없이 이 Dirty값은 약 1.3GB로 변동됩니다./proc/meminfo
  • 커널은 4.19.0-11-amd64현재 Debian 10에서 사용할 수 있는 최신 버전입니다.
  • 드라이버 모델은 WDC WD40NMZW-11GX6S1입니다. ~에 따르면이것, 이는 SMR 드라이브입니다.
  • 산출dumpe2fs -h /dev/sdd1
root@Server:~# dumpe2fs -h /dev/sdd1
dumpe2fs 1.44.5 (15-Dec-2018)
Filesystem volume name:   Off-site 2
Last mounted on:          /mnt/off-site_2
Filesystem UUID:          d5f29945-6e3c-45d1-98bb-ac2dd404975a
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              244187136
Block count:              976745979
Reserved block count:     48837298
Free blocks:              83988236
Free inodes:              244182173
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Mon Oct  5 15:47:31 2020
Last mount time:          Wed Oct  7 20:09:00 2020
Last write time:          Wed Oct  7 20:32:22 2020
Mount count:              6
Maximum mount count:      -1
Last checked:             Mon Oct  5 15:47:31 2020
Check interval:           0 (<none>)
Lifetime writes:          3433 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      777766d4-df04-4c2c-b503-f7244bf87810
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xbf1db7ae
Journal features:         journal_incompat_revoke journal_64bit journal_checksum_v3
Journal size:             1024M
Journal length:           262144
Journal sequence:         0x00003fdd
Journal start:            0
Journal checksum type:    crc32c
Journal checksum:         0x2a21e235

여기서 문제를 보여 주려고합니다.

# ExFAT drive
root@Server:/mnt/off-site_1/test# dd if=/dev/zero of=test.bin bs=1M count=5000 status=progress
5131730944 bytes (5.1 GB, 4.8 GiB) copied, 23 s, 223 MB/s
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 23.6661 s, 222 MB/s

# ext4 drive
root@Server:/mnt/off-site_2/test# dd if=/dev/zero of=test.bin bs=1M count=5000 status=progress
5173673984 bytes (5.2 GB, 4.8 GiB) copied, 44 s, 118 MB/s
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 58.9746 s, 88.9 MB/s

관련 정보