운영체제 · 파일시스템 · 실습
이름을 지워도 파일은 남는다
목표
읽기에서 "이름과 실체는 따로 있다" 를 읽었습니다. 여기서는 그 분리가 실제로
어떤 동작을 만들어 내는지 손으로 확인합니다.
여덟 단계를 마치면 이런 질문에 답할 수 있게 됩니다. df 는 여유가 있다는데
왜 쓰기가 실패하는가, 로그를 지웠는데 왜 공간이 안 돌아오는가, 설정 파일을
어떻게 갈아 끼워야 읽는 쪽이 반쯤 쓰인 파일을 보지 않는가.
작업 디렉터리
mkdir -p /root/fs && cd /root/fs모든 산출물은 여기에 만듭니다.
쓸 도구
stat -c '%i %h %d %n' 파일 # 아이노드, 링크 수, 장치 번호, 이름ls -i # 아이노드 번호를 함께 보기ls -l /proc/<PID>/fd # 그 프로세스가 열어 둔 파일들stat 의 %i 가 실체의 신분증입니다. 두 이름의 %i 가 같으면 같은 파일입니다.
크기와 내용이 같은 것과는 다릅니다.
채점 방식
세 단계는 채점기가 여러분이 만든 스크립트를 직접 돌립니다.
hold.py 채점기가 만든 파일을 넘겨 주고, 이름을 뗀 뒤에도 읽어 내는지 봅니다findleak.sh 채점기가 직접 유출을 만들어 놓고, 그것을 찾아내는지 봅니다. 유출이 없어진 뒤에도 계속 보고하면 실패입니다swap.sh 채점기가 대상 파일을 열어 둔 채로 여러분의 교체를 시킵니다. 열어 둔 디스크립터로 새 내용이 보이면 대상에 직접 쓴 것이므로 실패입니다말로 설명한 것은 채점하지 않습니다. 동작하는 것만 봅니다.
단계 8개
- 같은 파일인지 어떻게 아는가
- 링크 수는 무엇을 세는가
- 지운 파일을 읽는다
- 공간을 붙잡고 있는 범인을 찾는다
- 원본을 옮기면 무엇이 깨지는가
- 설정 파일을 안전하게 갈아 끼운다
- 이름 갈아 끼우기가 멈추는 곳
- df 가 거짓말처럼 보일 때