ストレージドライブをフォーマットする最終方法


59

ターミナルからストレージドライブをフォーマットする方法を知りたい。回答で提供する有用なものは、多くの場合、将来の使用を推定するために使用できるコマンドおよび基本知識のオプションとして使用されます。具体的には、NTFS、FAT32、EXT4などのさまざまなファイルシステムでフォーマットする方法を知りたいです。端末を介してドライブをパーティション分割する方法に関する情報も必要です。

端末から-大容量の外付けハードドライブ(EHDD)をNTFSにフォーマットしようとしています。

私はこれと他のGUIプログラムにgpartedを使用できることを知っていますが、今でもターミナルからそれを行う方法を望んでいます。


1
誰にでも答える人:-m予約されたスペースのオプションを説明するようにしてください-それは、直感的であるため、関連しています。
フォルカーシーゲル14年

回答:


66

いくつかのオプションが利用可能です:

  1. fdisk(古い、GPT 4をサポートしていません)。
  2. parted (GPartedのCLI兄弟)。
  3. mkfsすでにパーティションがあり、フォーマットする場合は、さまざまなプログラム。

fdiskそしてpartedインタラクティブであり、ヘルプコマンドを持っているので、あなたは常にプログラム内のヘルプを探すことができます。両方ともスクリプト可能です。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

そしてもう1つ、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

GPartedは(愚かなことを落としながら)バイナリプレフィックスを確実に使用するのに対し、SIプレフィックスを使用する方法に注意してください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.bfsmkfs.cramfsmkfs.ext2mkfs.ext3mkfs.ext4mkfs.ext4devmkfs.fatmkfs.minixmkfs.msdosmkfs.ntfsmkfs.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

それでは、NTFSパーティションをクイックフォーマット(-Q)で作成し、非ブロックデバイスファイルを操作するように強制し(-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この回答ではまだ使用していません。ファイルと自分が所有するファイルを操作していたので、必要はありませんでしたsudopartedこれについて警告します。通常は、常にによって所有されているブロックデバイスの場合root、あなたが必要になりますsudo(または、経由ルートシェルを使用する必要がありますsudo -isudo su -)。
  2. partedGNUプログラムであり、多くのGNUプログラムと同様に、このinfo形式の広範なドキュメントがあります。インストールparted-docsudo apt-get install parted-doc)して実行しinfo partedます。オンラインユーザーズマニュアルご覧ください
  3. GPartedは、適切なmkfsプログラムを直接呼び出すため、パーティションをNTFSにフォーマットできます(mkntfsこの場合、- mkfs.ntfsへの単なるリンクですmkntfs)。また、いくつかのパラメーターを設定します。実際、ほとんどの操作では、GPartedメッセージの詳細を調べて、実行されたコマンドを確認できます。
  4. GPT対MBR / MSDOSパーティションテーブルのメリットについては説明しませんが、特にWindows 8がインストールされている場合、GPTはUEFIを搭載した新しいデバイスで見つかる可能性があります。パーティション分割ツールの状態は?GPTに直面している場合に利用できるツールについて説明します。
  5. LVM、ZFS、およびbtrfsはまったく別のゲームです。それらにはすべて付属のツールがあり、partedまたはfdisk(代わりにパーティションを作成する最初のステップを除いて)の代わりに使用する必要があります。

parted使用上の注意:

partedプログラムの構文は次のとおりです。

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

parted次のようなコマンドなしで実行すると:

parted /tmp/parted

上記のコマンドを実行できるシンプルなシェルが表示されます。ただし、これらのコマンドはpartedプログラムを使用して直接実行することもできます。したがって、これら3つは同等です。

# 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


私見、gdisk、別名GPT fdiskは、partedよりも優れています
イーサンリーザー

1
@FireLizzardすばらしい!使用方法の詳細を回答してください。
ムル

質問は明らかにディスクのフォーマット方法に関するものですが、なぜpartedとfdiskに言及しているのでしょうか?partedを使用してディスクをフォーマットすることはできません。
zunder

@kreideが再び読みました:「ターミナル経由でドライブをパーティション分割する方法に関する情報も必要です。」
ムル

11

まず、fdiskユーティリティを使用してハードドライブを実際にパーティション分割する方法を説明します。

Linuxでは、4つのプライマリパーティションのみが許可されます。プライマリパーティションの1つを細分割することで、はるかに多くの論理パーティションを作成できます。

プライマリパーティションの1つだけを分割できます。

コマンドプロンプトでルート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コントローラーで2番目のドライブを使用していることを示しています。

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

最後に、書き込みコマンド(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はパーティションを自動的にマウントし直したので、最後の手順でパーティションをマウント解除します。

次に、ファイルシステムを作成する必要があります。対処方法は2つあります:せっかちな方法(クイックフォーマット)、またはより良いがはるかに長い方法(フルフォーマット)です。

クイックフォーマット

これはディスクスペースを割り当てるだけですが、ドライブをゼロにしたり、不良セクタをチェックしたりすることはありません。これは、数秒かかることを意味します。

sudo su 
mkfs.ntfs -f /dev/sdb1

フルフォーマット

データの整合性を非常に心配していて、待つことを気にしない場合は、完全な形式を使用してください。

これは、大きなドライブをゼロにするのに数時間かかる場合があります!

sudo su 
mkfs.ntfs /dev/sdb1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.