[Ubuntu] 우분투의 시스템 구조[Ubuntu] 우분투의 시스템 구조

Posted at 2018. 7. 19. 17:45 | Posted in Linux/Ubuntu
반응형



 우분투는 리눅스 배포판의 한 종료이다. 따라서 기본적으로 리눅스의  시스템 구조를 가지고 있다. 리눅스 배포판들은 겉으로 보이는 모양이 많이  다를 수 있지만 그 내부 시스템 구조는 일관성을 띄고 있다. 그래서 콘솔을 이용하게 되면 리눅스 시스템에 직접 접근해서 작업을 수행할 수 있어서, 리눅스 배포판 종류와 상관없이 거의 비슷하게 사용할 수 있다는 장점이 있다. 물론 리눅스 배포판들 사이에 시스템 구조가 완전히 동일하지는 않기 떄문에 차이가 있는 부분은 따로 익혀야 한다.




■ 우분투의 파일 시스템 구조




 우분투를 사용하기 위해서는 우분투가 컴퓨터에 설치되어 있어야 하고, 우분투가 설치되기 위해서는 적절한 저장 장치가 있어야 한다. 대부분은 하드디스크나 SSD에 설치할 것이다. 또한 우분투가 설치된 공간 외에 사용자가 자료를 저장하거나 프로그램을 설치할 수  있는 공간도 필요하다.


 이렇게 저장 장치에 우분투를 설치하고 사용자가 데이터를 저장하기 위해서는 파일시스템을 사용할 수 있도록 영역을 설정해야 한다. 이를 일반적으로는 "저장 장치를 포맷(Format)한다" 라고 이야기 한다. 이는 MS윈도우를 사용하는 경우도 마찬가지인데 MS윈도우 사용자라면 MS윈도우를 설치할 때 저장 장치를 새롭게 포맷하게 된다. 그러면  C:라는 드라이브가 하나 생기게 된다. 물론 드라이브를 더  만들 수 있다.



:: Windows 10의 드라이브 구조 ::



 위 이미지는 MS윈도우 운영체제에서 C:D:가 있는 것을 알 수 있다. 이런 경우  보통은 컴퓨터에 저장 장차가 2개가 연결되어 있는 경우이거나 혹은 저장 장치 하나에  파티션 영역을 나누어 C:D:를 만들어 줄 수 있다. 이렇게 드라이브를 따로 가지게 되면 C:를 포맷해도 D:포맷되지  않기 때문에  개인 자료 백업이나 자료를 보관하는 데 편리하다.


 우분투와 MS윈도우가 각각 저장 장치를 포맷하고 쓴다는 점은 같지만, 문제는 서로 다른 파일 시스템을 쓰기 때문에 다른 형식으로 저장 장치를 포맷한다는 점이다. 즉, 우분투는 MS윈도우의 파일 시스템을 인식할 수 없고, MS윈도우는 우분투의 파일 시스템을 인식할 수 없다.





# 우분투의 파일시스템 구조


 -. 우분투는 MS윈도우와 같이 드라이브(C:나 D:)라는 개념이 없다.

 -. 우분투에는 파일 시스템은 단 하나의 파일 시스템으로 구성되어야 한다.

    (쉽게 말해  우분투는 무조건 C:만 존재해야 한다는 것이다.)

 -. 이는 리눅스 시스템의 공통된 특징으로 다른 리눅스 배포판도 마찬가지이다.




# 우분투 파일시스템의 최상위 루트(root) 디렉토리


 -. 우분투의 파일 시스템의 최상위는 루트 디렉토리(/)라고 부르는 공간이다.

   이는 MS윈도우로 비유하자면 C:\와 비슷한 것이다.(C: 드라이브의 가장 최상위 폴더는 C:\ 이기 때문이다.)


 -. 리눅스는 드라이브라는 개념이 없고 무조건 루트 디렉토리(/)부터 존재하기 때문에 다른 저장장치에 접근하려면

   특정 디렉토리를 해당 저장 장치에 연결해서 접근해야 한다.




① 저장 장치(HDD, SSD)를 각각의 디렉토리로 연결하는 마운트(mount)


 · 우분투는 저장 장치가 여러 개가 존재할 경우 각각의 저장 장치를 각각의 디렉토리에 연결하게 된다. 이를 우분투는 마운트(mount)라고 한다.

 · 마운트를 하게  되면 특정 디렉토리를 다른 저장 장치로 보여주는 통로로 설정하게 된다.



:: /other_disk에 다른 저장장치가 마운트된 경우 ::



 

 · 저장 장치 하나는 운영체제가 설치되어 부팅이 되는 주 저장 장치 일 테니 저장 장치는 반드시 루트(/) 디렉토리에 마운트되어 있게 된다.
 · 다른 또 하나의  저장 장치를 사용하고 싶다면, 루트 디렉토리에서 /other_disk라는 디렉토리를 만들고 다른 2번째 저장 장치를

   /other_disk에 마운트 하게 되면 해당 저장 장치를 사용할 수 있게 된다.


:: 저장 장치 하나에 2개 파티션을 연결한 경우 ::


 · 위의 경우에는 1번 저장장치에 파티션 #01루트(/) 디렉토리마운트 한 다음 /other_partiton이라는 폴더를 만들고

    해당 디렉토리에 파티션 #03을 마운트 한경우이다.





② CD-ROM이나 USB 메모리 스틱을 사용하는 경우


 · CD-ROM이나 USB를 사용하는 경우 전부 특정 디렉토리에 마운트 된다.


저장장치

 마운트 되는 디렉토리 경로

CD-ROM

 /media/cdrom 

USB 메모리 스틱

 /media/[USB명] 


 · cd 명령을 이용해서 해당 디렉토리로 이동하면 저장된 내용을 볼 수 있다.




# 루트 디렉토리(/)의 장 · 단점


◎ 장점 : 파일시스템의  저장 공간을 늘리기에 매우 용이하다.

  윈도우 같은 경우는 C: 드라이브의 용량이  정해지면 그 용량만큼만 사용할 수 있다. 만약 C: 용량이 부족하게 되면 저장 장치를 새로 추가한 후에 D: 를 만들어  준다. 그래도 부족하면 저장 장치를 또 추가하면 되는데 그 때마다 드라이브 개수가 늘어나게  된다. 하지만 우분투의 경우 저장 장치에 용량이 부족해지면 새로운 저장 장치를 추가로 장착한 후에 특정 디렉토리에 마운트만 해주면 그만큼 용량이 늘어나게 된다. 드라비으 형태로 저장 장치가 따로 분리되는게 아니라 하나의  파일시스템에 포함되기 때문에 용량을 추가하기가 쉽다.



◎ 단점 : 저장 장치가 어떻게 파일시스템과 연동되고 있는직 직관적으로 알기가 어렵다

 어떤 디렉토리가 정말 일반 디렉토리인지 아니면 다른 저장장치를 마운트한 디렉토리인지 디렉토리 구조 형태만 봐서는 차이를 알 수가 없다. 따라서 어떤 디렉토리에 어떤 장치가 마운트되었는지 알기 위해서는 프로그램을 이용해야 한다.



① GUI에서 마운트 위치 확인


:: Disks 실행 화면 ::


 -. 왼쪽 리스트는 현재 컴퓨터에 연결된 저장 장치 목록을 보여준다.

 -. 오른쪽에는 선택된 저장 장치의 다양한 정보(파티션, 마운트된 위치, 파일시스템 타입 등)를 보여준다.




② 콘솔창에서 마운트 정보 확인


 $ df


 -. 콘솔창에서 마운트 정보를 알고 싶다면 df라고 입력하면 된다.


 

Filesystem

1K-blocks

Used

Available

Use%

Mounted on


/dev/sda1

64891708

8920144

52652220

15%

/


none

4

0

4

0%

/sys/fs/cgroup


udev

491516

4

491512

1%

/dev


tempfs

101420

1296

100124

2%

/run


none

5120

0

5120

0%

/run/lock


none

507092

1028

506064

1%

/run/shm


none

102400

16

102384

1%

/run/user


 -. 위의 명령결과 표를 살펴보면 /dev/sda1라는 파일시스템이 루트(/) 디렉토리에 마운트되어 있는걸 확인 할 수 있다.

 -. 실제 저장 장치는 파일시스템 이름이 /dev/sda넘버 형태로 표현된다.

 -. 아래에 있는 다른 파일시스템은 실제 저장 장치를 디렉토리로 마운트한게 아니라

    시스템 관리 목적으로 사용되는 특수한 파일시스템을 디렉토리에 마운트한 것들이다.




 $ mount

 /dev/sd1 on / type ext4 (rw, errors=remount-ro)

 proc on /proc type proc (rw, noexec, nosuid, nodev)

 sysfs on /sys type sysfs(rw, noexec, nosuid, nodev)

 none on /sys/fs/cgroup type tmpfs (rw)

 none on /sys/fs/fuse/connections type fusectl (rw)

 none on /sys/kernel/debug type debugfs (rw)

 none on /sys/kernel/security type securityfs (rw)


 -. 좀 더 세부적인 내용을 보고자 한다면, mount라고 입력하면 된다.

 -. 위 결과값을 살펴보면 /dev/sd1 저장 장치가 역시 루트(/) 디렉토리에 마운트되어 있고,

    파일시스템은 ext4이며, 읽기 and 쓰기가 모두  가능한 상태임을 알 수 있다.





■ 우분투의 디렉토리 구조




 -. 우분투의 디렉토리 구조에서 가장 큰 특징은 운영체제의 다양한 시스템 파일들이 한곳에 모여있는게 아니라 많은 디렉토리에 분산되어 있다는 점이다.
 -. 이는 우분투 뿐만이 아니라 리눅스 기반의  배포판들의 특징이다.

 $ ls -l 

 



:: 우분투의 디렉토리 구조 ::





bin

 -. 실행파일들을 모아놓은 디렉토리이다.

 -. cp, rm 같은 명령어들의 실행파일이 이 폴더에 존재한다.

 -. 그렇다 시스템에  존재하는 모든 실행파일들이 이 디렉토리에 있는 건 아니다.



② sbin

 -. 시스템 관리자용 실행파일들을 모아놓은 디렉토리다.

 -. bin 폴더와의 차이점은 여기에 있는 실행파일은 시스템을 관리하거나 수정할 때 사용하는 명령어들이라는 점이다.



③ etc *

 -. 환경설정 파일들을 모아놓은 디렉토리다.

 -. MS윈도우 같은 경우 환경 파일이 레지스트리(Registry)라 불리는 영역에 저장되거나 각각의 프로그램 폴더에 저장되는 경우가 많지만

   우분투에서는 대부분 이 디렉토리에  담아 놓는다.



④ dev

 -. 장치를 접근할 수 있는 파일들이 담겨 있다.

 -. 장치를 접근할 수 있는 파일이라는 말이 좀 생소한데, 리눅스에서는 전통적으로 모든 장치를 파일로 표현한다.

 -. 예를 들어 /dev/tty 파일에 데이터를 쓰면 실제로 저장 장치에 해당 내용이 저장되는 게 아니라 해당 장치로 데이터가 전송되는 구조이다.

 -. 좀더 자세히 알려면 많은 지식이 필요하고, 일반 사용자들은 깊게 이해하지 않아도 되므로 이 정도만 알아도 된다.



⑤ lib

 -. 시스템에서 사용하는 라이브러리 파일들이 존재한다.

 -. 라이브러리 파일은 어떤 실행파일이 실행될 때 필요한 기능들을 담고 있는 파일을 의미한다.

 -. MS윈도우에서는 DLL이란 파일을 자주 볼 수 있는데, 라이브러리 파일도 이와 비슷한 역할을 한다.



⑤ home *

 -. 사용자 데이터를 저장하고 있는 디렉토리다.

 -. 이 디렉토리의 하위 디렉토리를 살펴보면 각각 사용자 계정과 동일한 디렉토리들이 나열되어 있는 것을 볼 수 있다.

 -. 각각의 사용자가 디렉토리들은 각자의 홈 디렉토리로 지정된다.

    따라서 콘솔을 시작하면 항상 'home/자기계정명' 디렉토리에서 시작하게 된다.



⑥ usr

 -. 사용자가 사용하는 프로그램들이 있는 디렉토리다.

 -. 운영체제에 설치되는 대부분의 응용프로그램들이 이 디렉토리에 설치된다.



⑦ sys, proc

 -. sys, proc 디렉토리들은 특이하게 실제로 존재하는 파일을 담고 있는 디렉토리가 아니다.

 -. sys, proc 디렉토리들은 현재 시스템의 상태나 정보들을 알려주는 파일들 담고 있다.

 -. sys, proc의 파일들은 실제 저장 장치에 있는 것이 아니라 메모리상에 존재한다.

   예를 들어 /sys/bus/cpu/device 디렉토리에는 현재 컴퓨터에 장착된 프로세서의 정보를 담고 있는 파일이 존재한다.

   이 파일의 내용은 우분투가 부팅될 때마다 새롭게 생성되는 것이다.




 


반응형
//