내 서버의 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