<In Story>

리눅스 디스크 관리 fdisk 사용법 // [OS] [Linux] [Command] [Disk Partition] 본문

OS(operating system)/Unix, Linux

리눅스 디스크 관리 fdisk 사용법 // [OS] [Linux] [Command] [Disk Partition]

<In Story, Hi story, History> 2015. 5. 5. 16:11

https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1342



명령어위치 : /sbin/fdisk

 

사용형식 :   fdisk [-l] [-v] [-s 파티션] [장치이름]

 

fdisk에서 파티션 설정작업에 사용하는 명령어를 간략히 요약하면 다음과 같습니다.

 

        부팅파티션을 설정할 수 있음.

       b  BSD로 디스크라벨 설정.

       c  DOS호환가능한 플래그 설정.

       d  파티션을 삭제할 수 있음.

       l  설정가능한 파티션 타입을 보여줌.

       m  파티션 설정도움말을 보여줌.

       n  새로운 파티션을 생성할 수 있음.

        새로운 도스파티션 테이블을 생성함.

        현재 설정된 파티션정보를 보여줌.

       q  설정된 정보를 저장하지않고 fdisk를 빠져나감.

        SUN 디스크라벨을 생성함.

        파티션 타입을 변경할 수 있음.

        유닛(units)정보를 열람하거나 변경할 수 있음.

       v  지정된 파티션을 검사함.

       w  현재까지 설정한 파티션정보를 저장하고 fdisk를 빠져나감.

      x  파티션설정 전문가 모드로 들어감이 전문가 모드에서는 실린더(cylinder)수나 헤드(head)수 그리고 트랙(track)당 섹터(sector)수를 변경할 수 있음.

 

이제 fdisk를 이용하여 디스크 파티션작업을 하려면 디스크장치명에 대한 정확한 이해가 필요합니다.  , IDE디스크냐 SCSI디스크냐에 따라서 다음과 같은 장치명이 주어집니다디스크장치명과 디스크 파티션명을 어떻게 표기하고 구분하는가를 아래 설명을 보시고 정확하게 이해하시기 바랍니다이것이 fdisk를 정확하게 사용하기 위한 기초사항입니다.

 

[참고사항]
이 책의 grub명령어편에 나오는 실무명령어# 105-3 : GRUB에서의 디스크파티션명과 리눅스에서의 디스크파티션명 구분하기의 설명과 함께 보시기 바랍니다보다 정확한 이해를 하실 수 있습니다.

 

       /dev/hda      : 첫번째(a) IDE 디스크(hd)

       /dev/hdb      : 두번째(b) IDE 디스크(hd)

       /dev/hdc      : 세번째(c) IDE 디스크(hd)

       /dev/hdd      : 네번째(d) IDE 디스크(hd)

 

       /dev/sda      : 첫번째(a) SCSI 디스크(sd)

       /dev/sdb      : 두번째(b) SCSI 디스크(sd)

       /dev/sdc      : 세번째(c) SCSI 디스크(sd)

       /dev/sdd      : 네번째(d) SCSI 디스크(sd)

       /dev/sde      : 다섯번째(e) SCSI 디스크(sd)

       /dev/sdf      : 여섯번째(f) SCSI 디스크(sd)

       /dev/sdg      : 일곱번째(g) SCSI 디스크(sd)

 

이상과 같이 구분합니다.  그렇다면 디스크의 전체를 가리키는 장치명과 디스크내의 파티션을 의미하는 파티션은 어떻게 표시할까요?

 

간단히 IDE디스크 하나를 5개의 파티션으로 나누었다고 가정 하겠습니다.

 

       /dev/hda  : 첫번째(a) IDE디스크 전체를 의미할때 사용하는 장치명.

       /dev/hda1 : 첫번째(a) IDE디스크 내의 첫번째 파티션을 의미함.

       /dev/hda2 : 첫번째(a) IDE디스크 내의 두번째 파티션을 의미함.

       /dev/hda3 : 첫번째(a) IDE디스크 내의 세번째 파티션을 의미함.

       /dev/hda4 : 첫번째(a) IDE디스크 내의 네번째 파티션을 의미함.

       /dev/hda5 : 첫번째(a) IDE디스크 내의 다섯번째 파티션을 의미함.

 

따라서 뒤에 숫자번호가 붙지않은 장치명과 붙은 장치명의 정확한 의미를 이해하셔야 합니다뒤에 숫자번호가 붙지않는 경우는 디스크의 전체를 의미하며뒤에 숫자번호가 붙는 경우는 디스크내의 각 파티션을 의미합니다그리고 장치명만으로 IDE디스크인가?  SCSI디스크인가?를 정확하게 구분할 수 있어야합니다.

 

간단히 다음과 같은 예를 보십시요.

 

       /dev/hdb3 : 두번째(b) IDE디스크(hd) 3번째 파티션을 의미함.

       /dev/hdc2 : 세번째(c) IDE디스크(hd) 2번째 파티션을 의미함.

       /dev/sda5 : 첫번째(a) SCSI디스크(sd) 5번째 파티션을 의미함.

       /dev/sdc3 : 세번째(c) SCSI디스크(sd) 3번째 파티션을 의미함.

 

이상과 같은 구분만 가능하다면 파티션의 기본적인 의미는 이해를 하신 것이라 볼 수 있습니다.  그리고 이런 파티션을 나누는 도구가 바로 여기서 설명할 fdisk인 것입니다.

fdisk를 어디에 사용하고 무엇을 하기 위해서 사용하는가를 설명하기 위해서 지금껏 설명드린 것입니다.

 

이제 fdisk를 이용하여 디스크정보와 파티션설정하는 방법에 대해서 알아보도록 하겠습니다.

 

 

 

2 : 현재 모든 디스크의 파티션설정현황 파악하기

 

리눅스 쉘상태에서 현재 모든 디스크의 파티션 설정내용을 확인할 수 있습니다.

간단히 "fdisk -l"이라고만 하면 현재 파티션이 설정되어 있는 모든 디스크의 파티션설정 내용을 다음 예와 같이 확인 할 수 있습니다.

아래 필자가 테스트로 사용하고 있는 서버에는 IDE디스크가 2개 장착되어 있습니다.

첫번째 디스크는 /dev/hda라는 장치명으로 사용되고 있으며 다른 하나는 /dev/hdb라는 장치명으로 사용되고 있습니다.

 

[root@file root]# fdisk -l

 

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot    Start       End    Blocks   Id  System

/dev/hda1   *         1        16    128488+  83  Linux

/dev/hda2            17      8302  66557295   83  Linux

/dev/hda3          8303      8433   1052257+  82  Linux swap

/dev/hda4          8434      9729  10410120    f  Win95 Ext'd (LBA)

/dev/hda5          8434      9729  10410088+  83  Linux

 

Disk /dev/hdb: 6448 MB, 6448619520 bytes

255 heads, 63 sectors/track, 784 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot    Start       End    Blocks   Id  System

/dev/hdb1   *         1       250   2008093+  83  Linux

/dev/hdb2           251       500   2008125   83  Linux

/dev/hdb3           501       784   2281230   82  Linux swap

[root@file root]# 

 

첫번째 /dev/hda디스크는 모두 5개의 파티션으로 구성되어 있는 것을 보실 수 있습니다.

첫번째 행에 나타난 것 처럼 이 디스크(/dev/hda) 80.0GB의 용량을 가지고 있음을 알 수 있습니다.

 

 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4 /dev/hda5와 같이 나누어져 있다는 것을 알 수 있으며 각 장치명의 번호들은 파티션번호를 의미하고 있습니다.

그리고 /dev/hda1 "Boot"항목에 "*"가 있는 것은 이 파티션(/dev/hda1)이 부팅파티션임을 나타내고 있습니다.

 

그리고 /dev/hda3 "System"항목에 보시면 "Linux swap"이라는 것은 이 파티션(/dev/hda3)이 스왑파티션임을 나타내고 있습니다.

 

그리고 /dev/hda4 "System"항목에 보시면 "Win95 Ext'd (LBA)"라는 것은 이 파티션(/dev/hda4)가 확장파티션임을 의미합니다.

 

그리고 위의 예에서 두번째 디스크인 /dev/hdb는 모두 3개의 파티션(/dev/hdb1, /dev/hdb2, /dev/hdb3)으로 나뉘어져 있음을 알 수 있습니다.

 

위의 경우와 마찬가지로 /dev/hdb1파티션이 부팅파티션이고 /dev/hdb3파티션이 리눅스 스왑파티션입니다.

 

이상과 같이 fdisk로 확인할 수 있는 디스크파티션 설정내용의 이해를 위하여 설명드렸습니다.

 

 

 

3 : 특정 파티션을 대상으로한 fdisk 시작과 종료

 

fdisk실행하기와 빠져나오기를 간단히 알아보겠습니다.  먼저 fdisk를 실행할 때에는 "fdisk 장치명"과 같이 하시면 됩니다.  물론 여기서 장치명은 반드시 디스크를 가리키는 장치명이어야합니다.

 

아래의 예는 /dev/hdb디스크에 대한 fdisk를 실행한 것입니다.

 

[root@file root]# fdisk /dev/hdb

 

Command (m for help):

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

   o   create a new empty DOS partition table

   p   print the partition table

   q   quit without saving changes

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit

   x   extra functionality (experts only)

 

Command (m for help):

Command (m for help): q

 

[root@file root]#

 

보시는 바와 같이 fdisk가 정상적으로 실행이 되고 나면 "Command (m for help): "와 같은 fdisk명령어모드가 나옵니다.   fdisk명령어모드에서 우리는 fdisk의 모든 작업을 하게 됩니다. fdisk명령어중 아래 한가지 예로든 "m"이라는 명령어는 fdisk명령어모드에서 사용가능한 명령어들과 도움말을 나타내줍니다.

 

그리고 빠져나오실 때에는 위의 예와 같이 "q"라고 하시면 됩니다.  그러면 아무런 작업없이 바로 fdisk모드에서 빠져나오게 됩니다.

 

 

 

4 : 해당 디스크장치가 존재하지 않을 경우의 fdisk실행

 

앞의 예는 fdisk실행시 지정된 장치가 존재했을 경우의 예 입니다.  만약 지정된 장치가 현재 서버에 존재하지 않는다면 어떻게 될까요.

 

아래의 예는 존재하지 않는 장치를 fdisk로 실행한 예입니다.  

[root@file root]# fdisk /dev/hdc

 

Unable to open /dev/hdc

[root@file root]#

 

아래의 예와같이 /dev/hdc라는 장치는 현재 이 서버에는 존재하지 않기 때문에 "Unable to open /dev/hdc"이라는 메시지를 출력한 채 fdisk는 실행이 되지 않았습니다.

 

따라서 우리는 존재하지않는 디스크장치명으로 fdisk를 실행했을 경우에는 fdisk가 정상적으로 실행이 되지 않는다는 것을 확인 하였습니다.

 

 

 

5 : fdisk모드에서 현재 설정된 디스크 파티션정보 확인하기

 

fdisk모드에서 대상디스크의 파티션 설정정보를 확인하는 예입니다.  아래의 예는 /dev/hda의 파티션설정을 확인하기 위해서 다음과 같이 "fdisk /dev/hda"를 실행 시킨 것입니다.  이 명령어는 /dev/hda를 대상으로 fdisk작업을 하겠다는 의미입니다.

 

[root@file root]# fdisk /dev/hda

 

Command (m for help): p

 

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot    Start       End    Blocks   Id  System

/dev/hda1   *         1        16    128488+  83  Linux

/dev/hda2            17      8302  66557295   83  Linux

/dev/hda3          8303      8433   1052257+  82  Linux swap

/dev/hda4          8434      9729  10410120    f  Win95 Ext'd (LBA)

/dev/hda5          8434      9729  10410088+  83  Linux

 

Command (m for help):

Command (m for help): q

 

[root@file root]#

 

그리고 앞의 예에서 설명드린대로 fdisk명령어 중 "p"는 현재의 파티션 설정상황을 나타내주는 fdisk명령어입니다.  fdisk모드에서 "p"라고만 하면 해당 디스크의 파티션 설정정보를 아래와 같이 표시해 줍니다.

 

여기서는 파티션의 설정정보만을 확인한 것이므로 "p"로 파티션 설정정보를 확인한 후에 "q"로 빠져나간 것입니다.