리눅스의 놀라운 파일 관리 능력
제가 쓰는 리눅스는 Mint21 버전이고, os-relese 정보는 아래와 같습니다.
이 컴퓨터의 /media 폴더안에 아래와 같은 파일들이 있습니다. 대략 2.6G, 1.0G, 3.7G, 107K 파일입니다. /media 폴더는 네트웍드라이브이고 홈폴더는 로컬디스크에 있습니다.
여기서 largefile 과 largefile3 를 홈폴더에 복사하면서 시간을 측정해보면 아래와 같습니다. (더 정확한 시간측정 방법이 있을것 같긴한데 뭐 이걸로도 충분하고요. ㅎㅎ)
대략 27초, 37초 정도이니까 파일크기와 대략 비례하는 시간이 걸렸습니다.
다음 방금 복사한 파일을 홈폴더에서 지웠습니다.
그리고 다시 복사해보면
2초, 3초 밖에 걸리지 않습니다. OS가 지운파일과 복사하려는 파일이 동일하다는 것을 알아차리고, 지운파일을 되살리는 걸까요 ?
(이것만 해도 믿을수가 없는데)
이번에는 복사된 파일을 지우고, 복사된 파일에 small_file 을 덧붙여써서 소스파일을 변형하였습ㄴ디ㅏ.
그리고 다시 복사해보면, 소스파일이 바뀌었음에도 불구하고 순식간에 복사 됩니다.
복사가 제대로 되었나 파일 비교해보면 제대로 복사가 되어있습니다.
리눅스의 파일 다루는 솜씨가 이정도로 interlligent 할까요 ?
파티션 포맷은 리눅스 기본 ext4 이고요. 참고로 openmediavault 6가 깔려있는 debian 11 에서 똑같이 해보면, 파일 삭제후에 다시 복하하면 처음하고 동일한 시간 잡아먹고요.
apfs라고.. 애플에서 쓰는게 있습니다.
1억5천만 테라바이트도 복사하면 1초 미만이랍니다.
ㅌㅌㅌㅌㅌㅌㅌㅌ
애플은 복사가 곧 하드링크라서 그렇습니다.
복사하고 수정하면 그때 복제가 이루어져요.
파일시스템 개발자들이 신기할 따름입니다..
리눅스는 한번 읽은 것은 램에 캐시되고, 쓰기는 램이 남는 이상 항상 캐시 되더라구요.
램에서 읽어서 램에다가 쓰고, 디스크에 여유 생기면 붙여넣는 방식이죠.
왜.. 왜 윈도는 못하는가..!!
윈도 빼고는 스토리지를 보조, 램을 주기억 장치로 잘 쓰는데..
윈도는 보조저장소를 너무 주 저장소처럼 써요..
윈도 12에 refs 들어간다고 하는데
얘넨 기대해봐도 될지 모르겠네요.
Lazy evaluation , 지연 평가 기법이군요...
특정 C++ 스트링 객체를 복사할때는 레퍼런스만 옮기고 , 실제로 복사가 되는건 쓰기가 실제로 이루어질때 였는데..
비슷한 기법이군요...
그게 리눅스가 처음부터 시작했던 파일시스템
ext 파일시스템의 최대 장점이자 최대 단점입니다.
비동기 파일시스템이라고 합니다.
ups가 필요한 주된 이유이기도 합니다.
삭제, 복사 등의 명령어 후에 추가로 sync 명령어를 중간 중간에 입력하여 다시 테스트 해보시길 바랍니다.
sync 명령어가 처리되는 시간도 복사, 삭제에 포함되어야 하구요.
ex) time cp a.dat b.dat
cmt alert