ディスクのパーティション分割

はじめに

第17章はじめに

このビデオでは、この章で説明するトピックの概要を簡単に説明します。


学習目標
この章の終わりまでに、次のことができるようになります。

最も一般的な種類のハードディスクとデータ バスについて説明し、対比できます。
ディスク ジオメトリとその他のパーティション分割の概念を説明できます。
ディスク デバイスの命名方法と、関連するデバイス ノードの識別方法を理解できます。
パーティション方法の違いを識別して選択できます。
fdisk、blkid、lsblkなどのユーティリティを使用できます。
パーティション テーブルのバックアップと復元ができます。


ディスクのパーティション分割

一般的なディスクの種類
さまざまな種類のハードディスクがあり、それぞれが、接続されているデータ バスの種類、速度、容量、複数のドライブが同時に動作する頻度やその他の要因によって特徴付けられます。

クリックして各ボックスを展開し、さまざまな種類のハードディスクの詳細をご覧ください。

ディスクの種類

SATA（Serial Advanced Technology Attachment）
SATAディスクは、古いIDEドライブを置き換えるために設計されました。小さなケーブル サイズ（7ピン）、ネイティブ ホットスワップ、そしてより高速で効率的なデータ転送を提供します。SCSIデバイスと見なされます。

SCSI（Small Computer Systems Interface）
SCSIディスクの範囲はnarrow（8ビット バス）から wide（16ビット バス）であり、転送速度は毎秒5MB（narrow、標準SCSI）から毎秒160MB（Ultra-Wide SCSI-3）です。ほとんどのPCは、シングルエンデッド（Single-Ended）またはディファレンシャル（Differential）のSCSIドライブを使用します。残念ながら、この2つの種類は互換性がありません。幸いなことに、2種類のデバイスは同じコントローラ上で共存できます。シングルエンデッド デバイスは最大7台のデバイスをホストでき、最大ケーブル長は約6メートルです。ディファレンシャル コントローラは最大15台のデバイスをホストでき、最大ケーブル長は約12メートルです。

SAS (Serial Attached SCSI)
新しいポイントツーポイント（point-to-point）プロトコルを使用し、SATA ディスクよりも優れたパフォーマンスがあります。

USB (Universal Serial Bus)
これらには、フラッシュ ドライブとフロッピーが含まれます。そして SCSIデバイスと見なされます。

SSD (Solid State Drives)
最新のSSDドライブは価格が下がってきています。また、可動部品がなく、回転式のメディアを備えたドライブよりも消費電力が少なく、転送速度が高速です。内蔵SSDは、従来のドライブと同じ外形寸法で、同じ筐体に取り付けられます。SSDの価格はまだ少し高いですが、価格は下がってきています。同じマシンにSSDと回転式ドライブの両方を搭載するのが一般的です。SSDでは、頻繁にアクセスされパフォーマンスが重要とされるデータ転送が行われます。

IDEとEIDE（Integrated Drive Electronics, Enhanced IDE）
これらは使われなくなりました。


ディスク ジオメトリ
ディスク ジオメトリは、長い歴史を持つ回転式のメディアの概念です。ヘッド、シリンダ、トラック、セクタなどです。以下のスクリーンショットは、fdiskでジオメトリを表示する方法を示しています。

$ sudo fdisk -l /dev/sda

-lオプションの使い方に注目してください。このオプションは、対話モードに入ることなく、単にパーティション テーブルをリストします。

fdiskの使用例

回転式のディスクは1つ以上のプラッタで構成され、それぞれが1つ以上のヘッドで読み取られます。ディスクが回転すると、ヘッドはプラッタから円形のトラックを読み取ります。

これらの円形のトラックは、通常サイズが512バイトのセクタと呼ばれるデータ ブロックに分割されます。シリンダは、すべてのプラッタ上の同じトラックで構成されるグループです。

ドライブの内部電子回路は、実際にはそのほとんどが覆い隠されているため、物理的な構造イメージの重要性はほとんどなくなりました。さらに、SSDには可動部品や上記の構成部品のようなものはありません。

現在、ディスクのセクタ サイズは512バイトを超えています。4KBが使用可能になります。セクタ サイズを大きくすると転送速度が速くなる可能性がありますが、オペレーティング システムのサポートは、サイズを大きくすることに関してまだ十分に対応できていません。


パーティション構成
ディスクはパーティションに分割されます。配置的に言えば、これらは物理的に隣接するセクタまたはシリンダのグループで構成されています。パーティションは、ディスク上の物理的に連続した領域です。以下の2つのパーティション レイアウト標準規格があります。

MBR (Master Boot Record)
GPT (GUID Partition Table).

MBRは、MSDOSの初期にまでさかのぼります。MBRを使用する場合、ディスクには最大4つのプライマリ パーティションがあります。プライマリ パーティションの1つを拡張パーティションとして指定できます。拡張パーティションは、さらに15個の論理パーティションに分割できます。

MBRを使用する場合、たとえば/dev/sdaなどのSCSIの場合、/dev/sda1は最初のプライマリ パーティションで、/dev/sda2は2番目のプライマリ パーティションとなります。拡張パーティション/dev/sda3を作成した場合、それを論理パーティションに分割できます。4つ目以上のパーティションはすべて論理パーティションです（拡張パーティション内に含まれることを意味します）。拡張パーティションは1つしか存在できませんが、多数の論理パーティションに分割できます。

💡
Linuxでは、シリンダの境界でパーティションを開始または終了する必要はありませんが、他のオペレーティング システムでは必要あるかもしれません。このため、広く導入されているLinuxのパーティション分割ユーティリティも、うまく処理して境界で終了しようとします。もちろん、パーティションも重複してはいけません。

GPTはすべての最新システムに搭載されており、UEFI（Unified Extensible Firmware Interface）に基づいています。デフォルトでは、最大128個のプライマリ パーティションを持つことができます。GPTを使用する場合、拡張パーティションは必要ありません。パーティションのサイズは最大2<sup>33</sup>TBです（MBRの場合はわずか2TBです）。
//2の33乗です。


パーティションを使う理由
システム データを複数のパーティションに分割すると良い理由は、次のように複数あります。

オペレーティング システム ファイルからのユーザー データとアプリケーション データを分離できます
オペレーティング システムやマシン間で共有できます
異なるシステム部分に、異なるクォータとパーミッションを課すことにより、セキュリティを強化できます
サイズの配慮;　可変ストレージと揮発性ストレージを不変部分から分離できます
最も頻繁に使用されるデータをより高速なストレージ メディアに保存することで、パフォーマンスを強化できます
スワップ領域はデータから分離でき、ハイバネーション ストレージにも使用できます。

何を分割しパーティションをどのように分離するかは、よく考えて決定しなければなりません。個別のパーティションを持つ理由には、セキュリティ、クォータ、設定、サイズ制限の細分性の向上があります。データを保護するために個別のパーティションを持つことができます。

一般的なパーティション レイアウトには、ブート パーティション、ルート ファイルシステム(/)のパーティション、スワップ パーティション、および/homeディレクトリ ツリーのパーティションが含まれます。

インストール／作成 をした後にパーティションのサイズを変更することは難しいことを念頭に置いて計画しましょう。


MBRパーティション テーブル
ディスク パーティション テーブルはディスクのマスター ブート レコード（MBR）に含まれており、446バイトのブート レコードに続く64バイトがそれにあたります。ディスク上の1つのパーティションがアクティブとしてマークされることがあります。システムが起動する時に、MBRはそのパーティションからロードするアイテムを探します。

拡張パーティションは1つしか存在できないことに注意してください。ただし、そのパーティションにはいくつかの論理パーティションが含まれている場合があります。

MBR構造は、オペレーティング システムに依存しない規則で定義されています。最初の446バイトは、プログラム コード用に予約されています。通常は、ブートローダー プログラムの一部を保持します。次の64バイトは、最大4エントリのパーティション テーブル用です。オペレーティング システムは、ハードディスクを処理するためにこのテーブルを使います。

Linuxシステムでは、CHSの開始アドレスと終了アドレスは無視されます。

興味深いことに、MBRの末尾には、マジック ナンバー、シグネチャ ワード、またはセクタ マーカーとして知られる2バイトがあり、常に0x55AAの値を持っています。

MBRディスク パーティション テーブル

パーティション テーブルの各エントリは16バイト長で、それぞれ、4つの可能なプライマリ パーティションのうちの1つを記述します。それぞれの情報は次のとおりです。

アクティブ ビット
パーティションの開始セクタのアドレス。シリンダ／ヘッド／セクタ（CHS）形式（Linuxでは無視されます）
パーティションの種類のコード：xfs、LVM、ntfs、ext4、swapなどを示します
CHS形式のパーティションの最後のセクタのアドレス（Linuxでは無視されます）
開始セクタのアドレス、0からの通し番号
パーティション内のセクタの数

Linuxは、リニア ブロック アドレス（LBA）方式を使用して、最後の2つのフィールドのみを使用してアドレス指定をします。


GPTパーティション テーブル
最新のハードウェアにはGPTサポートが付いています。 MBRサポートは徐々に消えています。

GPTにあるProtective MBRは後方互換性のためにあり、UEFIシステムを古い方法で起動できます。

GPTヘッダーの2つのコピーがディスクの先頭と末尾にあり、以下のメタデータを記述しています。

ディスク上の使用可能なブロックのリスト
パーティションの数
パーティション エントリのサイズ。各パーティション エントリの最小サイズは128バイトです。

MBRディスク パーティション テーブル

blkidユーティリティ（後で説明します）は、パーティションに関する情報を表示します。

最新のUEFI/GPTシステムの場合：

ROOT@x7:/root>blkid /dev/sda6
/dev/sda6: LABEL="CENTOS7" UUID="77461ee7-c34a-4c5f-b0bc-29f4feecc743" 種類="ext4" PARTUUID="1f361af4-81e6-4a81-82
ROOT@x7:/root>

レガシーMBRシステムの場合：

c7:/teaching/LFCW/LFS301>sudo blkid /dev/sdb1
/dev/sdb1: LABEL="RHEL7" UUID="471dfeba-3ec7-4529-8069-2afe50762c57" 種類="ext4"

どちらの例も、パーティション自体ではなく、パーティション上のファイルシステムを表す一意のUUIDを提供しています。ファイルシステムが再フォーマットされると、このUUIDは変更されます。

GPTパーティションは、パーティションを識別するPARTUUIDも提供します。これはファイルシステムが再フォーマットされても同じ値のままです。ハードウェアがサポートしているのであればMBRシステムをGPTに移行することは可能ですが、その際にマシンが操作不能なることがあります。


ディスク デバイスとデバイス ノードの命名
Linuxカーネルは、/devディレクトリにあるデバイス ノードを介して低レベルでディスクとやり取りします。通常、デバイス ノードは、カーネルの仮想ファイルシステムのインフラを介してのみアクセスされます。デバイス ノードを介したrawアクセスは、ファイルシステムを破壊する非常に効率的な方法です。たとえば、パーティションをフォーマットするときに次のように行います。

$ sudo mkfs.ext4 /dev/sda9

SCSIとSATAディスクのデバイス ノードは、単純なxxy[z]命名規則に従います。xxはデバイスの種類（通常はsd）、yはドライブ番号（a、b、cなど）の文字、zはパーティション番号です。

最初のハードディスクは/dev/sda 
2番目のハードディスクは/dev/sdb 
など。

パーティションも次のように簡単に列挙できます。

/dev/sdb1は、2番目のディスクの最初のパーティションです
/dev/sdc4は、3番目のディスク上の4番目のパーティションです。

上記で、sdはSCSIまたはSATAディスクを意味します。IDEディスクがあった時代には、/dev/hda3、/dev/hdbなどと命名されていました。

ls -l /devを実行すると、現在利用可能なディスク デバイス ノードが表示されます。


SCSIデバイス名の詳細
SCSIデバイスの場合、第一、第二のハードディスクなどの意味をもう少し詳しく説明する必要があります。これらは、コントローラ番号／ ID番号の組み合わせによって決まります。

ドライブの指定（a、b、cなど）は、バス自体の位置ではなく、主にSCSIデバイスのID番号に基づいています。

たとえば、コントローラ0にターゲットID番号1と3があり、コントローラ1にターゲットID番号2と5（最後のドライブとして ID 2を持つ）の2つのSCSIコントローラがある場合、以下のようになります。

ID 1は/dev/sdaになります
ID 3は/dev/sdbになります
ID 2（コントローラ1上）は/dev/sdcになります
ID 5は/dev/sddになります


blkid
blkidは、ブロック デバイスを見つけてその属性についてレポートするユーティリティです。libblkidライブラリで動作します。特定デバイスまたはデバイスのリストを引数にできます。以下のスクリーンショットは、引数付きのblkidの使用例です。

$ sudo blkid /dev/sda*

blkidの使用例

blkidは、ブロック デバイスが保持するコンテンツの種類（ファイルシステム、スワップなど）、そしてコンテンツ メタデータ（LABELまたはUUIDフィールドなど）から属性（トークン、NAME=valueペア）を見つけます。

blkidは、フィンガー プリント可能なデータを含むデバイスでのみ動作します。たとえば、空のパーティションではブロックを識別するUUIDは生成しません。blkidには、2種類の操作形式があります。特定のNAME=valueペアを持つデバイスを検索することと、複数のデバイスのNAME=valueペアを表示することです。引数がなければ、すべてのデバイスについてレポートします。デバイスの指定方法とレポートする属性を指定するオプションはかなりの数あります。その他のコマンド例として以下があります。

$ sudo blkid

$ sudo blkid -L root


lsblk
ツリー形式でブロック デバイス情報を表示するユーティリティとしてlsblkがあります。例を次のスクリーンショットに示します。

lsblkの使用例


パーティションのサイズ変更
ほとんどのLinuxシステムでは、少なくとも2つのパーティションを使用する必要があります。

クリックして各ボックスを展開し、ルート パーティションとスワップ パーティションの詳細をご覧ください。

パーティション

/（ルート）
これは論理ファイルシステム全体に対して使用されます。

実際、ほとんどのインストールでは、複数のパーティションに複数のファイルシステムがあり、マウント ポイントで結ばれています。
ほとんどのファイルシステムでは、ルート パーティションのサイズを変更することは困難です。後で説明するLVMを使用すると、これが簡単にできます。
ルート パーティションだけでLinuxを実行することは確かに可能ですが、ほとんどのシステムはより多くのパーティションを使用して、バックアップの容易化、ディスク ドライブのより効率的な使用、セキュリティの強化を図っています。

スワップ
スワップは、物理メモリの拡張として使用されます。ファイルに書き戻されていないメモリのページは、再び必要になるまでディスクに移動できます。

スワップ サイズは物理メモリのサイズと同じにすることが推奨されています。場合によっては、２倍にすることが推奨されます。ただし、正しい選択はシステムの使い方とハードウェア機能によって異なります。このテーマに関する考え方の例は、SwapFaqウェブ ページ、および「Is a swap partition required for SLES?」の資料で見つけることができます。 

システムには、複数のスワップ パーティションやスワップ ファイルが存在する場合があります。

単一ディスク システムでは、スワップ パーティションを中央に配置してください。複数のディスク システムでは、スワップをディスクに分散してみてください。

スワップを追加しても、特定の時点で役に立たなくなるため、必ずしも効果があるとは限りません。メモリを追加するか、システムのセットアップを見直す必要があるでしょう。

スワップは仮想メモリとして使用されます。プロセスからのページが物理メモリから移動されるたびに、それらは通常はスワップ デバイスに格納されます。最近のUbuntuディストリビューションでは、デフォルトではパーティションではなくファイルにスワップを配置しています。


パーティション テーブルのバックアップと復元
ディスクのパーティションと再パーティションは危険な操作です。何か問題が発生した場合に状況を復元できるようにするには、パーティション テーブルのバックアップと復元の方法を知っておく必要があります。

次のように、ddを使用して簡単にバックアップできます。

$ sudo dd if=/dev/sda of=mbrbackup bs=512 count=1

最初のディスクのMBRをバックアップします。これには、その一部である64ビット パーティション テーブルも含まれます。

以下を実行することで、必要に応じてMBRを復元できます。

$ sudo dd if=mbrbackup of=/dev/sda bs=512 count=1

上記のコマンドはプライマリ パーティション テーブルのみをコピーすることに注意してください。他のパーティションに保存されているパーティション テーブルはコピーしません（拡張パーティションなど）。

🚩
ディスク パーティション テーブルを変更すると、ディスク上のすべてのファイルシステムのすべてのデータが削除される可能性があると、常に想定する必要があります（削除されるべきではありませんが、注意は必要です！）したがって、変更などの作業を行う前に、（まだバックアップされていない）すべてのデータのバックアップを行うことは賢明なことです。
 

特に、ddの使用には注意する必要があります。単純な入力ミスやオプションの誤用はディスク全体を破壊する可能性があります。したがって、バックアップを必ず行ってください！

GPTシステムの場合、次のようにsgdiskツールを使用するのが最適です。

x7:/tmp>sudo sgdisk --backup=/tmp/sda_backup /dev/sda
The operation has completed successfully.

x7:/tmp>sudo file sda_backup
sda_backup: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 1000215215 sectors, extended partition table (last)\011, code offset 0x63

純粋なMBRシステムで実行する場合は以下のようになります。

c7:/tmp>sudo sgdisk --backup=/tmp/sda_backup /dev/sda
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format in memory.
***************************************************************
The operation has completed successfully.

c7:/tmp>file /tmp/sda_backup
/tmp/sda_backup: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 3907029167 sectors, code offset 0xb8


パーティション テーブル エディタ
パーティション テーブルの管理に使用できるユーティリティは多数あります。

クリックして各カードを反転し、これらのユーティリティについて学習します。


fdisk
fdisk は、メニュー方式のパーティション テーブル エディタです。これは最も一般的で、最も柔軟なパーティション テーブル エディタの1つです。他のパーティション テーブル エディタと同様に、変更を行う前に、現在のパーティション テーブル設定を書き留めるか、現在の設定のコピーを作成してください。

sfdisk
sfdiskは非対話型のLinuxベースのパーティション エディタ プログラムであり、スクリプト作成に役立ちます。sfdiskツールは注意して使用してください！

parted
partedはGNUパーティション操作プログラムです。パーティション（特定のファイルシステムを含む）の作成、削除、サイズ変更、移動ができます。partedコマンドのGUIインターフェイスはgpartedです。

gparted
gpartedは、広く使用されているpartedのグラフィカル インターフェイスです。

gdisk
gdiskはGPTシステムに使用されますが、MBRシステムでも操作できます。

sgdisk
gdiskは、スクリプトまたはコマンド ライン インターフェイスです。

多くのLinuxディストリビューションには、CDROMまたはUSBスティックから実行できるライブ／インストール バージョンがあります。通常、これらのメディアにはgpartedのコピーが含まれています。パーティション プログラムの実行中には実際には使用されませんが、ディスク上のグラフィカル パーティション ツールとして簡単に使用できます。


fdiskの使用例
fdiskはどのLinuxインストールにも常に含まれるので、使用方法を学ぶことをお勧めします。fdiskを実行するには、root権限が必要です。処理は少し複雑になる可能性があり、注意が必要です。

fdiskインターフェイスはシンプルなテキスト メニュー方式です。次のように、まず特定のディスクで起動します。

$ sudo fdisk /dev/sdb

その後コマンドを入力します。主な（1文字の）コマンドは次のとおりです。

m：メニューを表示します。
p：パーティション テーブルの一覧を表示します。
n：新しいパーティションを作成します。
d：パーティションを削除します。
t：パーティションの種類を変更します。
w：新しいパーティション テーブル情報を書き込んで終了します。
q：変更せずに終了します。

幸いなことに、wを入力してパーティション テーブルをディスクに書き込むまで、実際の変更は行われません。したがって、wを使用してディスクに書き込む前に、（p を使用して）パーティション テーブルが正しいことを確認することが重要です。何かが間違っている場合は、qを使用して安全に終了できます。

システムは、再起動するまで新しいパーティション テーブルを使用しません。ただし、次のコマンドで再読み込みできます。

$ sudo partprobe -s

修正されたパーティション テーブルを試してみてください。ただし、これは常に確実に機能するとは限りません。パーティションの混在は壊滅的なものになる可能性があるため、新しいパーティションのフォーマットなどを行う前に再起動することをお勧めします。

いつでもできることとして、以下があります。

$ cat /proc/partitions

これでオペレーティング システムが現在認識しているパーティションを調べることができます。


デモ：ディスクのパーティション分割

このビデオは、fdiskの操作の簡単なデモを提供します。


演習

演習の要件
このセクションの演習では、mkfsを使ってファイルシステムのフォーマットを行い、mountを使ってルート ファイル ツリーにファイルシステムのマウントを行います。これらのコマンドについては、次のセッションで詳しく説明します。

このセクションの最初の3つの演習では、partedプログラムの有無にかかわらず、ループ デバイスの機能を使用します。

🚩
このコースの後半の演習では、パーティション分割されていないディスク領域が必要になります。大きな領域は必要はありません。1～2GBで十分です。自分のマシンを使用している場合は、その領域があるかどうか確認してください。もし、無ければ、gpartedを使うか、今まで説明した方法、もしくはこれから説明する方法で、パーティションとファイルシステム （こちらを先に！） を縮小して、空き領域を用意してください。

パーティション分割されていない実際の物理ディスク領域がある場合は、次の手順を実行する必要はありませんが、実習しておくことは有用です。


課題 17.1:ファイルをディスク パーティション イメージとして使う

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 17.1: Using a File as a Disk Partition Image

In this first exercise, we are going to create a file that will be used as a container for a full hard disk partition image, andfor all intents and purposes can be used like a real hard partition.  In the following exercise, we will show how to putmore than one partition on it and have it behave as an entire disk.

1.  Create a file full of zeros 1 GB in length:

$ dd if=/dev/zero of=imagefile bs=1M count=1024

You can make a much smaller file if you like or do not have that much available space in the partition you are creatingthe file on.

2.  Put a filesystem on it:

$ mkfs.ext4 imagefile
mke2fs 1.42.9 (28-Dec-2013)
imagefile is not a block special device.
Proceed anyway?(y,n) y
Discarding device blocks: done
.....

Of course you can format with a different filesystem, doing mkfs.ext3,mkfs.vfat,mkfs.xfsetc.

3.  Mount it somewhere:

$ mkdir mntpoint
$ sudo mount -o loop imagefile mntpoint

You can now use this to your heart’s content, putting files etc. on it.

4.  When you are done unmount it with:

$ sudo umount mntpoint

An alternative method to using theloopoption to mount would be:

$ sudo losetup /dev/loop2 imagefile
$ sudo mount /dev/loop2 mntpoint
....
$ sudo umount mntpoint
$ sudo losetup -d /dev/loop2

We will discuss losetup in a subsequent exercise, and you can use /dev/loop[0-7]b ut you have to be careful they are notalready in use, as we will explain.

You should note that using a loop device file instead of a real partition can be useful, but it is pretty worthless for doing anykind of measurements or benchmarking.  This is because you are placing one filesystem layer on top of another, which can only have a negative effect on performance, and mostly you just use the behavior of the underlying filesystem the image file iscreated on.


課題 17.2: ディスク イメージ ファイルをパーティション分割する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 17.2: Partitioning a Disk Image File

The next level of complication is to divide the container file into multiple partitions, each of which can be used to hold a filesystem, or a swap area.
You can reuse the image file created in the previous exercise or create a new one.

1.  Runfdiskon your imagefile:

$ sudo fdisk -C 130 imagefile
Device does not contain a recognized partition table
Building a new DOS disk label with disk identifier 0x6280ced3.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

The-C 130 sets the number of phony cylinders in the drive,  and is only necessary in old versions offdisk,  which unfortunately you will find on RHEL 6. However, it will do no harm on other distributions.

2.  Typemto get a list of commands:
m
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
g   create a new empty GPT partition table
G   create an IRIX (SGI) partition table
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):

3.  Create a new primary partition and make it 256 MB (or whatever size you would like:

Command (m for help): n

Partition type:
p   primary (0 primary, 0 extended, 4 free)
e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +256M
Partition 1 of type Linux and of size 256 MiB is set

4.  Add a second primary partition also of 256 MB in size:

Command (m for help): n

Partition type:
p   primary (1 primary, 0 extended, 3 free)
e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (526336-2097151, default 526336):
Using default value 526336
Last sector, +sectors or +size{K,M,G} (526336-2097151, default 2097151): +256M
Partition 2 of type Linux and of size 256 MiB is set

Command (m for help): p

Disk imagefile: 1073 MB, 1073741824 bytes, 2097152 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 label type: dos
Disk identifier: 0x6280ced3

Device Boot      StartEnd      Blocks   Id  System
imagefile1          2048      526335      262144   83  Linux
imagefile2          526336     1050623      262144   83  Linux

5.  Write the partition table to disk and exit:

Command (m for help): w

The partition table has been altered!

Syncing disks.

While this has given us some good practice, we haven’t yet seen a way to use the two partitions we just created.  We’ll startover in the next exercise with a method that lets us do so.


課題 17.3: losetupとpartedを使う

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 17.3: Using losetup and parted

We are going to experiment more with:
•  Loop devices andlosetup
• parted to partition at the command line non-interactively.

We expect that you should read the man pages for losetup and parted before doing the following procedures.
Once again, you can reuse the image file or, better still, zero it out and start freshly or with another file.

1.  Associate the image file with aloopdevice:
$ sudo losetup -f
/dev/loop1

$ sudo losetup /dev/loop1 imagefile

where the first command finds the firstfreeloop device. The reason to do this is you may already be using one or moreloop devices. For example, on the system that this is being written on, before the above command is executed:

$ losetup -a
/dev/loop0: []: (/usr/src/KERNELS.sqfs)

a squashfs compressed, read-only filesystem is already mounted using /dev/loop0. (The output of this command willvary with distribution.) If we were to ignore this and use losetup on /dev/loop0 we would almost definitely corrupt the file.

2.  Create a disk partition label on the loop device (image file):

$ sudo parted -s /dev/loop1 mklabel msdos

3.  Create three primary partitions on the loop device:

$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 0 256
$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 256 512
$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 512 1024

4.  Check the partition table:

$ fdisk -l /dev/loop1

Disk /dev/loop1: 1073 MB, 1073741824 bytes, 2097152 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 label type: dos
Disk identifier: 0x00050c11
Device Boot      Start         End      Blocks   Id  System
/dev/loop1p1               1      500000      250000   83  Linux
/dev/loop1p2          500001     1000000      250000   83  Linux
/dev/loop1p3         1000001     2000000      500000   83  Linux

5.  What happens next depends on what distribution you are on.  For example, on RHEL and Ubuntu you will find new device nodes have been created:

$ ls -l /dev/loop1*
brw-rw---- 1 root disk   7, 1 Oct  7 14:54 /dev/loop1
brw-rw---- 1 root disk 259, 0 Oct  7 14:54 /dev/loop1p1
brw-rw---- 1 root disk 259, 3 Oct  7 14:54 /dev/loop1p2
brw-rw---- 1 root disk 259, 4 Oct  7 14:54 /dev/loop1p3
and we will use them in the following.

6.  Put filesystems on the partitions:
$ sudo mkfs.ext3 /dev/loop1p1
$ sudo mkfs.ext4 /dev/loop1p2
$ sudo mkfs.vfat /dev/loop1p3

7.  Mount all three filesystems and show they are available:

$ mkdir mnt1 mnt2 mnt3
$ sudo mount /dev/loop1p1 mnt1
$ sudo mount /dev/loop1p2 mnt2
$ sudo mount /dev/loop1p3 mnt3
$ df -Th

Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/sda1                 ext4       29G  8.5G   19G  32% /
....
/dev/loop1p1              ext3      233M  2.1M  219M   1% mnt1
/dev/loop1p2              ext4      233M  2.1M  215M   1% mnt2
/dev/loop1p3              vfat      489M     0  489M   0% mnt3

8.  After using the filesystems to your heart’s content you can unwind it all:

$ sudo umount mnt1 mnt2 mnt3
$ rmdir mnt1 mnt2 mnt3
$ sudo losetup -d /dev/loop1


課題 17.4: 実ハードディスクをパーティション分割する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 17.4: Partitioning a Real Hard Disk

If you have real hard disk un-partitioned space available, experiment with fdisk to create new partitions, either primary orlogical within an extended partition. Write the new partition table to disk and then format and mount the new partitions.


知識チェック

「第17章 - ディスクのパーティション分割」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 17.1
新しい内部ディスクを既存のサーバーに追加する場合、システムを再起動した後に、ディスクを恒久的にマウントするためには、次の手順を実行する必要があります。最適な実行順序はどれですか。

ファイルシステムでフォーマットします
新しいパーティションを作成します
システムを再起動します
/etc/fstabを編集します
A. 1, 2, 3, 4
B. 2, 1, 3, 4
C. 2, 1, 4, 3
D. 2, 4, 1, 3

問題 17.2
/dev/sdaなどのストレージ デバイスの従来の名前は、ディスクが接続されているポートを変更したり、ディスクを別のサーバーに接続したりすると別の名前になる可能性があるため、識別の意味では信頼できません。Linuxでは、ストレージ デバイスの命名にラベルとUUIDを使用します。現在システムに接続されているブロック デバイスの、UUIDを表示するツールは次のうちどれですか。

A. fdisk
B. parted
C. blkid
D. lsblk

