OS이야기

슈퍼블록과 마운트

НooпeУ 2012. 1. 5. 22:28
나는 왜 슈퍼블록이랑 마운트가 있어야 하는지 이해가 되질 않았다.
하지만 오늘은 조금 이해한 것 같다.

슈퍼블록은 말 그대로 파일시스템의 실체이다. 즉, 데이터들은 슈퍼블록이 다 관리한다고 생각하면 된다.
그렇다면 이렇게 한번 생각해보자.
/tmp에 있는 모든 하위디렉토리를 /root/tmp에서 똑같이 보고 싶다고 할 때, 슈퍼블록만 존재한다면 똑같은 슈퍼블록을 하나 더 만들어서 이를 해결해야 한다.
이때, 마운트가 있다면 쉽게 문제를 해결할 수 있다.
즉, 파일시스템을 /tmp에 마운트 시키고, /root/tmp에 마운트 시키면 되는 것이다.

이렇게도 생각해보자.
'/'파일시스템에 데이터블록을 다 사용하였다고 가정해보자. 그렇다면 파일을 '/'에 추가할 때 어떻게 되겠는가? 아마도 블록 그룹에 사용할 수 있는 데이터블록이 없으므로 추가하지 못할 것이다.
마운트는 새로운 블록그룹을 생성하고 자신의 부모 블록그룹과 연결하여 트리구조를 만든다.
 

 
이름공간(Namespace)
vfsmount구조체는 어느 하나의 namespace구조체에 속해 있다. 프로세스는 어느 하나의 namespace에서 동작
근데 왜 이게 필요????
init 프로세스가 생성될 때, 최초의 namespace 구조체가 작성되고, 이후의 모든 프로세스에서 동일한 namespace 구조체를 가리킨다. 모든 프로세스가 동일한 namespace를 가리킨다. .. 그렇다면 이미 마운트된놈을 재사용하기 위해 namespace라는 구조체를 만든건가?