저장 장치 드라이브를 포맷하는 터미널 방법


59

터미널에서 스토리지 드라이브를 포맷하는 방법을 알고 싶습니다. 답변에 도움이되는 것들이 종종 명령과 옵션에 대한 옵션으로 사용되어 향후 사용을 추정 할 수 있습니다. 특히 NTFS, FAT32, EXT4 등과 같은 다른 파일 시스템에서 포맷하는 방법을 알고 싶습니다. 터미널을 통해 드라이브를 파티션하는 방법에 대한 정보도 필요합니다.

터미널에서 대용량 외장 하드 드라이브 (EHDD)를 NTFS로 포맷하려고합니다.

나는 다른 GUI 프로그램뿐만 아니라 이것을 위해 gparted를 사용할 수 있다는 것을 알고 있지만, 여전히 터미널에서 어떻게 사용하고 싶습니다.


1
누구 -m에게나 걱정하는 사람에게는 예약 공간에 대한 옵션을 설명해야합니다 .
Volker Siegel

답변:


66

사용 가능한 몇 가지 옵션이 있습니다.

  1. fdisk(이전, GPT 4를 지원하지 않습니다 ).
  2. parted (GParted의 CLI 형제).
  3. mkfs이미 파티션이 있고 포맷을 원하는 경우 다양한 프로그램.

fdiskparted상호 작용, 그리고 도움 명령을, 그래서 당신은 항상 프로그램 내에서 도움을 찾을 수 있습니다. 둘 다 스크립트 가능합니다. mkfs명령은 상호 작용하지 않습니다.


fdisk

fdisk장치 (예 /dev/sda:)를 인수 로 예상합니다 . 다음과 같은 명령이 있습니다.

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)

나는 그렇게 fdisk많이 사용하지 않습니다 . 나는 단지 집중할 것이다 :


parted

parted인수 가 필요 하지 않지만 ( "추측"하려고 함) 항상 디스크를 지정해야합니다. 선택이 주어지면 parted선호하는 프로그램입니다. 다음과 같은 명령이 있습니다.

  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  resizepart NUMBER END                    resize partition NUMBER
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted

명령은 고유 한 접두사로 축소 될 수 있습니다 (예 :의 h약자 help).

/tmp/part명령을 표시하기 위해 만든 임시 파일 ( ) 을 사용 하므로 크기가 다소 작습니다. 필요한 장치로 교체해야합니다 ( /dev/sda예 :).

먼저, 디스크에 파티션 테이블이없는 경우 파티션 테이블을 만들어야합니다.

parted /tmp/part mklabel gpt

또는 mklabel msdos, 구식 4 차 파티션 ( MBR 또는 MSDOS 파티션 테이블 ) 을 원할 경우 . 그런 다음 우리는 3GB에서 시작하여 (즉, 초기 3G를 비워 둔 상태에서) 2GB (즉, 5GB로 끝나는) 크기의 ext4 파티션을 만듭니다. parted의 위치는 MB 단위로 예상 mkpartfs되지만 접미사를 지정할 수 있습니다.

parted /tmp/part mkpart primary ext4 3G 5G

그리고 또 다른 1GB의 NTFS 파티션 :

parted /tmp/part mkpart primary ntfs 5G 6G

결과:

# parted /tmp/part print
Model:  (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      3000MB  5000MB  2000MB               primary
 2      5000MB  6000MB  1000MB               primary  msftdata

SI 접두사를 사용하는 반면 GParted는 바이너리 접두사를 꾸준히 사용 합니다 (silly 삭제 i). 파티션에 레이블을 붙입니다.

# parted /tmp/part name 1 hello
# parted /tmp/part name 2 world
# parted /tmp/part print
Model:  (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name   Flags
 1      3000MB  5000MB  2000MB               hello
 2      5000MB  6000MB  1000MB               world  msftdata

parted파일 시스템의 파티션을 만들 수는 있지만 ntfs기존 파티션 (!)을 NTFS로 포맷 할 수는 없습니다.

mkfs partition fs-type
         Make a filesystem fs-type on partition. fs-type can be one 
         of "fat16", "fat32", "ext2", "linux-swap", or "reiserfs".

실제로 parted는 filesystems가 아닌 파티션을 조작하는 데 사용해야한다고 말합니다 .


mkfs

mkfs와 같이 fsck본질적으로 다양한 파일 시스템 특정 명령의 프론트 엔드입니다. 예를 들어 내 시스템에 mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, mkfs.ntfs, mkfs.vfat사용할 수 있습니다.

불행히도, parted위에서 사용한 파일과 같이 파일에서 mkfs제대로 작동 하는 동안 해당 파일의 파티션을 찾을 수는 없습니다. 사실, 내가 새 파일을 사용하는거야, 그래서 만약 장치를 차단하는 기대 /tmp/file를 위해 mkfs내가 그렇게 강제해야한다. 포맷하려는 파티션에 해당하는 블록 장치 (예 :)를 사용합니다 /dev/sda2. 일반적인 구문 mkfs은 다음과 같습니다.

# mkfs --help
Usage: mkfs [options] [-t type fs-options] device [size]

Options:
 -t, --type=TYPE  file system type, when undefined ext2 is used
     fs-options   parameters to real file system builder
     device       path to a device
     size         number of blocks on the device
 -V, --verbose    explain what is done
                  defining -V more than once will cause a dry-run
 -V, --version    output version information and exit
                  -V as version must be only option
 -h, --help       display this help and exit

For more information, see mkfs(8).

보시다시피, -t플래그는 파일 시스템 특정 플래그를 전달할 수 있습니다. 예를 들어 NTFS 플래그는 다음과 같습니다.

# mkfs.ntfs --help 
Usage: mkntfs [options] device [number-of-sectors]

Basic options:
    -f, --fast                      Perform a quick format
    -Q, --quick                     Perform a quick format
    -L, --label STRING              Set the volume label
    -C, --enable-compression        Enable compression on the volume
    -I, --no-indexing               Disable indexing on the volume
    -n, --no-action                 Do not write to disk

Advanced options:
    -c, --cluster-size BYTES        Specify the cluster size for the volume
    -s, --sector-size BYTES         Specify the sector size for the device
    -p, --partition-start SECTOR    Specify the partition start sector
    -H, --heads NUM                 Specify the number of heads
    -S, --sectors-per-track NUM     Specify the number of sectors per track
    -z, --mft-zone-multiplier NUM   Set the MFT zone multiplier
    -T, --zero-time                 Fake the time to be 00:00 UTC, Jan 1, 1970
    -F, --force                     Force execution despite errors

Output options:
    -q, --quiet                     Quiet execution
    -v, --verbose                   Verbose execution
        --debug                     Very verbose execution

Help options:
    -V, --version                   Display version
    -l, --license                   Display licensing information
    -h, --help                      Display this help

Developers' email address: ntfs-3g-devel@lists.sf.net
News, support and information:  http://tuxera.com

따라서 빠른 포맷 ( -Q)으로 NTFS 파티션을 만들어 비 블록 장치 파일 ( -F)에서 작동하도록하고 레이블 ( -L "hello world")을 설정해 봅시다 .

# mkfs -t ntfs -F -Q -L "hello world" /tmp/file
/tmp/file is not a block device.
mkntfs forced anyway.
The sector size was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 512 bytes.
The partition start sector was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

분명히 파일 작업을 좋아하지 않았습니다. :) 걱정하지 마십시오. 실제 디스크에서 작업 할 때 대부분의 값을 자동으로 감지해야합니다. 이 "파일"조차 파일 시스템으로 잘 작동합니다.

# mount -t ntfs-3g /tmp/file /mnt
# touch "/mnt/a file in mnt"
# ls -l /mnt
total 0
-rwxrwxrwx 1 root root 0 Aug 29 06:43 a file in mnt
# umount /mnt
# ls -l /mnt
total 0

(이상한 권한을 보시겠습니까?)


노트:

  1. 나는 sudo이 답변의 어느 곳에서도 아직 사용하지 않았습니다. 파일과 내가 소유 한 파일을 조작하고 있었기 때문에 필요하지 않았습니다 sudo. parted이것에 대해 경고합니다. 일반적으로 항상 소유하는 블록 장치의 경우 root, 당신은해야합니다 sudo(또는 당신을 통해 루트 쉘을 사용해야합니다 sudo -i또는 sudo su -).
  2. partedGNU 프로그램이며 많은 GNU 프로그램과 마찬가지로 info형식 에 대한 광범위한 문서를 가지고 있습니다. 설치 parted-doc( sudo apt-get install parted-doc) 한 다음 실행하십시오 info parted. 온라인 사용자 설명서를 확인할 수도 있습니다 .
  3. GParted는 적절한 mkfs프로그램을 직접 호출 할 때 파티션을 NTFS로 포맷 할 수 있습니다 ( mkntfs이 경우 mkfs.ntfs에는 링크 일뿐입니다 mkntfs). 또한 여러 매개 변수를 설정합니다. 실제로 대부분의 작업에서 GParted 메시지의 세부 정보를 검사하여 실행 된 명령을 확인할 수 있습니다.
  4. GPT vs MBR / MSDOS 파티션 테이블의 장점은 다루지 않지만 UEFI가있는 새로운 장치, 특히 Windows 8이 설치된 경우 GPT가 발견 될 수 있습니다. 파티셔닝 도구의 상태는? GPT에 직면 한 경우 사용할 수있는 도구에 대해 설명합니다.
  5. LVM, ZFS 및 btrfs는 완전히 다른 게임입니다. 그들은 모두 함께 제공되는 도구를 가지고 있으므로 parted또는 대신 ( 또는 fdisk파티션을 만드는 초기 단계 제외) 도구를 사용해야합니다 .

parted사용법 에 대한 참고 사항 :

parted프로그램 의 구문 은 다음과 같습니다.

parted [options] [device [command [options...]...]]

parted명령없이 실행하면 다음 과 같습니다.

parted /tmp/parted

위의 명령을 실행할 수있는 간단한 셸이 제공됩니다. 그러나 이러한 명령은 parted프로그램을 사용하여 직접 실행할 수도 있습니다 . 따라서이 세 가지는 동일합니다.

# parted /tmp/parted
GNU Parted 2.3
Using /tmp/parted
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt

# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /tmp/parted
Using /tmp/parted
(parted) mklabel gpt

parted /tmp/parted mklabel gpt

로 파티션을 생성 할 때 파티션 parted끝의 유용한 표시 -1s는 하이픈과 "s"사이의 "1"입니다. 파티션을 지정된 시작에서 나머지 디스크까지 확장하려는 경우에 유용합니다. 좀 더 구체적으로 말하면

parted /dev/sda -- mkpart primary ext4 3G -1s

/dev/sda3G에서 시작하여 /dev/sda디스크 의 마지막 섹터에서 끝나는 파티션을 만듭니다 (즉, 3G에서 나머지 디스크 전체에 걸쳐 있음). (가) 있습니다 --에 대한 필요가 1s유효하지 않은 옵션으로 해석 할 수 없습니다.


헤어에 IMHO, GDisk로, 일명 GPT fdisk를이 우수
에단 Reesor

1
@FireLizzard 우수! 사용법에 대한 답변을 게시하십시오.
muru

질문은 디스크 를 포맷 하는 방법에 관한 것이지만 왜 parted와 fdisk를 언급합니까? 당신은 자신을 언급했는데, parted로 디스크를 포맷 할 수는 없습니다.
zunder

@kreide : "터미널을 통해 드라이브를 분할하는 방법에 대한 정보도 필요합니다."
muru

11

먼저 fdisk 유틸리티로 하드 드라이브를 분할하는 방법을 설명합니다.

Linux는 4 개의 기본 파티션 만 허용합니다. 기본 파티션 중 하나를 세분화하여 훨씬 더 많은 수의 논리 파티션을 가질 수 있습니다.

기본 파티션 중 하나만 하위 분할 할 수 있습니다.

fdisk는 명령 프롬프트에서 루트 fdisk 장치로 입력하여 시작됩니다.

장치는 / dev / sda 또는 / dev / sdb와 같은 것일 수 있습니다.

필요한 기본 fdisk 명령은 다음과 같습니다.

p print the partition table

n create a new partition

d delete a partition

q quit without saving changes

w write the new partition table and exit

파티션 테이블에 대한 변경 사항은 write (w) 명령을 실행할 때까지 적용되지 않습니다.

다음은 샘플 파티션 테이블입니다.

Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1   *         1       184    370912+  83  Linux
/dev/sdb2           185       368    370944   83  Linux
/dev/sdb3           369       552    370944   83  Linux
/dev/sdb4           553       621    139104   82  Linux swap

예:

쉘 프롬프트에서 fdisk를 시작하십시오 :

sudo su
fdisk /dev/sdb 

SATA 컨트롤러에서 두 번째 드라이브를 사용하고 있음을 나타냅니다.

Command (m for help): p

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

That makes for 384Mb per partition. 
Now You get to work.


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

Next, You set up the partition You want to use for swap:


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<RETURN>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M

이제 파티션 테이블은 다음과 같습니다 :

 Device Boot      Start       End    Blocks   Id  System
/dev/sdb1             1       196    395104   83  Linux
/dev/sdb2           197       262    133056   83  Linux

마지막으로 첫 번째 파티션을 부팅 가능하게 만듭니다.

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

And You make the second partition of type swap:


Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)      
Command (m for help): p

최종 결과 :

Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1   *         1       196    395104+  83  Linux
/dev/sdb2           197       262    133056   82  Linux swap

마지막으로, 디스크에 테이블을 쓰려면 write 명령 (w)을 발행하십시오.


mkfs 유틸리티는 Linux 시스템에서 파일 시스템 (ext2, ext3, ext4 등)을 작성하는 데 사용됩니다.

파일 시스템을 작성할 mkfs에 장치 이름을 지정해야합니다.

사용 가능한 파일 시스템 빌더 명령보기

파일 시스템 빌더 (mkfs * 명령)는 일반적으로 / sbin /, / sbin / fs, /sbin/fs.d, / etc / fs 및 / etc와 같은 디렉토리에서 검색됩니다.

찾을 수 없으면 마지막으로 PATH 변수에있는 디렉토리를 검색합니다.

다음 목록은 시스템에서 사용 가능한 mkfs * 명령을 보여줍니다.

sudo su
cd /sbin
ls mkfs*

mkfs  mkfs.bfs  mkfs.cramfs  mkfs.ext2  mkfs.ext3  mkfs.ext4  mkfs.ext4dev  
mkfs.minix  mkfs.msdos  mkfs.ntfs  mkfs.vfat

특정 장치에서 파일 시스템 구축

mkfs 명령을 사용하여 파일 시스템을 빌드하기 위해 필요한 인수는 아래와 같이 device-filename 및 filesystem-type입니다.

다음 예제는 / ​​dev / sdb1 파티션에 ext4 파일 시스템을 만듭니다.

sudo su
mkfs -t ext4 /dev/sdb1 

mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1120112 inodes, 4476416 blocks
223820 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
137 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

mkfs 명령의 기본 파일 시스템 유형은 ext2입니다.

“-t”옵션을 지정하지 않으면 ext2 파일 시스템이 생성됩니다.

또한 앞에서 설명한 방법을 사용하여 ext2, ext3 또는 ext4 파일 시스템이 있는지 확인할 수 있습니다.


NTFS 드라이브 포맷

먼저 NTFS 파일 시스템을 만들 수있는 기능이 필요하므로 ntfsprogs를 설치하십시오.

sudo su 
apt-get install ntfs-3g

둘째, 파티션을 날려 버리고 NTFS로 다시 만듭니다.

sudo su 
umount /dev/sdb1
fdisk /dev/sdb

Options to select:

    ‘d’ to delete the partition
    ‘n’ to create a new partition
    ‘p’ for primary
    ‘1’ for partition number
    ‘Enter’ for first cylinder (default 1)
    ‘Enter’ for last cylinder (default of max size)
    ‘t’ for type
    ‘L’ to list codes, and enter code for HPFS/NTFS. In my case, it’s ‘7’
    ‘w’ to write changes to disk, and exit

umount /dev/sdb1

마지막 단계에서 Ubuntu가 자동으로 다시 마운트 했으므로 파티션을 마운트 해제합니다.

이제 파일 시스템을 만들어야합니다. 그것에 대해 두 가지 방법이 있습니다 : 성급한 방법 (빠른 형식) 또는 더 낫지 만 훨씬 긴 방법 (전체 형식).

빠른 포맷

이것은 단지 디스크 공간을 할당하지만 드라이브를 제로화하거나 불량 섹터를 검사하지는 않습니다. 이것은 몇 초가 걸린다는 것을 의미합니다.

sudo su 
mkfs.ntfs -f /dev/sdb1

풀 포맷

데이터 무결성에 더 관심이 있고 기다릴 염려가 없다면 전체 형식을 사용하십시오.

큰 드라이브를 0으로 만드는 데 몇 시간이 걸릴 수 있습니다!

sudo su 
mkfs.ntfs /dev/sdb1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.