[ Basic ] Mount 와 Fdisk

ETC 2013. 4. 22. 14:34

[ 뻘 ]

GNU is not Unix.

http://www.gnu.org/gnu/gnu-history.html


※ GRUB Boot Loader ( Booting 시 정보가 기록된 MBR 을 관리하는 툴/환경 ) - 리눅스 부팅시 e 키를 눌러 접속할 수 있다.

 

 

 

[ File system = 파티션과 Disk Management ( mount ) ]

리눅스의 물리적 장치 장착 후 mount 해주어야 한다.
리눅스의 마운트는 장치를 / 의 디렉토리처럼 보이게 하여, 관리하는 방식을 취하고 있다.

 

[ FDISK ]

FDISK 는 파티션을 관리하는 역할이므로 "하드디스크 장치" 를 대상으로 한다.
파티션을 재분할할 때 이외에는 통상적이다.

Primary ( 주 영역 ) 파티션과 Extend ( 확장 영역 ). Logical ( 논리 영역 ) 으로 구분한다.

 


Extend 는 실제로 사용되는 파티션이 아닌, 그 하위에 생성될 Logical 영역 전체를 감싸는, 일종의
논리 영역 전체를 총괄하는 껍질. 네이밍적 성격이 강하다.

즉 Extend 영역의 생성 없이는 하위의 Logical 파티션 생성이 불가능하다.

통상적으로 Primary 파티션은 한 하드디스크에 총 4개까지 ( 1,2,3,4 ) 생성할 수 있다.

한 하드디스크에 5개 이상의 파티션을 구성해야 할 경우에는 3개까지 Primary 로 잡고, 4번째에
extend 영역을 생성 후 5,6 순으로 Logical 파티션을 생성할 수 있다.

Primary 를 하나만 생성 후, extend 를 생성하여 나머지를 logical 파티션으로 채워도

logical 의 순번은 5번부터 시작한다는 점을 잊으면 안 된다

 ( 만들어지던, 만들지 않던간에 파티션 넘버 1,2,3,4는 Primary 의 영역에 할당되어 있다. )

 

 

# fdisk -l(전체) , fdisk -l [특정 디바이스명](특정 장치만 살펴보기)

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 dbytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00041de5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         791     6144000   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3             791        1313     4194304   82  Linux swap / Solaris
/dev/sda4            1313        2611    10427392    5  Extended
/dev/sda5            1313        1568     2048000   83  Linux
/dev/sda6            1568        1594      204800   83  Linux
/dev/sda7            1594        2611     8171520   83  Linux

 

리눅스 초기 설치시에 세팅했던 부분이 그대로 나와 있다.

※ primary 파티션을 1,2,3,4 전부 생성했을 경우, 그 하드디스크는 더 이상 어떠한 논리 영역 확장이 불가하다.

( 그래서 보통 1,2,3까지 만들고 4를 extend 확장 후 5,6,7 ... 을 logical 파티션을 만든다 )

※ 고로 당연히 extend 파티션은 어떠한 상황에서도 한 개 이상 존재할 수 없다.

하드디스크는 과거 E-IDE 타입과 현재의 SCSI 타입이 있으며, 이는 정보에서 hda1, hda2 ... 또는 sda1, sda2... 처럼 구분할 수 있다.

hdc 는 CDROM 의 강제 영역이므로 임의설정이 불가하다.

 

 

[ 실습하기 - 물리적 보조 하드를 장착 후, 리눅스 안에서 사용하기 ]

 

 

1. 물리적으로 하드를 장착한다 ( VM 가상머신 HALT 후, 옵션에서 HDD 를 1.0기가 SCSI 타입을 만들어 연결한다 )

 

2. 부팅 후 fdisk -l 로 새 하드디스크가 인식되어 있는지 확인한다. 장착된 보조 하드디스크의 디바이스명을 확인한다.

 

3. 해당 장치명으로 파티션을 분할한다. ( ex : #fdisk /dev/sdb )

 

4.

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3198bd27


Command (m for help):

 

FDISK 파티션 수정모드이다. <P> 는 해당 장치(하드디스크)의 파티션 정보 확인. <N> 은 새 파티션 만들기. <D> 는 파티션 삭제하기의 기본 명령어로 구성되어 있다.

파티션을 변화시키는 작업 후에 <W>를 눌러 저장해야 한다. 단 저장할 경우 기존 정보를 절대 되돌릴 수 없으므로 신중을 기해야 한다.
저장하지 않고 그냥 종료하려면 <Q>를 누르면 된다.

 

5. 파티션을 생성한다. 예는 프라이머리 3개, 로지컬 2개. 총 5개의 파티션을 만들 것이다. ( 용량은 각기 300 200 200 100 200 )

 

6. 파티션 작업은 순차적으로 한다.

- <P>입력하여, 빈 하드디스크임을 확인한다. ( 다른 주 하드디스크를 착각하여 건드리지 않도록 한다 )


Command action
   e   extended
   p   primary partition (1-4)

- 첫 파티션은 Primary 이므로, p 를 선택

 


Partition number (1-4): 1

- 프라이머리로 시작했으므로, os 는 파티션의 넘버를 1-4 사이로 물어볼 것이다. 첫 파티션 분할이므로 1을 선택하자.


First cylinder (1-130, default 1): 1

- 하드디스크의 용량을 결정하는 실린더의 위치를 결정한다. 커스텀으로 따로 세팅할 필요는 없고 순차적으로 디폴터 1.
 

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):

- 파티션의 마지막 실린더 위치를 결정한다. 첫 실린더가 1이므로 130을 지정할 경우 하드디스크 용량 전체를 해당 파티션에 지정하는 것이 된다.
하지만 우리는 파티션 용량을 정확하게 300메가를 사용할 것이므로 size{K,M,G} 의 M... +300M 이라고 입력해준다. ( +와 대문자를 지켜야 한다. )

- 정상이라면 커맨드모드로 돌아온다. P 를 눌러서 생성된 파티션을 반드시 확인해 본다.

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3198bd27

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          39      313236   83  Linux

 


같은 방법으로 200, 100의 프라이머리 파티션을 마찬가지로 생성한다.

-

Command (m for help): N
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (40-130, default 40):
Using default value 40
Last cylinder, +cylinders or +size{K,M,G} (40-130, default 130): +200M

Command (m for help): P

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3198bd27

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          39      313236   83  Linux
/dev/sdb2              40          65      208844+  83  Linux

-


Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3198bd27

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          39      313236   83  Linux
/dev/sdb2              40          65      208845   83  Linux
/dev/sdb3              66          91      208845   83  Linux


-

 

6. 이제 Logical 파티션을 2개 만들어야 하는데, 위에서도 설명했듯이 로지컬은 반드시 Extend 라는 껍질 파티션이 있어야 한다.
Extend 확장 파티션의 크기는, 앞으로 만들 모든 로지컬 파티션의 총 합 용량이다. ( 하드디스크의 크기나, 만들어질 로지컬 파티션의 총합을 초과할 수 없다. )

 

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (92-130, default 92):
Using default value 92
Last cylinder, +cylinders or +size{K,M,G} (92-130, default 130): 130

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3198bd27

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          39      313236   83  Linux
/dev/sdb2              40          65      208845   83  Linux
/dev/sdb3              66          91      208845   83  Linux
/dev/sdb4              92         130      313267+   5  Extended

 


7. N 로 새 파티션 만들기를 선택한 후 이제 로지컬 파티션을 위와 같이 만든다. ( 선택의 여지가 없으므로 타입 로지컬을 묻는 메세지가 출력되지 않을 것이다 )


※ 마지막 파티션의 실린더 지정은 보통 하지 않고, 남은 용량 전체를 사용하므로, 엔터(디폴트)로 남은 용량 전체를 잡아준다. ( 임의로 지정했다가 용량이 초과할 경우 Value out of range 에러가 뜰 것이다 )
파티션 정보로 인해 가령, 300M 으로 지정했더라도 실제로는 그 이상을 초과 사용해서, 생성하게 되므로, 마지막 파티션에서 용량을 따로 지정할 경우 에러 메세지가 출력될 수 있다.

Command (m for help): n
First cylinder (92-130, default 92):
Using default value 92
Last cylinder, +cylinders or +size{K,M,G} (92-130, default 130): +100M

Command (m for help): n
First cylinder (106-130, default 106):
Using default value 106
Last cylinder, +cylinders or +size{K,M,G} (106-130, default 130):
Using default value 130

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          39      313236   83  Linux
/dev/sdb2              40          65      208845   83  Linux
/dev/sdb3              66          91      208845   83  Linux
/dev/sdb4              92         130      313267+   5  Extended
/dev/sdb5              92         105      112423+  83  Linux
/dev/sdb6             106         130      200781   83  Linux

Logical 파티션은 무조건 5번부터 시작됨을 알 수 있다. ( 해당 경우는 순차적이라 맞아떨어졌을 뿐, 프라이머리가 1번 하나만 있었어도 1,2(extend),5,6 이렇게 출력된다. )

 

 

8. 파티션 정보를 여러 번 변경했을 경우, W를 눌러 작업을 저장하고 빠져나올 때 Syncing DISK 메세지가 뜨지 않고, 재부팅을 요구할 수도 있다. 그럴 경우에는 서버를 재부팅해주어야 반영된다.

(정상 저장 메세지)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

 


9. 파티션을 분할했다면, 마찬가지로 파일을 자유롭게 오고갈 수 있도록, 파일 시스템 포맷을 해 주어야 한다.
포맷 명령어는 mkfs ( Make File System ) 명령어이다

mkfs.ext4 [포맷할 파티션 장치명]
mkfs -t ext4 [포맷할 파티션 장치명]

둘 중 편한 것을 사용하도록 한다. 리눅스 데이터 하드디스크의 기본적 파일패치도 형식은 ext4 이다.

# mkfs.ext4 /dev/sdb1
.
.
.
.

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done


해당의 Done 메세지가 3개 떠야 정상적으로 포맷이 된 것이다. 포맷 후 재부팅을 요구하는 메세지가 나올 경우에는 재부팅을 해야 포맷이 반영된다.

extend 파티션은 실제 사용하는 영역이 아니므로 포맷되지 않는다.


이제 물리 보조 하드디스크를 장착후, 파티션을 나누었고, 포맷까지 완료하여 사용준비가 되었다. 하지만 우리는 이것을 어떻게 실제로 사용 가능하게 불러올 것인지 배우지 않았다.
그것이 바로 mount 라는 개념이 된다.

 

 

 


[ Mount ]

 

윈도우즈의 장치 장착 후 자동으로 알아서 검색해주고, 관련 소프트를 설치해주는 PnP ( Plug and Play ) 기능이, 리눅스 서버에서는 어렵다. 그래서 물리적 하드 디스크를 장착했다면
해당 디스크를 사용하기 위해서는 os 와의 사이에서 해당 형식을 알려주는 중간 "드라이버" 역할을 하는 무언가 있어야 한다. 그것이 바로 Mount 이다.
리눅스의 마운트 형식은 / 디렉토리 형식으로, 임의의 디렉토리를 마운트 지점으로 삼아(= 마운트 포인트) 그 위에 장치를 덮어씌워 해당 마운트 포인트를 그 장치로 삼는 방법이다.

 

 

[ 마운트 기본 상태 확인 명령어 ]

#mount

- 마운트되어 있는 현재 장치들의 기본적인 타입과, 속성을 보여준다.

#df -h

- 마운트되어 있는 장치와 포인트를 좀 더 보기 간결하게 보여준다. ( 가장 자주 쓴다 )

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda7             7.7G  328M  7.0G   5% /
tmpfs                1012M  100K 1012M   1% /dev/shm
/dev/sda1             194M   30M  155M  17% /boot
/dev/sda6             194M  5.6M  179M   4% /home
/dev/sda2             5.8G  2.7G  2.9G  48% /usr
/dev/sda5             2.0G  190M  1.7G  11% /var
/dev/sr0              3.5G  3.5G     0 100% /media/CentOS_6.3_Final


/dev/sr0 장치는 cdrom 을 지칭하는 장치이다.
여러 파티션들이 Mounted on(마운트 포인트) 의 디렉토리를 자신의 숙주로 삼아, 해당 위치에 자리함을 볼 수 있다.
따라서 전체의 한 덩어리 하드디스크처럼 보여도, 실제로는 어떤 부분이 문제가 생겨도 해당 파티션 부분만 처리할 수 있는 장점이 있다.

이곳에 앞에서 만든 /dev/sdb1 ( 300M ) 을 사용할 수 있도록 마운트해야 한다.

 

 

10. mount [장치명] [마운트 포인트]

 

 

- 임의의 마운트 포인트 지점을 만든다. ex) mkdir /sdb1/
- 장치를 마운트한다. 

[root@localhost ~]# mkdir /sdb1
[root@localhost ~]# mount /dev/sdb1 /sdb1
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda7             7.7G  328M  7.0G   5% /
tmpfs                1012M  100K 1012M   1% /dev/shm
/dev/sda1             194M   30M  155M  17% /boot
/dev/sda6             194M  5.6M  179M   4% /home
/dev/sda2             5.8G  2.7G  2.9G  48% /usr
/dev/sda5             2.0G  190M  1.7G  11% /var
/dev/sr0              3.5G  3.5G     0 100% /media/CentOS_6.3_Final
/dev/sdb1             297M   11M  271M   4% /sdb1

/sdb1 이라는 디렉토리에 /dev/sdb1 의 파티션이 마운트되었음을 확인할 수 있다.
해당 /sdb1 디렉토리는 마운트 된 시점부터 /sdb1 의 디렉토리 영역이 아니며, /dev/sdb1 의 보조 하드 디스크의 파티션 영역이 된다. ( 마운트를 해지하면, 기존 디렉토리 정보가 돌아온다 )

 

 

11. umount [장치명]

 

 

- 마운트를 해지할 수 있다.

[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda7             7.7G  328M  7.0G   5% /
tmpfs                1012M  100K 1012M   1% /dev/shm
/dev/sda1             194M   30M  155M  17% /boot
/dev/sda6             194M  5.6M  179M   4% /home
/dev/sda2             5.8G  2.7G  2.9G  48% /usr
/dev/sda5             2.0G  190M  1.7G  11% /var
/dev/sr0              3.5G  3.5G     0 100% /media/CentOS_6.3_Final

- 해지하기 전에 반드시 해당 마운트 포인트 지점에서 위치를 벗어나야 한다. ( ex : cd / ) 그렇지 않다면 해지되지 않는다.

ex)
# pwd
/sdb1
[root@localhost sdb1]# umount /dev/sdb1
umount: /sdb1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

 

이하의 방법으로 보조 하드디스크의 영역을 디렉토리화(마운트 포인트) 시켜 사용할 수 있게 된다.

※ 마운트 포인트는 파티션당 원칙적으로 반드시 1:1이어야 한다. ro(read only)의 파티션(예 : cdrom ) 일 경우에는 여러개여도
상관이 없지만, 물리 하드디스크 파티션의 마운트 포인트가 여러개일 경우, 다중 사용자들의 동시쓰기 및 권한 혼선을 유발할 수 있다.
서버에 여러 사용자들을 생성하는 것은, 해당 유저 데이터 장치(파티션)에 쓰기 권한을 일방적으로 주는 것이 아닌, 허용된 그 자신만의 일부 공간만을 허락하는 것이다.

 

 


-------------------------------------

[ 오토마운트 ]

 

어떤 회사 서버에 보조하드를 장착했는데, 오토마운트를 지정하지 않으면, 재부팅시 마운트가 자동으로 빠지는 경우가 생긴다. 그런 것을 방지하기 위해 재부팅해도, 항상 기본으로 마운트 된
상태를 유지하는 것을 오토마운트라 한다.

오토마운트는 /etc/fstab 파일을 수정해야 한다.
오토마운트로 지정한 장치가 없어지거나, 틀릴 경우, 부팅 자체가 안되는 치명적 현상이 발생한다. 이 때에는 시스템 응급복구 모드를 사용해야 하므로, 각별히 유의한다.

 


#vi /etc/fstab


#
# /etc/fstab
# Created by anaconda on Wed Jan 16 07:22:40 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=c1c9282a-b1ab-4a52-af92-01119082d042 /                       ext4    defaults        1 1
UUID=8d5f4027-7137-4b5d-9455-d2394e64b63d /boot                   ext4    defaults        1 2
UUID=bc01ae3b-2707-4ecf-bef5-e7c907db0ef1 /home                   ext4    defaults        1 2
UUID=3172ab7d-f9e7-4cca-a5b6-905143ebd319 /usr                    ext4    defaults        1 2
UUID=e1152695-c64a-4138-a53e-7e81ab2301e8 /var                    ext4    defaults        1 2
UUID=bcf03cfc-baa4-42cd-9e55-2bb4f4d6e1b2 swap                    swap    defaults        0 0
/dev/sdb1                  /sdb1     ext4    defaults        1 2


= 이 부분... 오토마운트될 정보를 기입해 준다. 실수할시 부팅 자체가 안 되므로 주의!
반드시 존재하는 마운트여야 한다. ( 수동으로 마운트할수 있는 정상 파티션 )

UUID 를 제대로 입력해 주고 싶은 깐돌이가 있다면, 영문 설명대로 /dev/disk 의 안쪽 리스트를

출력해 보도록 한다. 자신의 마운트마다 UUID 가 기입되어 있다.

 

 


재부팅 후 df -h 로 오토마운트 되었는지 확인.
(되지 않았다면 마운트 포인트라던지, 오타 등 원인분석을 하여야 한다)


(정상)
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda7             7.7G  328M  7.0G   5% /
tmpfs                1012M  100K 1012M   1% /dev/shm
/dev/sda1             194M   30M  155M  17% /boot
/dev/sda6             194M  5.6M  179M   4% /home
/dev/sda2             5.8G  2.7G  2.9G  48% /usr
/dev/sda5             2.0G  190M  1.7G  11% /var
/dev/sdb1             297M   11M  271M   4% /sdb1
/dev/sr0              3.5G  3.5G     0 100% /media/CentOS_6.3_Final


= /sdb1 이 자동 마운트되어 있음을 확인할 수 있다.

※ 응급복구 모드시 가끔 마운트 정보를 수정하려 할 때 fstab 파일이 읽기전용이라면서 저장이 되지 않는 경우가 있다.
이럴 때에는, 응급복구 모드의 shell 에서 임시로 / 에 마운트시킨 /mnt/sysimage 를 u마운트하였다가, 재 마운트 하여야 한다.

(chroot 재실행)

※ 오토마운트되어 있는 장치가 물리적으로 해제될 시에는, 반드시 그 전에 정보를 미리 fstab 에서 삭제하여야 한다.
정보가 남아있는 상태에서, 물리 해제후, 재부팅시에는 정상 부팅이 되지 않는다.

 

 

 


※ MBR

Master Boot Record 의 약자.

물리적 하드 디스크가 여러 파티션으로 분할되어 있을 때, 각각의 파티션에 들어있는 파일 위치 정보는, 섹터의 어떤 특정한 부분에 그 큰 인덱스 정보가 기록되어 있고(부트 섹터), 하드디스크의 헤드는, 신호를 받으면 해당 파티션의 부트 섹터로 가서 경로정보를 찾는다. 하위 파티션들의 부트 섹터 정보들은 다시금 어느 메인이 되는 파티션으로 집약되게 되고, 해당 파티션의 부트 섹터를 MBR 이라 한다.


 

 

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,