Linux 명령어 배우기 - fdisk

이름

fdisk - Linux 용 파티션 테이블 조작기

개요

fdisk [-u] [-b 섹터 크기 ] [-C cyls ] [-H 헤드 ] [-S 섹터 ] 장치

fdisk -l [-u] [ device ... ]

fdisk -s 파티션 ...

fdisk -v

기술

하드 디스크는 파티션 이라고하는 하나 이상의 논리 디스크로 나눌 수 있습니다. 이 분할은 디스크의 섹터 0에있는 파티션 테이블에 설명되어 있습니다.

BSD 세계에서 '디스크 조각 (disk slices)'과 '디스크 레이블 (disklabel)'에 대해 이야기합니다.

리눅스는 적어도 하나의 파티션, 즉 루트 파일 시스템을 필요로합니다. 스왑 파일 및 / 또는 스왑 파티션을 사용할 수 있지만 후자는 더 효율적입니다. 따라서 대개 스왑 파티션으로 전용 된 두 번째 Linux 파티션이 필요합니다. Intel 호환 하드웨어에서 시스템을 부팅하는 BIOS 는 종종 디스크의 처음 1024 실린더에만 액세스 할 수 있습니다. 이러한 이유 때문에 대용량 디스크를 사용하는 사람들은 일반적으로 / boot에 마운트 된 대용량의 세 번째 파티션을 만들어 부팅 할 때 필요한 커널 이미지와 몇 개의 보조 파일을 저장하므로이 항목이 BIOS에 액세스 할 수 있습니다. 최소 수 이상의 파티션을 사용하려면 보안, 관리 및 백업 용이성 또는 테스트의 용이성이있을 수 있습니다.

인쇄 문제를 해결하고 인쇄 대기열 관리 소프트웨어로 시간을 절약하십시오.

fdisk (첫 번째 호출 형식)는 파티션 테이블을 만들고 조작하기위한 메뉴 기반 프로그램입니다. DOS 유형 파티션 테이블과 BSD 또는 SUN 유형 디스크 레이블을 인식합니다.

장치 는 대개 다음 중 하나입니다.

/ dev / hda / dev / hdb / dev / sda / dev / sdb

(IDE 디스크의 경우 / dev / hd [ah], SCSI 디스크의 경우 / dev / sd [ap], ESDI 디스크의 경우 / dev / ed [ad], XT 디스크의 경우 / dev / xd [ab]). 장치 이름은 전체 디스크를 참조합니다.

파티션장치 이름 다음에 파티션 번호가옵니다. 예를 들어, / dev / hda1 은 시스템의 첫 번째 IDE 하드 디스크에있는 첫 번째 파티션입니다. 디스크는 최대 15 개의 파티션을 가질 수 있습니다. /usr/src/linux/Documentation/devices.txt를 참조하십시오.

BSD / SUN 타입의 disklabel은 8 개의 파티션을 기술 할 수 있으며, 그 중 3 번째 파티션은`전체 디스크 '파티션이어야한다. 실린더 0에서 실제로 첫 번째 섹터 (스왑 파티션과 같은)를 사용하는 파티션을 시작하지 마십시오. 그러면 디스크 레이블이 손상됩니다.

IRIX / SGI 유형의 디스크 레이블은 16 개의 파티션을 설명 할 수 있는데, 11 번째 파티션은 전체 '볼륨'파티션이어야하며 9 번째 파티션에는 '볼륨 헤더'라는 레이블이 있어야합니다. 볼륨 헤더는 파티션 테이블을 덮어 씁니다. 즉, 블록 0에서 시작하여 기본적으로 5 개의 실린더 위로 확장됩니다. 볼륨 헤더의 나머지 공간은 헤더 디렉토리 항목에 의해 사용될 수 있습니다. 파티션이 볼륨 헤더와 겹칠 수 없습니다. 또한 파티션 테이블을 잃어 버리기 때문에 형식을 변경하거나 파일 시스템을 만들지 마십시오. Linux에서 IRIX / SGI 시스템의 Linux 또는 IRIX / SGI 디스크에 대해 작업 할 경우에만이 유형의 레이블을 사용하십시오.

DOS 유형 파티션 테이블은 파티션을 무제한으로 설명 할 수 있습니다. 섹터 0에는 4 개의 파티션 ( '기본'이라고 함)의 설명을위한 공간이 있습니다. 이들 중 하나는 확장 파티션 일 수 있습니다. 이것은 논리 파티션을 담고있는 상자로, 링크 된 섹터 목록에있는 설명자가 있으며 해당 논리 파티션 앞에 각각 있습니다. 현재 존재하거나 존재하지 않는 4 개의 1 차 파티션은 숫자 1 - 4를 얻습니다. 논리 파티션은 5부터 번호 매기기를 시작합니다.

도스 유형 파티션 테이블에서 시작 오프셋과 각 파티션의 크기는 섹터의 절대 수 (32 비트 단위)와 실린더 / 헤드 / 섹터 수 (10 + 8 + 6 비트). 전자는 512MB 섹터로 최대 2TB까지 사용할 수 있습니다. 후자에는 두 가지 문제가 있습니다. 우선, 이러한 C / H / S 필드는 헤드 수와 트랙 당 섹터 수를 알고있을 때만 채울 수 있습니다. 둘째, 비록이 숫자가 무엇인지 알았더라도 사용 가능한 24 비트가 충분하지 않습니다. DOS는 C / H / S 만 사용하고 Windows 는 둘 다 사용하며 Linux는 C / H / S를 사용하지 않습니다.

가능한 경우 fdisk 는 디스크 지오메트리를 자동으로 가져옵니다. 이것은 반드시 실제 디스크 지오메트리는 아닙니다. (실제로 현대 디스크는 실제 지오메트리와 같은 것을 가지고 있지는 않습니다. 단순한 실린더 / 헤드 / 섹터 형식으로 설명 할 수있는 것이 아닙니다.)하지만 MS-DOS가 사용하는 디스크 지오메트리입니다. 파티션 테이블 용.

일반적으로 모든 것이 기본적으로 잘 수행되며 Linux가 디스크의 유일한 시스템 인 경우 아무런 문제가 없습니다. 그러나 디스크를 다른 운영 체제와 공유해야하는 경우 다른 운영 체제의 fdisk로 적어도 하나의 파티션을 만들도록하는 것이 좋습니다. 리눅스가 부팅 할 때 파티션 테이블을보고, 다른 시스템과 잘 조화되도록하기 위해 (가짜) 기하 구조가 필요하다는 것을 추론합니다.

파티션 테이블이 인쇄 될 때마다 파티션 테이블 항목에 일관성 검사가 수행됩니다. 이 검사는 물리적 및 논리적 시작점과 끝 점이 동일하며 파티션이 실린더 경계에서 시작되고 끝나는 지 확인합니다 (첫 번째 파티션 제외).

MS-DOS의 일부 버전은 실린더 경계에서 시작하지 않고 첫 번째 실린더의 섹터 2에서 첫 번째 파티션을 만듭니다. 실린더 1에서 시작하는 파티션은 실린더 경계에서 시작할 수 없지만 시스템에 OS / 2가 없으면 어려움을 초래하지는 않습니다.

파티션 테이블이 갱신 될 때 sync () 및 BLKRRPART ioctl () (디스크의 다시 읽기 파티션 테이블)은 종료 전에 수행됩니다. 오래전에는 fdisk를 사용한 후 재부팅해야했습니다. 더 이상 재부팅하지 않으면 아직 작성되지 않은 데이터가 손실 될 수 있습니다. 커널과 디스크 하드웨어 모두 데이터를 버퍼링 할 수 있습니다.

Dos 6.x 경고

DOS 6.x FORMAT 명령은 파티션의 데이터 영역의 첫 번째 섹터에서 일부 정보를 찾고이 정보를 파티션 테이블의 정보보다 더 안정적으로 취급합니다. DOS FORMAT은 크기 변경이 발생할 때마다 DOS FDISK가 파티션의 데이터 영역의 처음 512 바이트를 지울 것을 기대합니다. DOS FORMAT은 / U 플래그가 주어 지더라도이 추가 정보를 볼 것입니다 - 우리는 이것을 DOS FORMAT와 DOS FDISK의 버그라고 생각합니다.

결론은 cfdisk 또는 fdisk를 사용하여 DOS 파티션 테이블 항목의 크기를 변경하는 경우 DOS FORMAT을 사용하여 파티션을 포맷하기 전에 dd 를 사용하여 해당 파티션의 처음 512 바이트를 0으로 설정해야한다는 것입니다. 예를 들어, cfdisk를 사용하여 / dev / hda1에 대한 DOS 파티션 테이블 항목을 작성한 경우 (fdisk 또는 cfdisk를 종료하고 Linux를 재부트하여 파티션 테이블 정보가 유효 한 경우) "dd if = dev / hda1 bs = 512 count = 1 "을 지정하여 파티션의 처음 512 바이트 를 0으로 만듭니다.

작은 오타가 디스크의 모든 데이터를 쓸모 없게 만들 수 있기 때문에 dd 명령을 사용하면 매우주의 하십시오.

최상의 결과를 얻으려면 OS 고유의 파티션 테이블 프로그램을 항상 사용해야합니다. 예를 들어 DOS FDISK 프로그램을 사용하여 DOS 파티션을 만들고 Linux fdisk 또는 Linux cfdisk 프로그램을 사용하여 Linux 파티션을 만들어야합니다.

옵션

-b 섹터 크기

디스크의 섹터 크기를 지정하십시오. 유효한 값은 512, 1024 또는 2048입니다 (최근 커널은 섹터 크기를 알고 있습니다. 이전 커널에서만 사용하거나 커널의 아이디어를 무시하십시오.)

-C cyls

디스크의 실린더 수를 지정하십시오. 나는 왜 누군가가 그렇게하고 싶어하는지 알지 못합니다.

-H heads

디스크의 헤드 수를 지정하십시오. 물론 물리적 인 숫자는 아니지만 파티션 테이블에 사용되는 숫자입니다. 합리적인 값은 255와 16입니다.

-S 종파

디스크의 트랙 당 섹터 수를 지정하십시오. (물론 물리적 인 숫자는 아니지만 파티션 테이블에 사용 된 숫자입니다.) 적절한 값은 63입니다.

-엘

지정된 장치에 대한 파티션 테이블을 나열한 다음 종료하십시오. 장치가 주어지지 않으면 / proc / partitions에 언급 된 장치가 사용됩니다.

-유

파티션 테이블을 나열 할 때 실린더 대신 섹터 크기를 지정하십시오.

-s 파티션

파티션의 크기 (블록 단위)는 표준 출력에 인쇄됩니다.

-V

fdisk 프로그램의 버전 번호를 출력하고 종료하십시오.