
KDE의 파일 관리 구성요소 KIO가 USB 저장장치와 네트워크 파일시스템으로 복사할 때 진행률과 완료 시점을 실제 데이터 기록에 맞추도록 바뀐다. 수정 사항은 2026년 11월 13일 출시 예정인 KDE Frameworks 6.32에 포함된다.
기존에는 파일 데이터를 메모리의 페이지 캐시에 넘기면 write()가 반환돼 복사가 끝난 것으로 표시됐다. 실제 장치 기록은 나중에 이뤄져, USB 저장장치가 계속 쓰는 동안에도 진행 표시가 완료되고 장치를 뽑으면 데이터가 사라질 수 있었다. 네트워크 파일시스템에서는 진행률이 서버가 받은 데이터보다 앞서고, SMB 복사 중 폴더를 열면 목록 표시가 지연되는 문제도 있었다.
KIO는 sync_file_range()를 사용해 데이터 기록을 일정한 크기의 구간으로 나누고, 앞 구간이 기록되는 동안 다음 구간을 복사한다. 구간 크기는 직전 구간의 속도에 따라 조정하며, 최대 크기는 일반적으로 16MiB, CIFS에서는 128MiB다. 이 방식으로 메모리에 남아 장치에 기록되지 않은 데이터는 최대 두 구간으로 제한된다. 이동 작업은 이동식 장치에 데이터 기록이 끝난 뒤 원본을 삭제하도록 바뀌었다. 기록에 실패하면 원본은 남는다.
적용 대상은 KIO가 이동식으로 판별한 장치와 NFS, CIFS, Ceph, GlusterFS, 9p, sshfs, rclone 같은 네트워크 파일시스템이다. 고정 로컬 디스크의 동작은 바뀌지 않는다. 느린 SMB 연결을 이용한 시험에서는 복사 속도가 약 3% 느려졌고, 5MB/s 연결에서 폴더 목록 표시 시간은 변경 전 5~11초에서 1.7초로 줄었다. 측정 결과는 실행마다 달랐으며, 변경 전 복사 다섯 번 가운데 한 번은 공유 폴더의 쓰기 오류로 실패해 비교는 네 차례에 근거한다.
주요 변경은 KIO 병합 요청 2506, 2517, 2518, 2283에 반영됐다. 서로 다른 파일시스템 사이 복사에서 sendfile()을 사용하도록 한 병합 요청 2520도 같은 릴리스에 포함된다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요