ストレージドライブをフォーマットするターミナル方式

ストレージドライブをフォーマットするターミナル方式

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

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

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

答え1

利用可能なオプションはいくつかあります:

  1. fdisk
  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 から始まり (つまり、最初の 3GB は空きのまま)、サイズが 2GB (つまり、5GB で終了) の ext4 パーティションを作成します。partedでは の場所が MB 単位で指定されますmkpartfsが、サフィックスを指定できます。

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

そしてもう 1 つは、1 GB の 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はパーティションを操作するためにそれを使うべきだと教えてくれます。ファイルシステムではないそれで、次のようになります。


mkfs

mkfsは、と同様に、本質的にはさまざまなファイルシステム固有のfsckコマンドのフロントエンドです。たとえば私のシステムでは、、、、、、、、、、、がmkfs.bfs利用可能です。mkfs.cramfsmkfs.ext2mkfs.ext3mkfs.ext4mkfs.ext4devmkfs.fatmkfs.minixmkfs.msdosmkfs.ntfsmkfs.vfat

さて、残念ながら、 はparted上で使用したようなファイルでは問題なく動作しますが、そのようなファイル内のパーティションを探すことはできません。実際、 はブロック デバイスを期待しているので、にmkfs新しいファイルを使用する場合は、強制的にそうする必要があります。 など、フォーマットするパーティションに対応するブロック デバイスを使用します。 の一般的な構文は次のとおりです。/tmp/filemkfs/dev/sda2mkfs

# 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: [email protected]
News, support and information:  http://tuxera.com

-Qそれでは、クイック フォーマット( )、非ブロック デバイス ファイルでの操作を強制 ( -F)、ラベルの設定 ( -L "hello world")を使用して、NTFS パーティションを作成しましょう。

# 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. partedはGNUプログラムであり、多くのGNUプログラムと同様に、info形式で広範なドキュメントが提供されています。parted-docsudo apt-get install parted-doc)をインストールしてから を実行しますinfo partedオンラインユーザーマニュアル
  3. mkfsGParted は、適切なプログラムを直接呼び出すため ( mkntfs、この場合、 -mkfs.ntfsは へのリンクにすぎません) 、パーティションを NTFS にフォーマットできますmkntfs。また、いくつかのパラメータも設定します。実際、ほとんどの操作では、GParted メッセージの詳細を調べて、どのコマンドが実行されたかを確認できます。
  4. GPT と MBR/MSDOS パーティション テーブルのメリットについては詳しく説明しません。ただし、特に Windows 8 がインストールされている UEFI 搭載の新しいデバイスでは、GPT が使用されている可能性が高くなります。パーティショニングツールの状態は?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/sdaは、3G から始まり、ディスクの最後のセクターで終わる/dev/sda(つまり、3G からディスクの残り全体に及ぶ)のパーティションを作成します。が無効なオプションとして解釈されない--ようにするには、 が必要であることに注意してください。1s

答え2

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

Linux では、プライマリ パーティションは 4 つしか作成できません。プライマリ パーティションの 1 つを細分化することで、論理パーティションの数を大幅に増やすことができます。

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

fdisk は、コマンド プロンプトで root として fdisk device と入力することで起動します。

デバイスは/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

パーティション テーブルに加えた変更は、書き込み (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 コマンドを使用してファイルシステムを構築するには、以下に示すように、デバイス ファイル名とファイルシステム タイプという引数が必要です。

次の例では、/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

関連情報