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はアコーディオン効果を実装する

この記事の例では、アコーディオン効果を実現するためのVueの具体的なコードを参考までに共有しています...

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

親要素を基準にCSSの位置を絶対的に設定する方法についての簡単な説明

ご存知のとおり、CSS の絶対位置はデフォルトでドキュメントに応じて設定されます。たとえば、posi...

MySQL の遅いクエリの落とし穴

目次1. 遅いクエリ構成1-1. スロークエリを有効にする2. 遅いクエリSQLの分析を説明する3....

Alibaba Cloud OSS アクセス権設定(RAM 権限制御)実装

シナリオmyBuket の static/material/ ディレクトリなど、Alibaba Cl...

docker redis5.0 clusterの実装 クラスタ構築

システム環境: Ubuntu 16.04LTSこの記事では、6 つの Docker コンテナを使用し...

アリババの中秋節ロゴとウェブサイトのデザインプロセス

<br />まずアイデアを考え、次にスケッチを描き、次にマウスでスケッチし、最後にフラッ...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

Vueのドラッグスクリーンショット機能を実装する簡単な方法

マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

Zabbix を使用して Oracle データベースを監視する方法の詳細な説明

1. 概要Zabbix は非常に強力で、最も広く使用されているオープンソースの監視ソフトウェアです。...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

MySQL 5.6 での table_open_cache パラメータの最適化と適切な構成の詳細な説明

1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...

nginx のスムーズな再起動を実装する方法

1. 背景サーバーの開発プロセスでは、新しいコードや構成をロードするためにサービスを再起動することが...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを忘れた場合の解決策: [root@localhost ~]# mysql -...