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)
次のコマンドは、パーティションの管理に役立ちます。
-
現在のパーティション表を表示します。
- 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
ラベル付きパーティションを作成します。このラベルでパーティション化すると、パーティション・タイプも求められます。パーティション・タイプは、primary
、extended
または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オプションは、デバイス・マッピングを作成します。次の例では、「パーティションの作成」で作成されたディスク・パーティションをマッピング作成の基礎として使用します。この例は、パーティション表を表示することから始まります。
-
パーティション表を表示します。
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
-
パーティションをマップします。
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
-
/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つのパーティションが含まれていることを示しています。