LabHub

운영체제 · 파일시스템 · 실습

이름을 지워도 파일은 남는다

LabHub 에서 이어서 보기

목표

읽기에서 "이름과 실체는 따로 있다" 를 읽었습니다. 여기서는 그 분리가 실제로
어떤 동작을 만들어 내는지 손으로 확인합니다.

여덟 단계를 마치면 이런 질문에 답할 수 있게 됩니다. 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개

  1. 같은 파일인지 어떻게 아는가
  2. 링크 수는 무엇을 세는가
  3. 지운 파일을 읽는다
  4. 공간을 붙잡고 있는 범인을 찾는다
  5. 원본을 옮기면 무엇이 깨지는가
  6. 설정 파일을 안전하게 갈아 끼운다
  7. 이름 갈아 끼우기가 멈추는 곳
  8. df 가 거짓말처럼 보일 때