Linux ディスクとディスク パーティションを理解するための記事

Linux ディスクとディスク パーティションを理解するための記事

序文

Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。これらのファイルをデバイス ファイルと呼びます。ハード ディスクに対応するデバイス ファイルは、一般にブロック デバイス ファイルと呼ばれます。

この記事では、Linux システムでディスク デバイスを表現する方法と、ディスク パーティションを作成する方法について説明します。

なぜ複数のパーティションが必要なのでしょうか?

データ損失の防止: システムにパーティションが 1 つしかない場合、このパーティションが破損すると、ユーザーはすべてのデータを失うことになります。

ディスク領域の使用効率を向上: 異なるブロック サイズでパーティションをフォーマットできます。1K のファイルが多数あり、ハード ディスク パーティションのブロック サイズが 4K の場合、保存されるファイルごとに 3K の領域が無駄になります。このとき、これらのファイル サイズの平均値を取ってブロック サイズを分割する必要があります。

データが限界まで急増してもシステムがハングアップすることはありません。ユーザー データとシステム データを分離することで、ユーザー データがハード ディスク全体を占有してシステムがハングアップすることを回避できます。

ディスクの分類

より一般的なディスク タイプには、サーバーで使用される SCSI ハード ドライブ、消費者市場で使用される SATA ハード ドライブ、そしてもちろん現在普及しているさまざまなソリッド ステート ドライブが含まれます。

SCSIハードディスク

SCSI ハードディスクは、SCSI インターフェイスを使用するハードディスクです。優れたパフォーマンスと高い安定性のため、サーバーで広く使用されています。同時に、非常に高価です。価格が高いため、通常の PC ではほとんど見かけません。 SCSI ハードディスクは、通常のハードディスク インターフェイスに似た 50 ピン インターフェイスを使用します (次の図はインターネットから取得したものです)。

SATAハードドライブ

SATA (シリアル ATA) ポートを備えたハードディスクは、シリアルポート ハードディスクとも呼ばれます。シリアル ATA はシリアル接続モードを採用しています。シリアル ATA バスは埋め込みクロック信号を使用し、より強力なエラー訂正能力を備えています。従来と比較すると、最大の違いは、データだけでなく転送命令もチェックできることです。エラーが見つかった場合は自動的に修正されるため、データ転送の信頼性が大幅に向上します。シリアル インターフェイスには、構造がシンプルでホットスワップをサポートしているという利点もあります (次の画像はインターネットから取得したものです)。

ソリッドステートドライブ

ソリッド ステート ディスクは、一般に SSD ハード ディスクと呼ばれ、制御ユニットとストレージ ユニット (FLASH チップ、DRAM チップ) で構成されるソリッド ステート電子ストレージ チップ アレイで作られたハード ディスクです。その主な特徴は、従来のハードディスクのような機械的な構造を持たず、非常に高速な読み取りおよび書き込み速度を備えていることです (次の画像はインターネットから引用したものです)。

Linux におけるディスクデバイスの表現

Linux システムにおけるディスク デバイス ファイルの命名規則は次のとおりです。

メジャーデバイス番号 + マイナーデバイス番号 + ディスクパーティション番号

現在一般的なディスクの場合、一般的に次のように表現されます。

sd[az]x

メジャーデバイス番号はデバイスのタイプを表します。メジャーデバイス番号が同じであれば、デバイスのタイプも同じであることを示します。現在の共通ディスクのメジャーデバイス番号は sd です。

マイナーデバイス番号は、同じ種類のデバイス間のシリアル番号を表し、「az」で表されます。たとえば、/dev/sda は最初のディスクを表し、/dev/sdb は 2 番目のディスクを表します。

x はディスクパーティション番号を表します。各ディスクには複数のパーティションが存在する場合があります。各パーティションについて、Linux は /dev/sdbx を使用してそれを表します。ここで、x は 2 番目のディスクの x 番目のパーティションを表します。

次の図に示すように:

システムには、/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd の 4 つのディスクがあります。 /dev/sda には /dev/sda1、/dev/sda2、/dev/sda5 の 3 つのパーティションが作成されますが、/dev/sdb には /dev/sdb1 という 1 つのパーティションのみが作成されます。 /dev/sdc と /dev/sdd はまだパーティション分割されていません (またはパーティションが 1 つしかなく、パーティション名がディスク名と同じです)。

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

ディスク パーティションを作成する目的はいくつか考えられます。

  • データセキュリティの向上(1 つのパーティションのデータ破損が他のパーティションのデータに影響しない)
  • 複数のオペレーティングシステムのインストールをサポート
  • 複数の小さなパーティションは、1つの大きなパーティションに比べてパフォーマンスが向上します。
  • データの整理の改善

ディスク パーティションは、プライマリ パーティション、拡張パーティション、および論理パーティションで構成されます。ディスク上のプライマリ パーティションの最大数は 4 です。拡張パーティションもプライマリ パーティションであり、拡張パーティションは最大 1 つしか作成できませんが、拡張パーティション上に複数の論理パーティションを作成できます。したがって、プライマリパーティション(拡張パーティションを含む)の範囲は 1 ~ 4 で、論理パーティションは 5 から始まります。論理パーティションについては、Linux では、プライマリ パーティションではなく拡張パーティション上に作成する必要があることが規定されています。

プライマリ パーティションは、オペレーティング システムの起動に使用されます。主にオペレーティング システムのスタートアップ プログラムまたはブート プログラムが格納されます。したがって、オペレーティング システムのブート プログラムはプライマリ パーティションに配置することをお勧めします。たとえば、Linux の /boot パーティションはプライマリ パーティションに配置するのが最適です。

拡張パーティションは、論理パーティションの「コンテナ」にすぎません。実際、データの保存にはプライマリ パーティションと論理パーティションのみが使用されるため、データはディスクの論理パーティションに保存できます。

fdisk コマンドを使用してディスク パーティション情報を表示できます。

$ sudo fdisk -l /dev/sda 

出力の最初の数行は、合計サイズ 80G、セクターの合計数、各セクターのサイズなど、ディスクに関する基本情報です。赤いボックスには、私たちが最も関心を持っているパーティション情報が含まれています。

  • 最初の列「デバイス」には、ディスク パーティションに対応するデバイス ファイル名が表示されます。
  • 2 番目の列「Boot」は、それがブート パーティションであるかどうかを示します。上の図では、/dev/sda1 がブート パーティションです。
  • 3 番目の列「開始」は、ディスク パーティションの開始位置を示します。
  • 4 番目の列「End」は、ディスク パーティションの終了位置を示します。
  • 5 番目の列「セクター」は、パーティションによって占有されているセクターの数を示します。
  • 6 番目の列「サイズ」にはパーティションのサイズが表示されます。
  • 7 列目と 8 列目には同じ内容が表示されます。それぞれ数値 ID とそのテキストの説明です。 Id 列には、ディスク パーティションに対応する ID が表示されます。パーティションに対応する ID 番号は、パーティションによって異なります。 Linux では、83 はプライマリ パーティションと論理パーティションを表し、5 は拡張パーティションを表し、8e は LVM パーティションを表し、82 はスワップ パーティションを表し、7 は NTFS パーティションを表します。

上の図の情報は、/dev/sda1 がプライマリ パーティションであり、ブート パーティションとして使用されていることを示しています。/dev/sda2 は、論理パーティション /dev/sda5 が 1 つだけある拡張パーティションであり、2 つのパーティションのサイズが同じであるという事実によって証明できます。

fdiskを使用してディスクをパーティション分割する

fdisk は、Linux システムの強力なディスク パーティション管理ツールです。ハード ディスクの使用状況を監視でき、ディスク パーティションの管理にも使用できます。この記事では、fdisk を使用して新しいディスク パーティションを作成する方法についてのみ説明します。

Linux システムに新しいディスクが追加され、システムの対応するデバイス名が /dev/sdd であるとします。ここで、fdisk コマンドを使用してディスクをパーティション分割します。

$ sudo fdisk /dev/sdd 

新しいパーティションを作成するには、コマンド n を入力します。

上記のプロンプトに従って、プライマリ パーティションを作成するために p を選択すると、パーティション番号を入力するように求められます。

プライマリ パーティションには 1 ~ 4 の番号が付けられており、ここでは 1 を入力しました。次にパーティションサイズを設定します。

パーティションのサイズは、パーティションの開始セクターと終了セクターを設定することによって設定されます。ここで Enter キーを 2 回押すと、ディスク全体が 1 つのパーティションに分割されます。つまり、ディスク全体のコンテナーが 1 つのパーティションに分割されます。この単純なパーティションはほぼ完成です。パーティション情報はまだディスクに書き込まれていないことに注意してください。ここで考えを変えることもできます。上記のパーティションを実行することを確認する場合は、w コマンドを実行するだけです。

この時点でパーティション分割操作は完了しており、次のコマンドでパーティション分割の結果を表示できます。

$ sudo fdisk -l /dev/sdd 

上記の実行プロセスが面倒な場合は、次のコマンド ラインを使用して同じ効果を得ることができます。

$ (エコー n; エコー p; エコー 1; エコー; エコー; エコー w) | sudo fdisk /dev/sdd

パーティションタイプの変更

上記で作成されたデフォルトのパーティション タイプは 83 (Linux) です。タイプ 8e (Linux LVM) のパーティションが必要な場合はどうすればよいでしょうか?引き続き fdisk コマンドを使用してパーティション タイプを変更できます。今回は t コマンドを入力してパーティション タイプを変更します。

次に、変更するパーティション番号を選択できます。パーティションは 1 つしかないため、デフォルトは 1 です。

次に、L コマンドを使用して、fdisk コマンドでサポートされているパーティション タイプを表示します。

LVM を作成する必要があるので、LVM タイプ コード 8e を使用します。

最後に、w コマンドを入力して変更を確認します。 /dev/sdd のパーティション情報を再度確認します。パーティション タイプが Linux LVM に変更されています。

要約する

パーティション分割はディスクを使用するための基礎です。パーティション分割が完了したら、パーティションをフォーマットし、フォーマットされたファイル システムを Linux システムにマウントしてから、ファイルを保存します。

以下もご興味があるかもしれません:
  • Linux ディスク パーティションの実装の原理と方法の分析
  • Linux ディスクのマウント、パーティション分割、容量拡張操作を実装する方法
  • Linux システム ディスクのフォーマットとスワップ パーティションの手動追加
  • Linux仮想マシンのルートパーティションディスク拡張スペースレコードの詳細な説明
  • Linux ディスク パーティションの実際的な例 (必読)
  • LINUX ディスクのパーティション分割、フォーマット、マウント、アンインストールの詳細なプロセス
  • 2T を超える Linux ディスクで GPT パーティションを使用する方法
  • Linux parted ディスク パーティション実装手順の分析

<<:  AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

>>:  タイムスタンプの差を計算するSQLメソッド

推薦する

同じページを動的にロードするための Vue ルーティングリスニングの例

目次シナリオ分析発達要約するシナリオ分析システムでは、1 つのモジュールに 3 つのサブモジュールが...

ログインインターセプションを実装するためのVueルーティング

目次1. 概要2. ログインインターセプションを実装するためのルーティングナビゲーションガード1. ...

MySQL InnoDB トランザクション ロック ソースコード分析

目次1. ロックとラッチ2. 繰り返し読み取り3. インサートロックプロセス3.1 ロックモード3....

Vmwareでディスクを追加する方法:ディスクを拡張する

この記事では、ディスクを追加または拡張して、Vmare で有効にする方法について説明します。シナリオ...

React Router V6 のアップデート

目次ReactRouterV6 の変更1. <Switch> が <Routes&...

ウェブカラーのコントラストと調和のテクニックの共有

色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...

CSSを使用して炎の効果を作成する方法

本文は以下から始まります。 123WORDPRESS.COM ダウンロード:純粋な CSS3 で超リ...

Mysql は最大接続数を表示し、最大接続数を変更します

MySQL 最大接続数の表示と最大接続数の変更1. 最大接続数を確認する '%max_con...

【HTML要素】画像の埋め込み方法

img 要素を使用すると、HTML ドキュメントに画像を埋め込むことができます。画像を埋め込むには、...

Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

バックグラウンド コントローラー @RequestMapping("/getPDFStre...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

MySQL トランザクションと分離レベルの基本原理の簡単な分析

目次序文1. 取引の基本原則の簡単な分析原子性:持続性分離:一貫性: 2. 分離レベルの基本原理の分...

HTMLおよびJSPページがキャッシュされ、Webサーバーから再取得されるのを防ぎます。

ユーザーがログアウトした後、ブラウザの戻るボタンがクリックされると、Web アプリケーションは保護さ...

dl、dt、dd はいつ使用するのが適切ですか?

dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...

一般的なSQL削除ステートメントの原則の違いを理解するだけです

この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違...