리눅스 기초 · 파일과 디렉터리 · 퀴즈
퀴즈: 파일과 디렉터리
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
10GB짜리 로그 파일을 rm 으로 지웠는데 df 의 여유 공간이 전혀 늘지 않았습니다. 가장 먼저 의심할 것은?
- 파일시스템이 손상되어 fsck 가 필요하다
- rm 이 실패했는데 오류를 못 봤다
- 디스크 캐시가 아직 반영되지 않았다
- 그 파일을 아직 열고 있는 프로세스가 있다
원래 파일 이름을 지웠는데 하드 링크는 열리고 심볼릭 링크만 깨졌습니다. 이유는?
- 하드 링크는 같은 inode의 또 다른 이름이고, 심볼릭 링크는 지워진 경로 문자열을 가리키기 때문에
- 하드 링크가 원본 데이터를 별도 파일로 자동 복사했기 때문에
- 심볼릭 링크는 파일 내용을 캐시하지 못하기 때문에
- 하드 링크만 다른 파일시스템의 inode를 계속 참조할 수 있기 때문에
df 는 여유가 있다고 하는데 파일 생성이 No space left on device 로 실패합니다. df -i 를 확인해야 하는 이유는?
- df -i 가 df -h 보다 정확한 블록 사용량을 보여 주기 때문
- df -i 는 삭제된 열린 파일까지 포함해 세기 때문
- df -h 는 캐시된 값이고 df -i 는 실시간 값이기 때문
- inode 는 파일 개수 자원이라 블록과 따로 고갈될 수 있기 때문
같은 파일시스템 안에서 1GB 파일을 mv 로 옮겼더니 즉시 끝났습니다. 이유는?
- 커널이 백그라운드로 복사를 계속하고 있다
- 파일이 페이지 캐시에 모두 올라와 있었기 때문
- 디렉터리 엔트리만 바뀌고 데이터 블록은 그대로이기 때문
- mv 는 하드 링크를 만든 뒤 원본을 지우기 때문에 항상 빠르다
rsync 로 --link-dest 세대 백업 디렉터리를 다른 서버로 옮겼더니 용량이 3배가 됐습니다. 원인은?
- 전송 압축 옵션을 빼서 원본 크기로 저장됐다
- 하드 링크 보존 옵션(-H)이 없어 링크가 각각 별개 파일로 복사됐다
- 심볼릭 링크가 가리키는 파일을 따라가 실제 데이터가 복제됐다
- 전송 구간의 블록 단위 중복 제거 기능이 비활성화됐다
삭제된 로그 파일의 내용을 복구하려 합니다. 가장 먼저 하면 안 되는 것은?
- lsof +L1 로 붙잡고 있는 프로세스를 찾는다
- /proc/PID/fd 아래 심링크를 확인한다
- 그 파일을 열고 있던 프로세스를 재기동한다
- /proc/PID/fd/N 을 다른 경로로 복사한다