1 ストレージ・デバイスの構成
この章では、ディスク・パーティションとスワップ領域を構成および管理する方法について説明します。
ストレージおよびストレージ管理機能を備えたOracle Linux製品の詳細は、次のガイドを参照してください。
ディスク・パーティションの操作
ディスク・ドライブのパーティション化では、ディスク・ドライブをパーティションと呼ばれる1つ以上の予約済領域に分割し、これらのパーティションに関する情報をディスクのパーティション表に格納します。オペレーティング・システムは、ファイル・システムを含むことができる個別のディスクとして各パーティションを処理します。
Oracle Linuxでは、root
ファイル・システム用に1つのパーティションが必要です。通常、他の2つのパーティションがスワップ領域とブート・ファイル・システムに使用されます。x86およびx86_64システムでは、通常、ブート時にシステムBIOSがディスクの最初の1024シリンダのみにアクセスできます。ディスク上のこの領域に個別のブート・パーティションを構成すると、GRand Unified Bootloader (GRUB)ブート・ローダーが、カーネル・イメージおよびシステムのブートに必要な他のファイルにアクセスできるようになります。
追加のパーティションを作成して、バックアップの簡略化、システム・セキュリティの強化、および開発サンドボックスやテスト領域のセットアップなどの他のニーズを満たすことができます。通常、頻繁に変更されるデータ(ユーザー・ホーム・ディレクトリ、データベース、ログ・ファイル・ディレクトリなど)は、バックアップを容易にするために個別のパーティションに割り当てられます。
マスター・ブート・レコード(MBR)を使用するハード・ディスクのパーティション化スキームでは、最大4つのプライマリ・パーティションを作成できます。5つ以上のパーティションが必要な場合は、プライマリ・パーティションの1つを最大11個の論理パーティションに分割できます。論理パーティションを含むプライマリ・パーティションは拡張パーティションと呼ばれます。マスター・ブート・レコード(MBR)スキームは、最大2TBのサイズのディスクをサポートします。
GUIDパーティション表(GPT)があるハード・ディスクには最大128個のパーティションを構成でき、拡張パーティションや論理パーティションという概念はありません。ディスク・サイズが2TBを超える場合はGPTを構成する必要があります。
fdiskコマンドを使用してMBRの作成と管理を行うことができます。GPTを作成する場合は、partedコマンドを使用します。
ノート:
ブロック・ストレージ・デバイスをパーティション化するときは、プライマリ・パーティションと論理パーティションを1MB (1048576バイト)境界に配置してください。パーティション、ファイル・システム・ブロックまたはRAIDストライプが不適切に配置され、基礎となるストレージのセクターまたはページの境界と重なる場合、デバイス・コントローラは、適切な配置が使用されている場合の2倍の数のセクターまたはページを変更する必要があります。この推奨事項は、ハード・ディスク・ドライブ(spinning rust)、ソリッド・ステート・ドライブ(SSD)、ストレージ・アレイ上の論理ユニット番号(LUN)、ホストRAIDアダプタなど、ほとんどのブロック・ストレージ・デバイスに適用されます。
fdiskユーティリティによるパーティション表の管理
注意:
fdiskを使用して構成するディスク上のパーティションが現在マウントされている場合は、ディスクに対してfdiskユーティリティを実行する前にパーティションをアンマウントします。同様に、パーティションがスワップ領域として使用中の場合は、swapoffコマンドを使用してそのパーティションを無効にします。
データが含まれるディスクに対してfdiskユーティリティを実行するには、事前にデータを別のディスクまたはメディアにバックアップします。
fdiskユーティリティを使用してGPTハード・ディスクを管理することはできません。
fdiskユーティリティは、次を実行する場合に使用します。
-
パーティション表を作成します。
-
既存のパーティション表を表示します。
-
パーティションを追加および削除します。
または、fdiskユーティリティのテキストベースのグラフィカル・バージョンであるcfdiskユーティリティを使用することもできます。
fdiskユーティリティをインタラクティブに使用するか、またはコマンドライン・オプションと引数を使用してパーティションを指定できます。fdiskをインタラクティブに実行する場合は、ディスク・デバイスの名前のみを引数として指定します。たとえば:
sudo 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):
出力メッセージにある強力な推奨事項に基づいて、Command
プロンプトでcと入力してDOS互換モードをオフにし、uと入力してセクターを使用し、pコマンドを使用してパーティション表を表示します。
Command (m for help): c DOS Compatibility flag is not set Command (m for help): u Changing display/entry units to sectors Command (m for help): p Disk /dev/sda: 42.9 GB, 42949672960 bytes 255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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 Disk identifier: 0x0002a95d Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 83886079 41430016 8e Linux LVM
前の出力例は、/dev/sda
が42.9GBのディスクであることを示しています。最新のハード・ディスクでは論理ブロック・アドレス指定(LBA)がサポートされているため、トラックごとのヘッドおよびセクターの数に関する情報は重要ではなく、誤りである可能性があります。ディスクの先頭からの各パーティションの開始オフセットと終了オフセットが、セクターの単位で表示されます。デバイス・サマリーの後にパーティション表が表示され、次の情報が表示されます。
-
Device
-
パーティションに対応するデバイス。
-
Boot
-
GRUBブート・ローダーがシステムをブートするのに必要なファイルをパーティションに含める場合は、
*
を指定します。ブート可能にできるパーティションは1つのみです。 Start
およびEnd
-
セクター内の開始オフセットと終了オフセット。すべてのパーティションは1MB境界に配置されます。
-
Blocks
-
1KBブロック内のパーティションのサイズ。
Id
およびSystem
-
パーティション・タイプ。通常、Oracle Linuxでは次のパーティション・タイプが使用されます。
-
5 Extended
-
最大4つの論理パーティションを含めることができる拡張パーティション。
-
82 Linux swap
-
スワップ領域パーティション。
-
83 Linux
-
LVMで管理されないファイル・システム用のLinuxパーティション。これがデフォルトのパーティション・タイプです。
-
8e Linux LVM
-
LVMで管理されるLinuxパーティション。
-
nコマンドは新規パーティションを作成します。たとえば、2つのLinuxパーティションの内、1つはサイズが5GBで、もう1つはディスクの残りの領域を占有する場合、そのパーティション表エントリを/dev/sdc
に作成するには、次のようにします。
sudo fdisk -cu /dev/sdc
... Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-25165823, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-25165823, default 25165823): +5G Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First sector (10487808-25165823, default 10487808): <Enter> Using default value 10487808 Last sector, +sectors or +size{K,M,G} (10487808-25165823, default 25165823): <Enter> Using default value 25165823 Command (m for help): p Disk /dev/sdc: 12.9 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders, total 25165824 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 Disk identifier: 0xe6d3c9f6 Device Boot Start End Blocks Id System /dev/sdc1 2048 10487807 5242880 83 Linux /dev/sdc2 10487808 25165823 7339008 83 Linux
tコマンドを使用すると、パーティションのタイプを変更できます。たとえば、パーティション2のパーティション・タイプをLinux LVM
に変更するには、次のようにします。
Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Command (m for help): p ... Device Boot Start End Blocks Id System /dev/sdc1 2048 10487807 5242880 83 Linux /dev/sdc2 10487808 25165823 7339008 8e Linux LVM
新しいパーティション表を作成した後は、wコマンドを使用して表をディスクに書き込み、fdiskを終了します。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
かわりにqと入力すると、変更をディスクにコミットせずにfdiskが終了します。
詳細は、cfdisk(8)
およびfdisk(8)
の各マニュアル・ページを参照してください。
partedプログラムによるパーティション表の管理
注意:
partedプログラムを使用して構成するディスク上のパーティションが現在マウントされている場合は、ディスクに対してpartedを実行する前にパーティションをアンマウントします。同様に、パーティションがスワップ領域として使用中の場合は、swapoffコマンドを使用してそのパーティションを無効にします。
partedプログラムは、fdiskユーティリティよりも高度なプログラムで、GPTディスクを含めて、より多くのディスク・ラベル・タイプをサポートし、より大きなコマンドセットを実装しています。
データが含まれるディスクに対してpartedユーティリティを実行するには、事前にデータを別のディスクまたはメディアにバックアップします。
partedプログラムは、次を実行する場合に使用します。
-
ディスクにラベルを付けます。
-
パーティション表を作成します。
-
既存のパーティション表を表示します。
-
パーティションを追加、変更および削除します。
partedは、インタラクティブに使用するか、またはコマンドライン引数を指定できます。partedをインタラクティブに実行する場合は、ディスク・デバイスの名前のみを引数として指定します。たとえば:
sudo parted /dev/sda
GNU Parted 2.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
printコマンドは、パーティション表を表示します。
(parted) print
Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 525MB 524MB primary ext4 boot 2 525MB 42.9GB 42.4GB primary lvm
mklabelコマンドは新規パーティション表を作成します。
parted /dev/sdd
GNU Parted 2.1 Using /dev/sda 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/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? y
(parted) mklabel
New disk label type? gpt Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? y
通常は、ディスク・デバイスがGPTをサポートするかどうかに応じて、Oracle Linuxシステムのディスク・ラベル・タイプをgpt
またはmsdos
に設定します。既存のディスク・ラベルの上書きを確認するよう求められます。
mkpartコマンドは新規パーティションを作成します。
(parted) mkpart
Partition name? []? <Enter> File system type? [ext2]? ext4 Start? 1 End? 5GB
msdos
ラベルが付いたディスクの場合は、パーティション表タイプも入力するよう求められます(可能なタイプはprimary
、extended
またはlogical
です)。Oracle Linuxシステムでは、通常、ファイル・システム・タイプがfat16
、fat32
、ext4
またはlinux-swap
のいずれかに設定されます。
パーティションにbtrfs
、ext*
、ocfs2
またはxfs
ファイル・システムを作成する場合は、ファイル・システムとしてext4
を指定します。
GB (ギガバイト)などの単位を指定しないかぎり、パーティションの開始オフセットと終了オフセットはMB単位とみなされます。
End
でディスクの終わりを指定するには、-0
の値を入力します。
新規パーティションを表示するには、printコマンドを使用します。
(parted) print
Number Start End Size File system Name Flags 1 1049kB 5000MB 4999MB ext4
partedプログラムを終了するには、quitと入力します。
ノート:
mklabelやmkpartなどの様々なpartedコマンドが、変更をディスクに即時にコミットします。fdiskユーティリティと異なり、変更を保存せずに終了するオプションはありません。
詳細は、parted(8)
マニュアル・ページを参照するか、またはinfo partedコマンドを入力してオンライン・ユーザー・マニュアルを表示してください。
デバイスへのパーティション表のマッピング
kpartxユーティリティを使用して、パーティション表およびパーティション・イメージを含むブロック・デバイスまたはファイルのパーティションをマップできます。kpartxはパーティション表を読み取り、パーティションのデバイス・ファイルを/dev/mapper
に作成します。各デバイス・ファイルは、デバイス上またはイメージ・ファイル内のディスク・ボリュームまたはディスク・パーティションを表します。
-lオプションは、たとえば、インストール・イメージ・ファイル内で検出したパーティションをリストします。
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つのパーティションが含まれ、最初の列は/dev/mapper
に作成できるデバイス・ファイルの名前であることを示します。
-aオプションは、デバイス・マッピングを作成します。
sudo kpartx -a system.img sudo ls /dev/mapper
control loop0p1 loop0p2 loop0p3 loop0p4
パーティションにファイル・システムが含まれる場合は、パーティションをマウントし、パーティションに含まれるファイルを表示できます。たとえば:
sudo mkdir /mnt/sysimage sudo mount /dev/mapper/loop0p1 /mnt/sysimage sudo ls /mnt/sysimage
config-2.6.32-220.el6.x86_64 config-2.6.32-300.3.1.el6uek.x86_64 efi grub initramfs-2.6.32-220.el6.x86_64.img initramfs-2.6.32-300.3.1.el6uek.x86_64.img ...
sudo umount /mnt/sysimage
-dオプションは、デバイス・マッピングを削除します。
sudo kpartx -d system.img sudo ls /dev/mapper
control
詳細は、kpartx(8)
マニュアル・ページを参照してください。
スワップ領域について
Oracle Linuxでは、プロセスで現在使用しているテキスト(コード)やデータのページを格納する十分な物理メモリーがない場合に、スワップ領域が使用されます。さらに多くのメモリーが必要な場合は、非アクティブなページがディスク上のスワップ領域に書き込まれ、物理メモリーが解放されます。ただし、スワップ領域への書込みはシステム・パフォーマンスにマイナスの影響があるため、スワップ領域を増加することは、メモリー不足の効果的な解決策ではありません。スワップ領域はディスク・ドライブに配置され、アクセス時間は物理メモリーより大幅に遅くなります。スワップが頻繁に使用される場合は、スワップ領域ではなく、物理メモリーをさらに追加してください。
スワップ領域は、ファイル・システムのスワップ・ファイルまたは個別のスワップ・パーティションに構成できます。専用のスワップ・パーティションのほうが高速である一方、スワップ・ファイルのサイズ変更のほうが簡単です。システムに必要なスワップ領域の大きさが判明している場合は、スワップ・パーティションを構成します。それ以外の場合は、スワップ・ファイルの使用を開始して、システムに必要な大きさが判明したときにスワップ・パーティションを作成します。
スワップ領域使用量の表示
システムのスワップ領域の使用量を表示するには、/proc/swaps
の内容を調査します。
cat /proc/swaps
Filename Type Size Used Priority /dev/sda2 partition 4128760 388 -1 /swapfile file 999992 0 -2
この例では、/dev/sda2
の4GBのスワップ・パーティションと、/swapfile
の1GBのスワップ・ファイルの両方が使用されています。Priority
列では、スワップ・ファイルではなく、スワップ・パーティションに優先的にスワップされることを示しています。
次の例のように、/proc/meminfo
を表示したり、free、top、vmstatなどのユーティリティを使用してスワップ領域の使用量を表示することもできます。
grep Swap /proc/meminfo
SwapCached: 248 kB SwapTotal: 5128752 kB SwapFree: 5128364 kB
sudo free | grep Swap
Swap: 5128752 388 5128364
スワップ・ファイルの作成および使用
ノート:
Brtfsファイル・システムがサポートされていない環境にスワップ・ファイルを構成します。
スワップ・ファイルを作成して使用するには:
-
ddコマンドを使用して、必要なサイズのファイルを作成します(たとえば、ブロック・サイズ1KB、ブロック数100万)。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1000000
-
ファイルをスワップ・ファイルとして初期化します。
sudo mkswap /swapfile
-
スワップ・ファイルへのスワップを有効にします。
sudo swapon /swapfile
-
システムの次回再起動以降に使用されるように、スワップ・ファイルについて
/etc/fstab
にエントリを追加します。/swapfile swap swap defaults 0 0
スワップ・パーティションの作成および使用
スワップ・パーティションを作成して使用するには:
-
fdiskを使用してタイプ
82
(Linux swap
)のディスク・パーティションを作成するか、partedを使用して必要なサイズのlinux-swap
タイプのディスク・パーティションを作成します。 -
パーティション(たとえば、
/dev/sda2
)をスワップ・パーティションとして初期化します。sudo mkswap /dev/sda2
-
スワップ・パーティションへのスワップを有効にします。
sudo swapon /swapfile
-
システムの次回再起動以降に使用されるように、スワップ・パーティションについて
/etc/fstab
にエントリを追加します。/dev/sda2 swap swap defaults 0 0