Linuxディスクパーティションを管理するための10個のfdiskコマンド


fdiskスタンド(「固定ディスクまたはフォーマットディスク」の略)は、Linux/Unixシステムで最も一般的に使用されるコマンドラインベースのディスク操作ユーティリティです。 fdiskコマンドを使用すると、独自のユーザーフレンドリーなテキストベースのメニュー方式のインターフェイスを使用して、ハードドライブ上のパーティションを表示、作成、サイズ変更、削除、変更、コピー、および移動できます。

このツールは、新しいパーティション用のスペースの作成、新しいドライブ用のスペースの整理、古いドライブの再編成、およびデータの新しいディスクへのコピーまたは移動の点で非常に便利です。これにより、システムにあるハードディスクのサイズに基づいて、最大4つの新しいプライマリパーティションと論理(拡張)パーティションの数を作成できます。

この記事では、Linuxベースのシステムでパーティションテーブルを管理するための10の基本的なfdiskコマンドについて説明します。 fdiskコマンドを実行するには、rootユーザーである必要があります。そうでない場合、「コマンドが見つかりません」というエラーが発生します。

1.Linuxですべてのディスクパーティションを表示する

次の基本的なコマンドは、システム上の既存のすべてのディスクパーティションを一覧表示します。 (すべてのパーティションを一覧表示する)の「-l」引数は、Linuxで使用可能なすべてのパーティションを表示するためにfdiskコマンドとともに使用されます。パーティションはデバイスの名前で表示されます。例:/ dev/sda、/ dev/sdb、または/ dev/sdc。

[[email protected] ~]# fdisk -l

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

2.Linuxで特定のディスクパーティションを表示する

特定のハードディスクのすべてのパーティションを表示するには、デバイス名とともにオプション「-l」を使用します。たとえば、次のコマンドは、デバイス/ dev/sdaのすべてのディスクパーティションを表示します。デバイス名が異なる場合は、デバイス名を/ dev/sdbまたは/ dev/sdcと記述します。

[[email protected] ~]# fdisk -l /dev/sda

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

3.使用可能なすべてのfdiskコマンドを確認します

fdiskで使用可能なすべてのコマンドを表示したい場合。以下に示すように、/ dev/sdaなどのハードディスク名を指定して、次のコマンドを使用するだけです。次のコマンドは、以下のような出力を提供します。

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help):

「m」と入力すると、/ dev/sdaハードディスクで操作できるfdiskで使用可能なすべてのコマンドのリストが表示されます。画面に「m」と入力すると、/ dev/sdaデバイスで使用できるfdiskで使用可能なすべてのオプションが表示されます。

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
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)

Command (m for help):

4.Linuxですべてのパーティションテーブルを印刷します

ハードディスクのすべてのパーティションテーブルを印刷するには、/ dev/sdaなどの特定のハードディスクのコマンドモードである必要があります。

[[email protected] ~]# fdisk /dev/sda

コマンドモードから、前に行ったように「m」の代わりに「p」を入力します。 「p」と入力すると、特定の/ dev/sdaパーティションテーブルが出力されます。

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

Command (m for help):

5.Linuxでパーティションを削除する方法

/ dev/sdaなどの特定のハードディスクから特定のパーティション(つまり、/ dev/sda9)を削除する場合。これを行うには、fdiskコマンドモードである必要があります。

[[email protected] ~]# fdisk /dev/sda

次に、「d」と入力して、特定のパーティション名をシステムから削除します。 「d」と入力すると、/ dev/sdaハードディスクから削除するパーティション番号を入力するように求められます。ここに番号「4」を入力すると、パーティション番号「4」(つまり/ dev/sda4)ディスクが削除され、パーティションテーブルに空き領域が表示されます。 「w」を入力してテーブルをディスクに書き込み、パーティションテーブルに新しい変更を加えた後に終了します。新しい変更は、システムを次に再起動した後にのみ行われます。これは、以下の出力から簡単に理解できます。

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
You have new mail in /var/spool/mail/root

警告:オプション「d」を使用すると、システムからパーティションが完全に削除され、パーティション内のすべてのデータが失われる可能性があるため、この手順を実行するときは注意してください。

6.Linuxで新しいパーティションを作成する方法

デバイスの1つに空き容量が残っている場合は、/ dev/sdaと言い、その下に新しいパーティションを作成します。次に、/ dev/sdaのfdiskコマンドモードである必要があります。次のコマンドを入力して、特定のハードディスクのコマンドモードに入ります。

[[email protected] ~]# fdisk /dev/sda

コマンドモードに入った後、「n」コマンドを押して、/ dev/sdaの下に特定のサイズの新しいパーティションを作成します。これは、与えられた出力に従うことで実証できます。

[[email protected] ~]# fdisk  /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e

新しいパーティションを作成するときに、「拡張」または「プライマリ」パーティションの作成という2つのオプションが表示されます。拡張パーティションの場合は「e」を押し、プライマリパーティションの場合は「p」を押します。次に、次の2つの入力を入力するように求められます。

  1. First cylinder number of the partition to be create.
  2. Last cylinder number of the partition to be created (Last cylinder, +cylinders or +size).

最後のシリンダーに「+ 5000M」を追加すると、シリンダーのサイズを入力できます。ここで、「+」は追加を意味し、5000Mは新しいパーティションのサイズ(つまり5000MB)を意味します。新しいパーティションを作成した後、「w」コマンドを実行してパーティションテーブルへの新しい変更を変更および保存し、最後にシステムを再起動して、新しく作成されたパーティションを確認する必要があることに注意してください。

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

7.Linuxでパーティションをフォーマットする方法

新しいパーティションが作成されたら、「mkfs」コマンドを使用して新しく作成されたパーティションをフォーマットするためにスキップしないでください。ターミナルで次のコマンドを入力して、パーティションをフォーマットします。ここで/ dev/sda4は、新しく作成したパーティションです。

[[email protected] ~]# mkfs.ext4 /dev/sda4

8.Linuxでパーティションのサイズを確認する方法

新しいパーティションをフォーマットした後、fdiskコマンドでフラグ「s」(サイズをブロック単位で表示)を使用して、そのパーティションのサイズを確認します。このようにして、特定のデバイスのサイズを確認できます。

[[email protected] ~]# fdisk -s /dev/sda2
5194304

9.パーティションテーブルの順序を修正する方法

論理パーティションを削除して再度作成した場合、「パーティションの順序が正しくありません」という問題や、「パーティションテーブルのエントリがディスクの順序にありません」などのエラーメッセージが表示される場合があります。

たとえば、(sda4、sda5、sda6)などの3つの論理パーティションが削除され、新しいパーティションが作成された場合、新しいパーティション名はsda4になると予想される場合があります。しかし、システムはそれをsda5として作成します。これは、パーティションが削除された後、sda7パーティションがsda4として移動され、空き領域が最後に移動したために発生します。

このようなパーティション順序の問題を修正し、新しく作成されたパーティションにsda4を割り当てるには、「x」を発行して追加機能セクションに入り、「f」エキスパートコマンドを入力して、以下に示すようにパーティションテーブルの順序を修正します。

[[email protected] ~]# fdisk  /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): x

Expert command (m for help): f
Done.

Expert command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

「f」コマンドを実行した後、「w」コマンドを実行して保存し、fdiskコマンドモードを終了することを忘れないでください。パーティションテーブルの順序を修正すると、エラーメッセージは表示されなくなります。

10.パーティションのブートフラグ(*)を無効にする方法

デフォルトでは、fdiskコマンドは各パーティションにブートフラグ(つまり「*」)記号を表示します。特定のパーティションでブートフラグを有効または無効にする場合は、次の手順を実行します。

[[email protected] ~]# fdisk  /dev/sda

「p」コマンドを押して現在のパーティションテーブルを表示すると、以下に示すように、/ dev/sda1ディスクにブートフラグ(オレンジ色のアスタリスク(*)記号)があることがわかります。

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

次に、コマンド「a」を入力してブートフラグを無効にし、パーティション番号「1」を(つまり、/ dev/sda1)として入力します。これにより、パーティション/ dev/sda1のブートフラグが無効になります。これにより、アスタリスク(*)フラグが削除されます。

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

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

Command (m for help):

fdiskコマンドのほとんどすべての基本コマンドを含めるように最善を尽くしましたが、それでもfdiskには、「x」を入力して使用できる他のさまざまなエキスパートコマンドが含まれています。詳細については、ターミナルから「manfdisk」コマンドを確認してください。重要なコマンドを見逃した場合は、コメントセクションから共有してください。

また読む:

  1. 12 “df” Commands to Check Disk Space in Linux
  2. 10 Useful “du” Commands to Find Disk Usage of Files and Directories