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メソッド

推薦する

CSSボックスモデルの紹介を読めば、混乱することはなくなるでしょう

Web デザインでよく耳にするプロパティ名: content、padding、border、marg...

Webサービスのリモートデバッグとタイムアウト動作原理の分析

Webサービスのリモートデバッグ.NET では、WEBSERVICE のリモート デバッグ機能はデフ...

フォームデータを取得するための Node.js メソッドの 3 つの例

序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...

Nginx での Frp による https への強制リダイレクト設定の詳細な説明

自宅のルーターが300Mの帯域幅を80Mに強制的に減らしたため、3205Uソフトルーターを購入しまし...

js キャンバスは検証コードを実装し、検証コード機能を取得します

この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...

よくある Linux 英語エラーの中国語翻訳 (初心者必見)

1.コマンドが見つかりません コマンドが見つかりません2. そのようなファイルまたはディレクトリは...

MySQLデータベース操作の基本コマンド

1. データベースを作成します。 データ data _name を作成します。 PHP でデータベー...

MySQL パーティション テーブルの基本入門チュートリアル

序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...

Docker 基本チュートリアル: Dockerfile 構文の詳細な説明

序文Dockerfile は Docker プログラムによって解釈されるスクリプトです。Docker...

mysql8.0.23 msi インストールの超詳細なチュートリアル

1.MySqlをダウンロードしてインストールする公式ウェブサイトからMySqlデータベースをダウンロ...

Harborを使用してプライベートDockerリポジトリを構築する方法

目次1. オープンソースの倉庫管理ツール Harbor 2 インストール2.1 DockerとDoc...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...

Linux での GDB 入門チュートリアル

序文gdb は Linux で非常に便利なデバッグ ツールです。コマンドライン モードのデバッグ ツ...

CSS スタイルが機能しない (史上最も完全な解決策の概要)

ページを作成するときに、記述した CSS スタイルが有効にならないことがあります。この現象にはさまざ...