<In Story>

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

OS(operating system)/Unix, Linux

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

<In Story, Hi story, History> 2015. 5. 5. 16:12
http://www.scitech.co.kr/~freekgb/lb/libible9/bookplus/fdisk.html

시스템 관리자를 위한 리눅스 BIBLE - 조이앤북스

리눅스용 fdisk 사용하기


라이센스 : GFDL - 문서링크
Copyright (C) 2002 Gibong Kang (freekgb@hlug.hanyang.ac.kr,freekgb@lvsp.or.kr)
GNU 자유 문서 사용 허가서 1.1판 또는 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따라 본 문서를 복제하거나 개작 및 배포할 수 있습니다. 모든 부분 변경 불가, 앞 표지에 라이센스 구문을 표시, 뒷 표지에는 구절 표시 없음. 그러나, 100부 이상의 대량 배포일 경우 2조/3조의 규정을 준수하도록 합니다. 본 사용 허가서의 전체 내용은 GNU 자유 문서 사용 허가서 부분에 포함되어 있습니다.

리눅스 설치시 전문가용으로 fdisk 라는 파티션 프로그램을 볼 수 있다. 이 프로그램은 디스크 드루이드보다 더 세밀한 파티션 설정이 가능하다는 면에서 아주 유용하다. 특히 리눅스를 여러개 설치할 때에나 두 번째 이후의 파티션에 설치할 때에 Primary 파티션을 여러개 두고 싶다면 fdisk를 사용해야 한다. 그러면, 이 프로그램에 대한 사용법에 대해서 알아보도록 한다.


1. fdisk의 시작

fdisk를 이용해 새로운 파티션의 생성, 기존 파티션의 삭제, 파티션의 타입 결정 등의 작업을 수행할 수 있다. 그런데, 래드헷 계열의 배포판은 설치시 대부분 Disk Druid 유틸리티를 이용해서 파티션을 분할한다. 그렇지만, 전통적으로 fdisk를 사용하며 이것은 디스크 드루이드보다 유연하기 때문에 아직도 설치시에 이 프로그램을 사용한다.

fdisk 프로그램은 한번에 한 디스크에 대해서만 작업을 수행한다. fdisk는 명령어 프롬프트 중심의 매우 간단한 인터페이스를 가지고 있다. 그러면 fdisk를 실행해 보자.

# fdisk [Hard disk device]

fdisk를 실행하기 위해서는 어떠한 디스크의 파티션을 나눌 것인지 알려 주어야 한다. 즉 하나의 컴퓨터에 여러 개의 하드디스크가 설치될 수 있으므로 어떤 하드디스크의 파티션을 변경할 것인지 알려 주어야 한다.

fdisk /dev/hda를 실행하면 (파티션을 생성/삭제할 하드디스크가 IDE1의 마스터 드라이브일 경우) 다음과 같은 화면을 볼 수 있다.

# fdisk /dev/hda


그러면 다음과 같은 도입 화면이 나올 것이다.


fdisk는 독자적인 명령어를 가지고 있다. 도움말을 원한다면 간단하게 m 명령어를 통해 얻을 수 있다. 그리고, 이 정보만 보고서도 충분히 파티션을 할 수 있을 것이다. 다음은 이 명령을 사용했을 때 나오는 명령에 대한 해설이다.

명 령   기 능
a       부트 가능한 플래그로 변경
b       bsd 디스크 레이블을 편집
c       도스 호환 플래그로 변경
d       파티션 삭제
l       알려진 파티션 형태의 목록
m       이 메뉴를 출력
n       새로운 파티션 추가
o       새로운 도스 파티션 테이블을 생성
p       파티션 테이블을 출력
q       변경을 저장하지 않고 종료
s       새로운 Sun 디스크 레이블을 생성
t       파티션의 시스템 id를 변경
u       표시/엔트리 단위를 변경
v       파티션 테이블을 점검
w       디스크에 테이블을 기록하고 빠져나감


2. fdisk 명령어

다음은 fdisk 명령어에 대한 것들을 알아보자. 일단 많이 사용되는 명령어부터 해서 각각의 명령어들의 사용법에 대해서 알아보도록 한다.

  • m - 도움말 

    이 명령어를 입력하면 fdisk는 Command(m for help): 라는 프롬프트를 보여주며 명령을 기다린다. m을 입력하면 다음과 같은 도움말을 볼 수 있다. 명령어를 전체적으로 외우기가 그렇게 쉬운 일만은 아니므로 이 명령어를 자주 사용하게 될 것이다.


  • p - 파티션 현황 

    선택한 디스크에 있는 기존의 파티션 현황을 보기 위해서는 p를 입력하면 된다. 만약 기존에 파티션이 있고 파티션을 새로 만들어야 한다거나 만들어야 할 파티션이 많은 경우에 파티션 상태를 확인하는데 사용된다. 만약 기존의 모든 파티션을 하나씩 없애고 싶다면 d 명령어와 함께 제거하고자 하는 파티션의 번호를 입력하면 된다.


  • n - 파티션 생성

    새로운 파티션을 만들려면 n 명령어를 사용한다. 파티션 생성을 위해 우선 다음과 같이 n을 입력한다.

    Command (m for help): n

    다음에 나오는 선택 사항에서 우선 Primary 파티션을 만들어야 하므로 p를 입력한다. 4개 이상의 파티션을 만들고 싶을 경우에만 확장 파티션이 필요하다.

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

    그 다음 프롬프트에서는 파티션 번호를 선택한다.

    Partition number ( 1-4 ) : 1

    첫 번째 파티션 이라면 1을, 두 번째는 2를 입력한다. 다음에는 파티션의 시작 블록 번호를 입력해야 한다. 괄호 안에 있는 숫자는 파티션에 사용할 수 있는 블록의 범위이다. 이번 파티션이 첫 번째 파티션이면 1을 시작 블록으로 한다.

    First cylinder ( 1-1024 ) : 1

    크기가 80Mbyte 인 파티션을 만들고 싶으면 바이트, 킬로바이트, 메가바이트로 크기를 지정할 수 있다.

    Last cylinder or +size or +sizeM or + sizeK ([1]-1024): +80M

    파티션이 잘 만들어 졌는지 확인을 해야 한다. 파티션 정보를 보려면 명령어 p를 사용한다.

    앞서 extended 파티션은 도스와는 조금 다르게 FDISK와 같이 4개 이상의 파티션을 만들기 위해 사용된다. 도스에서는 Primary 이외의 파티션을 모두 extended에 두지만 리눅스에서는 4번째 파티션을 extended로 잡고 아래에 다시 4개의 파티션을 만들 수 있다. 파티션 번호는 extended 파티션 번호 다음 번호부터 다시 잡힌다.

  • a - 부트 파티션 지정

    알맞게 파티션을 나눈 후에 부트파티션을 지정해 주어야 한다. 대부분 첫 번째 Primary 파티션을 부트파티션으로 잡는다. 프롬프트에서 다음과 같이 입력한다.

    Command(m for help) : a
    Partition number (1-6) : 1

  • d - 삭제

    삭제해야 할 파티션이 있다면 d 명령을 사용하여 삭제할 수 있다. 다음과 같이

    Command (m for help): d
    Partition number (1-8): [파티션 번호]

  • t 파티션의 시스템 id를 변경

    만들어진 파티션의 시스템 id는 기본적으로 83번으로 Linux 파티션이다. 그렇지만, 경우에 따라서 Dos 파티션을 만들어야 하는 경우도 있고 swap 파티션을 만들어야 하는 경우도 있다. 이 경우에 시스템 id를 변경해 주기 위해서 t 명령어를 사용한다. 다음은 t 명령어를 사용해서 83번으로 되어 있던 시스템 id를 82번으로 바꾼 예제이다.


  • l - 알려진 파티션 형태의 목록

    앞서 t 명령어를 사용할 때 시스템 id의 정보를 알아보기 위해서는 l 명령어를 사용한다.


  • w - 저장 후 종료

    일련의 작업이 끝난 후 실제로 반영시키기 위해서 w명령으로 변경 내용을 저장한 후 종료한다. 만약 새로 파티션을 생성하는 경우라면 재부팅을 해야 새로운 파티션이 인식이 된다. 그러므로, 포맷을 하기 위해서는 컴퓨터를 재부팅한다.


  • q - 저장하지 않고 종료

    실수로 파티션을 삭제하거나 잘못 설정한 경우에는 q 명령으로 변경 내용을 반영하지 않고 종료하거나 Ctrl + C키를 눌러 강제 종료 시켜야 한다.

    다음과 같이 q 명령을 내리면 그대로 fdisk가 종료된다.

    Command (m for help): q

  • b - bsd 디스크 레이블을 편집

    만약 컴퓨터가 알파 시스템이라면 bsd 디스크 레이블로 파티션을 편집해야 할 수도 있다. 이 경우에 b 명령어로 그렇게 할 수 있도록 환경을 변경해 주어야 한다. 이후의 파티션을 잡는 방식은 앞서와 같다.


[파티션 복구]

리눅스의 fdisk는 Windows 시스템의 fdisk와 달리 잘못 사용한 경우에 복구가 가능하다. 우선 이전의 실린더 숫자를 적어 두고 파티션을 나눈다. 그러면, 파티션을 잘못하고 저장한 경우 다른 시스템에 연결하여 실린더를 맞추어 이전의 것을 복구할 수 있다. 이것은 보안을 위해서도 사용될 수 있는데, 하드디스크의 실린더 숫자를 적어 놓고 파티션을 다르게 해버리면 파일시스템을 제대로 사용할 수 없게 된다. 이렇게 실린더 숫자를 적어 두는 것은 불시의 사고에 대비하는 방법이기도 한데, 만약 fdisk를 하면서 실수로 잘못 저장한 경우에 이전의 실린더 번호대로 복구하면 이전 상태 그대로 된다.


3. 파티션 요령과 fdisk 사용

fdisk를 이용해서 서버로 사용될 시스템의 파티션을 나눠 보도록 하자. 하드 디스크를 분할하는 것에는 일정한 공식은 없지만, 각각의 파일시스템에 사용될 파티션은 하드 디스크의 퍼센트보다는 각각의 사용 용량에 따라서 나눠 준다.

다음은 파일시스템에 따른 파티션 용량이다.

  • / - 300메가. 만약 위와 같이 각각을 모두 나눠서 파티션 한다면 /는 큰 용량이 필요 없다. 만약 하나의 세 개의 파티션으로 나눠야 한다면 /home, /, swap으로 나눠 주는 것이 좋다. 그리고, 이 경우라면 이 파티션은 약 3기가 정도의 크기여야 한다. 그리고, 이 경우에 /home 파티션은 크면 클수록 좋다.

  • /boot - 50메가. 50~60메가 정도로 잡는다. 아주 넉넉하게 100메가로 잡아도 상관 없다.

  • /var - 2기가. 서버로 사용하는 경우 메일 서버의 스풀과 메일 박스가 있는 장소로 충분히 크게 잡으면 좋다. 만약 이것이 없다면 300~500메가로 정도로 잡아도 상관 없고 파티션을 나누지 않아도 무관하다. 그렇지만 개인적으로 메일 서버롤 돌려야 하는 상황이라면 메일 박스를 홈디랙토리로 옮겨서 잡아주는 방법도 있다.

  • /usr - 2기가 이상. 이곳에는 온갖 잡다한 것들이 다 들어 간다. 처음 설치시 시스템에서 가장 많은 용량을 차지하는 곳이고 이후에 프로그램 설치시 이곳에 저장이 된다. 말하자면 윈도우즈 시스템의 Program Files 디랙토리와 windows 디랙토리의 일부를 합쳐 둔 것과 비슷하다. 사실 2기가로도 부족한 면이 있지만 많은 프로그램들을 운영할 계획이 없다면 이정도면 괜찮다. 만약 하드 디스크를 다시 분할하기 어렵고 각각의 파티션이 1.6기가 정도라면 /, /usr/share 정도로 나눠주면 된다. 처음 설치시 /usr/share의 용량은 상당히 크기 때문이다. 이후에 이것을 적당히 다시 조정할 수도 있을 것이다.

  • /tmp - 500메가. 이 부분은 X Window 같은 프로그램이 돌아가거나 윈도우즈의 temp와 같은 역할을 위한 작업을 하기 위한 공간으로 사용됩니다. 따라서 이정도는 필요할 것입니다.

  • swap - 물리적 메모리의 두배 정도면 충분하다. 물리적 메모리를 넉넉하게 하는 것이 컴퓨터를 사용하는데 좋다.

  • /home - 나머지 용량의 모두를 잡는다, 홈파티션이 생각보다 많이 필요하다. 특히, 시스템이 데스크탑용이거나 사용자가 많은 서버의 경우에는 절대적으로 많은 용량이 필요할 것이다.

이외에 자신의 필요에 따라 백업용 파티션을 나누거나 일정한 파티션에 백업용 공간을 둘 수 있을 겁니다.

위와 같이 나누면 되지만 일단 /, /usr, /home, swap, /boot 정도로 파티션을 나눠본다.

우선 /boot를 만든다. 이곳에는 시스템 부트에 관계되는 파일들이 있게 된다. 따라서, 이 부분은 가장 앞부분에 위치하도록 하는 것이 좋다. 만약 시스템에 윈도우즈 시스템에 있고 /boot가 1024 실린더 다음에 위치하게 되는 경우라면 이 파티션을 먼저 앞에 잡아 두고 다음에 윈도우즈용 파티션을 잡아 두는 것이 무리가 없다. 물론 lba32 옵션으로 lilo를 MBR에 설치할 수는 있지만 이것보다는 /boot 파티션을 앞에 잡아 두는 것이 더 편하다.

다음은 n 명령어로 파티션을 생성하는 것이다. 먼저 n 명령을 내린 다음, p로 primary 파티션으로 지정하고 파티션 번호를 지정한다. 이후에 시작 실린더 번호를 지정하고 마지막 실린더를 지정하거나 크기를 지정하면 된다.


다음에는 /, /usr, /home. swap를 위한 파티션을 차례로 잡아준다. swap의 경우에는 반드시 t 명령으로 시스템 id를 82번 swap으로 바꿔 주어야 한다.

다음은 /를 위한 두번째 파티션으로 300M를 잡아주는 모습이다.


다음은 /usr을 위한 파티션으로 2500M를 잡아주는 모습이다.


다음은 확장 파티션을 잡는 모습이다.


다음은 확장 파티션 아래에 swap 파티션으로 500M를 잡고 /home 파티션으로 남은 모든 공간을 잡은 모습이다.


다음은 p 명령어로 파티션 현황을 확인한 모습이다.


다음은 마지막으로 swap 파티션의 시스템 id를 82번으로 변경한 모습이다.


만약 윈도우즈 시스템이 있다면 swap 파티션을 윈도우즈 시스템과의 중간에 두거나 윈도우즈 시스템과 약간의 간격을 두고 파티션을 해주는 것이 안전하다. 파티션을 할 때 주의할 점의 하나는 윈도우즈 시스템의 FDISK에서 확장 파티션으로 잡은 도스용 파티션에 리눅스를 설치하지 말라는 것이다. 이 경우에 윈도우즈에서 리눅스 파티션이 보이면서 제대로 읽지 못해 시스템에 문제가 생길 수 있다.

파티션 편집이 모두 끝났다면 w 명령으로 설정을 저장하고 fdisk를 종료한다.