파일 시스템 명령은 디렉토리의 특정 파일에만 마운트됩니다.

파일 시스템 명령은 디렉토리의 특정 파일에만 마운트됩니다.

NFS를 통해 마운트된 VM에 파일 시스템이 있습니다. 이 문제는 VM 자체에서 복제되므로 더 이상 NFS와 관련이 없다고 생각됩니다.

파일 시스템의 형식은 다음과 같습니다.

/
  dir_a
    file_a
    file_b
    ...
    special.csv
  dir_b
    file_a
    file_b
    ...
    special.csv

각 디렉터리 아래에 있는 이러한 파일은 거의 동시에 마지막에 기록됩니다 special.csv. special.csv다음과 같이 작성됩니다.

import pandas as pd
import os
df = pd.Dataframe()
# populate small dataframe (~30 rows of 5 columns of ints/doubles and 1 column of 60char str)
hidden_path = os.path.join(base_dir, '.special.csv')
actual_path = os.path.join(base_dir, 'special.csv')
df.to_csv(hidden_path, index=False)
os.replace(hidden_path, actual_path)

를 실행하는 동안 rm -rf dir_a예상보다 훨씬 오래 걸리는 것을 발견했습니다(약 30개의 파일이 있고 총 크기가 약 5GB인 디렉터리의 경우 몇 분 정도 소요). 추가 조사 결과 이 special.csv​​파일을 제외하고 디렉터리의 다른 모든 파일이 즉시 삭제된 것으로 나타났습니다 .

런타임에서 시스템 호출이 완료되고 있음 strace -T rm -Rf special.csv을 발견했습니다 .unlinkat~89s

이 파일이 디렉터리의 다른 파일과 다르게 동작하는 이유가 무엇인지 잘 모르겠습니다 special.csv. 특히 디렉터리의 다른 파일이 비슷한 방식(약 os.replace)으로 생성되었기 때문입니다. 내가 생각할 수 있는 유일한 차이점은 쓰기 전에 다른 파일을 터치하고 pyarrow.

special.csv모든 종류의 수정이나 삭제에는 시간이 더 오래 걸리는 것 같습니다 touch special.csv. 예를 들어 1분 이상 걸릴 수도 있습니다. touch special.csv그러나 그렇다면 시간 rm special.csvtouch special.csv오래 걸리는 반면 이것은 rm special.csv순간적입니다. 이것이 디스크 캐시와 관련이 있는지 확실하지 않습니다.

편집하다: 저장 매체는 NAS가 아닌 Linux 파일 시스템으로 마운트됩니다. 근본 원인은 밝혀지지 않았지만, 저장 매체를 다시 시작하면 문제가 해결된 것 같습니다.

답변1

NFS를 사용하여 연결하려는 NAS를 자세히 살펴보는 것이 좋습니다. "정크" 기능이 있나요? 켜져 있나요?

NFS 마운트는 실제로 파일을 삭제하지 않지만 대신 원격 시스템에 파일 삭제를 요청합니다. NAS는 필요할 경우 나중에 복원할 수 있도록 이러한 대용량 파일을 휴지통으로 이동할 가능성이 높습니다. 원격 시스템은 파일이 삭제되었음을 NFS에 보고하지만 실제로는 삭제되는 중입니다.

관련 정보