1 ディスク・パーティションの使用

すべてのストレージ・デバイスをハード・ディスクからソリッド・ステート・ドライブ、SDカードに至るまで、パーティション化して使用可能にする必要があります。デバイスには少なくとも1つのパーティションが必要ですが、どのデバイスにも複数のパーティションを作成できます。

パーティション化では、ディスク・ドライブをパーティションと呼ばれる1つ以上の予約済領域に分割します。これらのパーティションに関する情報は、ディスク・ドライブ上のパーティション表に格納されます。OSは、ファイル・システムを含むことができる個別のディスクとして各パーティションを処理します。

バックアップの簡略化、システム・セキュリティの強化およびその他のニーズ(開発サンドボックスやテスト領域の設定など)を満たすために、追加のパーティションを作成します。ユーザー・ホーム・ディレクトリ、データベース、ログ・ファイル・ディレクトリなど、頻繁に変更されるデータを格納するパーティションを追加できます。

Oracle Linuxのディスク・パーティション

Oracle Linuxでは、rootファイル・システム用に1つのパーティションが必要です。さらに、他の2つのパーティションは通常、スワップ領域とブート・ファイル・システム用に予約されています。x86およびx86_64システムでは、ブート時にシステムBIOSがディスクの最初の1024シリンダのみにアクセスできます。ディスク上のこの領域に個別のブート・パーティションを構成すると、GRUBブート・ローダーは、カーネル・イメージおよびシステムのブートに必要な他のファイルにアクセスできるようになります。

マスター・ブート・レコード(MBR)を持つハード・ディスクの場合、パーティション化スキームは最大4つのプライマリ・パーティションをサポートします。また、プライマリ・パーティションは、さらに最大11個の論理パーティションに分割できます。論理パーティションを含むプライマリ・パーティションは拡張パーティションと呼ばれます。MBRスキームは最大2TBのディスクをサポートします。

GUIDパーティション表(GPT)があるハード・ディスクには、最大128個のパーティションを構成できます。GPTパーティション・スキームでは、拡張パーティションまたは論理パーティションの概念は使用されません。ディスクのサイズが2TBより大きい場合は、GPTを使用してデバイスのパーティションを構成します。

ノート:

ブロック・ストレージ・デバイスをパーティション化するときは、プライマリ・パーティションと論理パーティションを1MB (1048576バイト)境界に配置してください。パーティション、ファイル・システム・ブロックまたはRAIDストライプが不適切に配置され、基礎となるストレージのセクターまたはページの境界と重なる場合、デバイス・コントローラは、適切な配置が使用されている場合の2倍の数のセクターまたはページを変更します。この推奨事項は、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ(SSD)、ストレージ・アレイのLUN、ホストRAIDアダプタなど、ほとんどのブロック・ストレージ・デバイスに適用されます。

fdiskを使用したディスクのパーティション化

MBRを使用するハード・ディスクを作成および管理するには、fdiskコマンドを使用します。または、fdiskのテキストベースのグラフィカル・バージョンであるcfdiskユーティリティを使用することもできます。

fdiskを実行する前に、まず次の要件を完了します。

  • ディスク上のマウントされているパーティションをすべてアンマウントします。

  • swapoffコマンドを使用して、スワップ領域として使用中のパーティションを無効にします。

  • 構成するディスク上のデータをバックアップします。

fdiskは、対話型で使用することも、コマンドライン・オプションと引数を指定して直接使用することもできます。

ノート:

2つのモードは、特定のアクションの実行をサポートしているオプションによって異なる場合があります。対話型モードでサポートされているオプションをリストするには、モードのプロンプトでmと入力します。コマンドライン・モードでサポートされるオプションについては、次のように入力します。

fdisk -h

fdiskコマンドを対話型で実行するには、ディスク・デバイスの名前のみを引数として指定します。次に例を示します。

sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1)
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

次のコマンドは、パーティションの管理に役立ちます。

p

現在のパーティション表を表示します。

n

新しいパーティションを作成するプロセスを開始します。

t

パーティション・タイプを変更します。

ヒント:

サポートされているすべてのパーティション・タイプをリストするには、lと入力します。

w

パーティション表に加えた変更をコミットしてから、対話型セッションを終了します。

q

行った構成変更を無視し、セッションを終了します。

m

サポートされるすべてのコマンドを対話型モードで表示します。

詳細は、cfdisk(8)およびfdisk(8)の各マニュアル・ページを参照してください。

パーティション表の表示

パーティション表を表示するには、fdiskプロンプトでpと入力します。次に例を示します。

Command (m for help): p
Disk /dev/sda: 36.5 GiB, 39191576576 bytes, 76546048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x67fb0c7a

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048  1026047  1024000  500M 83 Linux
/dev/sda2       1026048 76546047 75520000   36G 8e Linux LVM

Command (m for help):

出力には、ディスク・サイズやディスク・ラベル・タイプなどのデバイス情報のサマリー、およびパーティションの詳細が含まれます。パーティションの詳細は、次のフィールド名で指定されます。

Device

デバイスの現在のパーティションをリストします。

Boot

ブート・パーティションをアスタリスク(*)で識別します。このパーティションには、GRUBブート・ローダーがシステムをブートするために必要なファイルが含まれています。ブート可能にできるパーティションは1つのみです。

StartおよびEnd

セクターの境界をマークするセクターの開始オフセットと終了オフセットをリストします。すべてのパーティションは1MB境界に配置されます。

Sectors

セクター・サイズを表示します。

Size

パーティション・サイズを表示します。

IdおよびType

代表番号と対応する代表番号のタイプを示します。

Oracle Linuxでは通常、次のタイプがサポートされています:

5 Extended

最大4つの論理パーティションを含めることができる拡張パーティション。

82 Linux swap

スワップ領域パーティション。

83 Linux

LVMで管理されないファイル・システム用のLinuxパーティション。これがデフォルトのパーティション・タイプです。

8e Linux LVM

LVMで管理されるLinuxパーティション。

パーティションの作成

次の例では、様々なfdiskインタラクティブ・コマンドを使用してディスクをパーティション化する方法を示します。/dev/sdbに2つのパーティションが作成されます。1番目のパーティションには2GBが割り当てられ、2番目のパーティションには残りのディスク領域がすべて使用されます。

sudo fdisk /dev/sdb

このコマンドでは、メニューベースのシステムが実行され、適切な応答を選択してパーティションを構成する必要があります。入力例は次の対話型セッションに表示されます。

...
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-32767999, default 2048): <Enter>
Last sector, +sectors or +size{K,M,G,T,P} (2048-32767999, default 32767999): +2G

Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (4196352-32767999, default 4196352): <Enter>
Last sector, +sectors or +size{K,M,G,T,P} (4196352-32767999, default 32767999): <Enter>

Created a new partition 2 of type 'Linux' and of size 13.6 GiB.

Command (m for help): p
Disk /dev/sdb: 15.6 GiB, 16777216000 bytes, 32768000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x460247f0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdb1          2048  4196351  4194304    2G 83 Linux
/dev/sdb2       4196352 32767999 28571648 13.6G 83 Linux

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

Calling ioctl() to re-read partition table.
Syncing disks.

partedを使用したディスクのパーティション化

GPTを使用するハード・ディスクを作成および管理するには、partedコマンドを使用します。このコマンドを使用すると、一般的なパーティション操作をfdiskとして実行できます。ただし、partedは、多数のコマンド・セットと、GPTディスクを含む多くのディスク・ラベル・タイプをサポートしているため、より高度な機能を備えています。

partedを実行する前に、まず次の要件を完了します。

  • ディスク上のマウントされているパーティションをすべてアンマウントします。

  • swapoffコマンドを使用して、スワップ領域として使用中のパーティションを無効にします。

  • 構成するディスク上のデータをバックアップします。

partedは、対話型で使用することも、コマンドライン引数を指定して直接使用することもできます。partedを対話型で実行するには、たとえば、次のように、ディスク・デバイスの名前のみを引数として指定します:

sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

次のコマンドは、パーティションの管理に役立ちます。

print

現在のパーティション表を表示します。

mklabel

選択したラベルに従ってパーティション・タイプを作成します。

mkpart

新しいパーティションを作成するプロセスを開始します。

quit

セッションを終了します。

ノート:

対話型セッションでは、変更はすぐにディスクにコミットされます。fdiskとは異なり、partedユーティリティには、変更を保存せずに終了するオプションはありません。

help

サポートされるすべてのコマンドを対話型モードで表示します。

パーティションの作成

次の例では、異なるpartedコマンドを使用して2つのディスク・パーティションを作成する方法を示します。1番目のパーティションには2GBが割り当てられ、2番目のパーティションには残りのディスク領域がすべて使用されます。

sudo parted /dev/sdb

このコマンドでは、メニューベースのシステムが実行され、適切な応答を選択してパーティションを構成する必要があります。入力例は次の対話型セッションに表示されます。

GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 16.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End  Size  Type  File system  Flags

(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? <Enter>
Start? 1
End? 2GB
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 16.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2000MB  1999MB  primary  ext2         lba

(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? <Enter>
Start? 2001
End? -0
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 16.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2000MB  1999MB  primary  ext2         lba
 2      2001MB  16.8GB  14.8GB  primary  ext2         lba

(parted) quit
                  

ノート:

特に指定しないかぎり、StartおよびEndオフセットのサイズはMBで表します。別の単位を使用するには、値と単位を一緒に入力してください(例: 2GB)。残りのすべてのディスク領域をパーティションに割り当てるには、例に示すように、Endオフセットに-0と入力します。

ラベルのカスタマイズ

デフォルトでは、partedではmsdosラベル付きパーティションを作成します。このラベルでパーティション化すると、パーティション・タイプも求められます。パーティション・タイプは、primaryextendedまたはlogicalです。

別のラベルを使用するには、パーティションを作成する前に、まずmklabelコマンドでそのラベルを指定する必要があります。次の例に示すように、ラベルに応じて、パーティション化プロセス中にパーティション名などの情報を求められます:

sudo parted /dev/sdb

このコマンドでは、メニューベースのシステムが実行され、適切な応答を選択してパーティションを構成する必要があります。入力例は次の対話型セッションに表示されます。

GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 16.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart
Partition name?  []? Example
File system type?  [ext2]? linux-swap
Start? 1
End? 2GB
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 16.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name     Flags
 1      1049kB  2000MB  1999MB  linux-swap(v1)  Example

(parted) quit
                  

partedでサポートされるファイル・システムとラベルのタイプを確認するには、『GNU Parted User Manual』(https://www.gnu.org/software/parted/manual/)を参照するか、info partedと入力してオンライン・ユーザー・マニュアルを表示します。詳細は、parted(8)マニュアル・ページを参照してください。

パーティションおよびファイル・システムの自動デバイス・マッピング

デバイス・マッピングは、Oracle Linuxでカーネルおよびudevサービスによって自動的に処理されます。ディスク・デバイスの場合、カーネルは/dev/sdxyの形式で非永続的なネーミング・スキームを使用して、ディスクとそのパーティションのデバイス・マッピングを自動的に作成します(たとえば/dev/sda1)。この方法の問題は、デバイスのネーミング・スキームがデバイスの検出順序に依存するため、デバイス名が簡単に変化する可能性があることです。通常、デバイス名はブート・プロセスが変更された場合、またはストレージ・デバイスや関連するコントローラに障害が発生した場合に変化します。

/etc/fstabでマウント・ポイントを構成するときは、非永続ディスクまたはパーティション名を使用しないでください。

Udevは、カーネルと連携してハードウェアまたはデバイスの変更を監視し、変更に関連するイベントを管理するサブシステムです。ストレージ・デバイス、パーティションおよびファイル・システムのすべてに、udevサブシステムが読み取って使用できる一意の識別子が割り当てられています。これを使用すると、使用するデバイスまたはパーティションの識別に使用できるデバイス・マッピングを自動的に構成できます。udevで管理されるストレージ・デバイスのデバイス・マッピングは/dev/disksに格納され、一意のパーティションUUID、ファイル・システムUUIDやパーティション・ラベルなどの様々な識別子でデバイスを識別できます。

/etc/fstabでマウント・ポイントを構成する場合は、ファイル・システムUUIDを使用するか、パーティション・ラベル(設定する場合)を使用します。次に例を示します:

UUID=8980b45b-a2ce-4df6-93d8-d1e72f3664a0 /boot   xfs     defaults        0 0
LABEL=home  /home  xfs  defaults 0 0

ファイル・システムは複数のデバイスにまたがることができるため、ファイル・システムUUIDに対するマウント・ポイントの定義は、パーティションUUIDまたはラベルを使用するよりも望ましいことに注意してください。ファイル・システムUUIDは、ファイル・システムの作成時に割り当てられ、ファイル・システム自体の一部として格納されます。ファイル・システムを別のデバイスにコピーすると、同じファイル・システムUUIDが保持されます。ただし、mkfsコマンドを使用してデバイスを再フォーマットすると、デバイスはファイル・システムUUIDを失い、新しいUUIDが生成されます。

デバイス・マッピング情報のリスト

lsblkコマンドを使用して、システムに接続されている任意のブロック・デバイスのデバイス情報をリストできます。

ヒント:

-o +UUIDオプションを使用すると、リストされた各デバイスとパーティションのUUIDが表示され、-fオプションを使用すると、重要なファイルシステム情報が表示されます。
lsblk -f

ファイル・システム・マッピングのツリーを示す出力は次のようになります:

NAME               FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                                                 
├─sda1             vfat        FAT16          DDD4-C455                                94.5M     5% /boot/efi
├─sda2             xfs                        8980b45b-a2ce-4df6-93d8-d1e72f3664a0      1.5G    26% /boot
└─sda3             LVM2_member LVM2 001       LzsEPR-Mnbk-kQZY-eV3n-9u1T-lFXZ-x7ANgD                
  ├─ocivolume-root xfs                        26029274-0a04-4dc5-b794-2576b9a16884     28.6G    25% /
  └─ocivolume-oled xfs                        3cbc8301-6f0e-4947-bbe6-f3669b9e6985      9.9G     1% /var/oled

udevadm infoコマンドを使用して、システム上のudevマッピングに関する情報を取得することもできます。次に例を示します。

sudo udevadm info /dev/sda3

出力は次のように表示されることがあります。これは、デバイスに対してudevが作成したすべてのデバイス・リンクと、デバイスにudevが保持しているその他の情報を示しています:

P: /devices/pci0000:00/0000:00:04.0/virtio1/host2/target2:0:0/2:0:0:1/block/sda/sda3
N: sda3
L: 0
S: disk/by-partuuid/18b918a1-16ca-4a07-91c6-455c6dc59fac
S: oracleoci/oraclevda3
S: disk/by-id/wwn-0x60170f5736a64bd7accb6a5e66fe70ee-part3
S: disk/by-path/pci-0000:00:04.0-scsi-0:0:0:1-part3
S: disk/by-id/scsi-360170f5736a64bd7accb6a5e66fe70ee-part3
S: disk/by-id/lvm-pv-uuid-LzsEPR-Mnbk-kQZY-eV3n-9u1T-lFXZ-x7ANgD
E: DEVPATH=/devices/pci0000:00/0000:00:04.0/virtio1/host2/target2:0:0/2:0:0:1/block/sda/sda3
E: DEVNAME=/dev/sda3
E: DEVTYPE=partition
E: DISKSEQ=9
E: PARTN=3
E: MAJOR=8
E: MINOR=3
E: SUBSYSTEM=block
E: USEC_INITIALIZED=20248855
E: ID_SCSI=1
E: ID_VENDOR=ORACLE
E: ID_VENDOR_ENC=ORACLE\x20\x20
E: ID_MODEL=BlockVolume
E: ID_MODEL_ENC=BlockVolume\x20\x20\x20\x20\x20
E: ID_REVISION=1.0
E: ID_TYPE=disk
E: ID_SERIAL=360170f5736a64bd7accb6a5e66fe70ee
E: ID_SERIAL_SHORT=60170f5736a64bd7accb6a5e66fe70ee
E: ID_WWN=0x60170f5736a64bd7
E: ID_WWN_VENDOR_EXTENSION=0xaccb6a5e66fe70ee
E: ID_WWN_WITH_EXTENSION=0x60170f5736a64bd7accb6a5e66fe70ee
E: ID_BUS=scsi
E: ID_PATH=pci-0000:00:04.0-scsi-0:0:0:1
E: ID_PATH_TAG=pci-0000_00_04_0-scsi-0_0_0_1
E: ID_PART_TABLE_UUID=a0b1f7d8-e84b-461f-a016-c3fcfed369c3
E: ID_PART_TABLE_TYPE=gpt
E: ID_SCSI_INQUIRY=1
E: ID_FS_UUID=LzsEPR-Mnbk-kQZY-eV3n-9u1T-lFXZ-x7ANgD
E: ID_FS_UUID_ENC=LzsEPR-Mnbk-kQZY-eV3n-9u1T-lFXZ-x7ANgD
E: ID_FS_VERSION=LVM2 001
E: ID_FS_TYPE=LVM2_member
E: ID_FS_USAGE=raid
E: ID_PART_ENTRY_SCHEME=gpt
E: ID_PART_ENTRY_UUID=18b918a1-16ca-4a07-91c6-455c6dc59fac
E: ID_PART_ENTRY_TYPE=e6d6d379-f507-44c2-a23c-238f2a3df928
E: ID_PART_ENTRY_NUMBER=3
E: ID_PART_ENTRY_OFFSET=4401152
E: ID_PART_ENTRY_SIZE=100456415
E: ID_PART_ENTRY_DISK=8:0
E: SCSI_TPGS=0
E: SCSI_TYPE=disk
E: SCSI_VENDOR=ORACLE
E: SCSI_VENDOR_ENC=ORACLE\x20\x20
E: SCSI_MODEL=BlockVolume
E: SCSI_MODEL_ENC=BlockVolume\x20\x20\x20\x20\x20
E: SCSI_REVISION=1.0
E: SCSI_IDENT_LUN_NAA_REGEXT=60170f5736a64bd7accb6a5e66fe70ee
E: UDISKS_IGNORE=1
E: DEVLINKS=/dev/disk/by-partuuid/18b918a1-16ca-4a07-91c6-455c6dc59fac 
   /dev/oracleoci/oraclevda3
   /dev/disk/by-id/wwn-0x60170f5736a64bd7accb6a5e66fe70ee-part3 
   /dev/disk/by-path/pci-0000:00:04.0-scsi-0:0:0:1-part3
   /dev/disk/by-id/scsi-360170f5736a64bd7accb6a5e66fe70ee-part3
   /dev/disk/by-id/lvm-pv-uuid-LzsEPR-Mnbk-kQZY-eV3n-9u1T-lFXZ-x7ANgD
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:

デバイスへのパーティション表の手動マッピング

kpartxユーティリティは、パーティション表を含むブロック・デバイスまたはファイルのパーティションをデバイス・ファイルにマップします。このコマンドは、パーティション表を読み取り、パーティションのデバイス・ファイルを作成し、/dev/mapperにデバイス・ファイルを格納します。各デバイス・ファイルは、デバイス上またはイメージ・ファイル内のディスク・ボリュームまたはディスク・パーティションを表します。

詳細は、kpartx(8)マニュアル・ページを参照してください。

kpartxを使用したデバイス・マッピングの作成

-aオプションは、デバイス・マッピングを作成します。次の例では、「パーティションの作成」で作成されたディスク・パーティションをマッピング作成の基礎として使用します。この例は、パーティション表を表示することから始まります。

  1. パーティション表を表示します。

    sudo fdisk -l /dev/sdb
    ...
    Device     Boot   Start      End  Sectors  Size Id Type
    /dev/sdb1          2048  3907583  3905536  1.9G 83 Linux
    /dev/sdb2       3907584 32767999 28860416 13.8G 83 Linux
  2. パーティションをマップします。

    sudo kpartx -av /dev/sdb
    add map sdb1 (253:2): 0 3905536 linear 8:16 2048
    add map sdb2 (253:3): 0 28860416 linear 8:16 3907584
  3. /dev/mapperの内容を表示します。

    ls /dev/mapper
    control  sdb1  sdb2  vg_main-lv_root  vg_main-lv_swap

kpartxを使用したデバイスのパーティション・マッピングのリスト

デバイス内のパーティションをリストするには、-lオプションを使用します。

次の例では、出力の最初の列は/dev/mapper内のデバイス・ファイルを識別します。

sudo kpartx -l /dev/sdb
sdb1 : 0 3905536 /dev/sdb 2048
sdb2 : 0 28860416 /dev/sdb 3907584

kpartxコマンドは、インストール・イメージなどのイメージ・ファイルでも機能します。たとえば、イメージ・ファイルsystem.imgの場合、次の操作を実行できます。

sudo kpartx -a system.img
sudo kpartx -l system.img
loop0p1 : 0 204800 /dev/loop0 2048
loop0p2 : 0 12288000 /dev/loop0 206848
loop0p3 : 0 4096000 /dev/loop0 212494848
loop0p4 : 0 2 /dev/loop0 16590848

前述のコマンドの出力は、ドライブ・イメージに4つのパーティションが含まれていることを示しています。

kpartxを使用したパーティション・マッピングの削除

パーティションが使用中でない場合は、-dオプションを使用してパーティションのデバイス・マッピングを削除できます:

sudo kpartx -d system.img
ls /dev/mapper
control