소규모 백업으로 정확하고 일관되게 백업할 수 있도록 병합된 폴더를 사용하는 응용 프로그램이 어떤 작업을 수행하는지 알아야 하기 때문에 이 동작이 필요합니다.
auf를 사용하는 스크립트를 마이그레이션하기 때문에 auf에서 했던 것처럼 강제로 수행해야 하지만 단지 이것 때문만은 아닙니다. 이 동작은 제가 생성하고 잘 작동하는 레이어에 필수입니다.
내 모든 작업 분기(디렉터리)는 동일한 폴더(즉, 병합된 폴더가 있는 위치)의 하위 폴더이므로 동일한 여유 공간을 공유합니다.
이러한 옵션은 훌륭하게 작동합니다.
defaults,allow_other,use_ino,category.action=ff,category.create=ff,category.search=ff
그러나 병합된 폴더의 파일을 수정하면 원본 폴더에서 파일이 삭제됩니다. :O 및 발견된 첫 번째 폴더에 수정된 파일이 생성/업데이트됩니다.(,
원본 폴더 파일을 건드리면 안 됩니다.) :(.
덮어쓰기가 여러 개 있으면 모두 삭제하고 첫 번째 폴더에 마지막 수정 사항만 남깁니다. :O, 이것이 좋다는 것은 알지만 작동하지 않습니다. 내 스크립트/사용 사례입니다.
모든 지점의 폴더와 하위 폴더를 읽기 전용으로 설정하면 파일이 삭제되지 않으므로 모든 업데이트가 첫 번째 폴더로 이동됩니다. 그러나 여전히 모든 분기(하위 폴더 및 파일)를 RW로 만들고, 그 안의 내용을 변경하고, 다시 RO로 만드는 것을 잊지 마세요. 그렇지 않으면 상황이 복잡해질 것입니다.
그래서 나는 여전히 그것이 AUFS처럼 동작하도록 할 수 없습니다. 가깝지만 같지는 않습니다.
추신: ubuntu22.04에는 더 이상 auf가 없으므로 돌아갈 수 없습니다.
답변1
당신은 할 수 없습니다. mergefs는 오버레이/CoW 파일 시스템이 아닙니다.
https://github.com/trapexit/mergerfs#how-it-works
mergefs는 aufs 및 overlayfs에서 CoW(기록 중 복사) 또는 화이트아웃 동작을 지원하지 않습니다. 읽기 전용 파일 시스템을 마운트하고 쓸 수는 없습니다. 그러나 mergefs는 새 파일을 생성할 때 읽기 전용 드라이브를 무시하므로 읽기-쓰기 및 읽기 전용 드라이브를 혼합할 수 있습니다. 또한 드라이브 간에 데이터를 분할하지 않습니다. RAID0/스트라이핑이 아닙니다. 그것은 단지 다른 파일 시스템의 결합일 뿐입니다.
답변2
나는 이것을 사용하고 있습니다 :
mergerfs -o "defaults,allow_other,use_ino,category.action=ff,category.create=ff,category.search=ff" "FolderWriteHere:Folder1:Folder2" FinalMergedFolder
이제 병합된 모든 폴더(Folder1, Folder2 등)를 읽기 전용으로 만들어야 합니다!
그러나 "mergerfs"에서 "장치에 남은 공간이 없습니다"라는 오류가 표시되면 FolderWriteHere에 파일을 쓰려고 할 때 FinalMergedFolder에 최소 4.2GB의 여유 공간이 있는지 확인해야 합니다(적어도 mergefs 2.33의 경우). .3 이 제한이 있습니다. 즉, 여유 공간이 4.2GB 미만으로 떨어지면 오류가 다시 발생한다는 의미입니다. 이유를 아는 사람 있나요?
또한 이 병합에는 단일 파티션/미디어/드라이브/디스크(모든 폴더가 동일한 파티션을 공유함)만 사용하므로 여러 파티션/디스크에서 어떤 일이 발생할지 알 수 없습니다.