開発者ドキュメント

Linuxでのストレージの用語と概念の概要

序章

Linuxには、ストレージドライブを含むハードウェアデバイスを管理するための堅牢なシステムとツールがあります。 この記事では、Linuxがこれらのデバイスをどのように表現するか、およびrawストレージがサーバー上の使用可能なスペースにどのように作成されるかを大まかに説明します。

ブロックストレージとは何ですか?

ブロックストレージは、Linuxカーネルがブロックデバイスと呼ぶものの別名です。 ブロックデバイスは、従来の回転ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、フラッシュメモリスティックなど、データの保存に使用できるハードウェアです。 カーネルが固定サイズのブロックまたはスペースのチャンクを参照することによってハードウェアとインターフェイスするため、これはブロックデバイスと呼ばれます。

つまり、基本的に、ブロックストレージは、コンピューター上の通常のディスクストレージと考えるものです。 一度設定すると、基本的に現在のファイルシステムツリーの拡張として機能し、ドライブへの情報の書き込みまたはドライブからの情報の読み取りをシームレスに行うことができます。

ディスクパーティションとは何ですか?

ディスクパーティションは、ストレージドライブをより小さな使用可能なユニットに分割する方法です。 パーティションは、ドライブ自体とほとんど同じように扱うことができるストレージドライブのセクションです。

パーティション化により、使用可能なスペースをセグメント化し、各パーティションを異なる目的に使用できます。 これにより、ユーザーは多くの柔軟性を得ることができ、インストールをセグメント化して、簡単なアップグレード、複数のオペレーティングシステム、スワップスペース、または特殊なファイルシステムを実現できます。

ディスクはパーティションを作成せずにフォーマットして使用できますが、一部のオペレーティングシステムは、ディスクに書き込まれるパーティションが1つしかない場合でも、パーティションテーブルを見つけることを期待しています。 将来の柔軟性を高めるために、新しいドライブを分割することをお勧めします。

MBRとGPT

ディスクをパーティション分割するときは、どのパーティション分割形式が使用されるかを知っておくことが重要です。 これは通常、MBR(マスターブートレコード)とGPT(GUIDパーティションテーブル)のどちらかを選択することになります。

MBR は、30年以上使用されている従来のパーティションシステムです。 その年齢のために、それはいくつかの深刻な制限があります。 たとえば、サイズが2TBを超えるディスクには使用できず、最大4つのプライマリパーティションしか持つことができません。 このため、4番目のパーティションは通常「拡張パーティション」として設定され、「論理パーティション」を作成できます。 これにより、最後のパーティションを細分化して、追加のパーティションを効果的に許可できます。

GPT は、MBRに固有の問題のいくつかを解決しようとする最新のパーティションスキームです。 GPTを実行しているシステムは、ディスクごとにさらに多くのパーティションを持つことができます。 これは通常、オペレーティングシステム自体によって課せられる制限によってのみ制限されます。 さらに、ディスクサイズの制限はGPTには存在せず、パーティションテーブル情報は破損を防ぐために複数の場所で利用できます。 GPTは、ディスクが使用されていることをMBR専用ツールに通知する「保護MBR」を作成することもできます。

ほとんどの場合、オペレーティングシステムまたはツールによってGPTの使用が妨げられない限り、GPTの方が適しています。

フォーマットとファイルシステム

Linuxカーネルはrawディスクを認識できますが、ドライブをそのまま使用することはできません。 使用するには、フォーマットする必要があります。 Formatting は、ファイルシステムをディスクに書き込み、ファイル操作の準備をするプロセスです。 ファイルシステムは、データを構造化し、基になるディスクへの情報の書き込み方法と基になるディスクからの情報の取得方法を制御するシステムです。 ファイルシステムがないと、ストレージデバイスをファイル関連の操作に使用できませんでした。

多くの異なるファイルシステム形式があり、それぞれがオペレーティングシステムのサポートを含む多くの異なる次元にわたるトレードオフを持っています。 基本的なレベルでは、これらはすべてユーザーにディスクの同様の表現を提示しますが、それぞれがサポートする機能と、ユーザーおよびメンテナンス操作を可能にするために使用されるメカニズムは大きく異なる可能性があります。

Linuxで最も人気のあるファイルシステムのいくつかは次のとおりです。

Linuxがストレージデバイスを管理する方法

/dev内のデバイスファイル

Linuxでは、ほとんどすべてがファイルで表されます。 これには、ストレージドライブなどのハードウェアが含まれます。これらのハードウェアは、システム上でファイルとして表されます。 /dev ディレクトリ。 通常、ストレージデバイスを表すファイルは sd また hd 手紙が続きます。 たとえば、サーバーの最初のドライブは通常、次のようなものです。 /dev/sda.

これらのドライブのパーティションにもファイルがあります /dev、ドライブ名の末尾にパーティション番号を追加することで表されます。 たとえば、前の例のドライブの最初のパーティションは次のようになります。 /dev/sda1.

ながら /dev/sd*/dev/hd* デバイスファイルは、ドライブとパーティションを参照する従来の方法を表しており、これらの値を単独で使用することには大きな欠点があります。 Linuxカーネルは、起動のたびにどのデバイスがどの名前を取得するかを決定するため、デバイスがデバイスノードを変更するという混乱を招くシナリオにつながる可能性があります。

この問題を回避するには、 /dev/disk ディレクトリには、システム上のディスクとパーティションを識別するためのさまざまな、より永続的な方法に対応するサブディレクトリが含まれています。 これらには、ブートバック時に作成されたシンボリックリンクが含まれています。 /dev/[sh]da* ファイル。 リンクには、ディレクトリの識別特性に従って名前が付けられます(たとえば、のパーティションラベルによって) /dev/disk/by-partlabel ディレクトリ)。 これらのリンクは常に正しいデバイスを指しているため、ストレージスペースの静的識別子として使用できます。

次のサブディレクトリの一部またはすべてが下に存在する可能性があります /dev/disk:

いつもの、 by-label また by-uuid 特定のデバイスを永続的に識別するための最良のオプションです。

ノート

DigitalOceanブロックストレージボリュームは、オペレーティングシステムに報告されるデバイスのシリアル番号を制御します。 これにより、 by-id このプラットフォームで確実に永続化するための分類。 これは、永続的であり、最初の起動時に予測可能であるため、DigitalOceanボリュームを参照するための推奨される方法です。

取り付けブロックデバイス

内のデバイスファイル /dev 問題のデバイスのカーネルドライバと通信するために使用されます。 ただし、デバイスを使用可能なスペースのセグメントとして扱うには、より有用な抽象化が必要です。

Linuxおよびその他のUnixライクなオペレーティングシステムでは、関係する物理デバイスの数に関係なく、システム全体が単一の統合ファイルツリーで表されます。 そのため、ドライブまたはパーティション上のファイルシステムを使用する場合は、既存のツリーにフックする必要があります。 Mounting は、フォーマットされたパーティションまたはドライブをLinuxファイルシステム内のディレクトリに接続するプロセスです。 その後、ドライブの内容にそのディレクトリからアクセスできます。

ドライブは、ほとんどの場合、専用の空のディレクトリにマウントされます(空でないディレクトリにマウントすると、ドライブがマウント解除されるまで、ディレクトリの通常の内容にアクセスできなくなります)。 マウントされたデバイスの動作を変更するために設定できるさまざまなマウントオプションがあります。 たとえば、ドライブを読み取り専用モードでマウントして、その内容が変更されないようにすることができます。

Filesystem HierarchyStandardは次の使用を推奨しています /mnt または、一時的にマウントされたファイルシステムの場合は、その下のサブディレクトリ。 これがユースケースに一致する場合、これはおそらくそれをマウントするのに最適な場所です。 より永続的なストレージをどこにマウントするかについては推奨されていないため、任意のスキームを選択できます。 多くの場合、 /mnt また /mnt サブディレクトリは、より永続的なストレージにも使用されます。

/ etc/fstabを使用してマウントを永続化する

Linuxシステムはというファイルを調べます /etc/fstab (ファイルシステムテーブル)ブートプロセス中にマウントするファイルシステムを決定します。 このファイルにエントリがないファイルシステムは自動的にマウントされません(systemdで定義されているものを除く) .mount ユニットファイル。ただし、現時点では一般的ではありません)。

The /etc/fstab ファイルはかなり単純です。 各行は、マウントする必要のある異なるファイルシステムを表しています。 この行は、ブロックデバイス、それを接続するマウントポイント、ドライブの形式、マウントオプション、およびその他のいくつかの情報を指定します。

より複雑なストレージ管理

ほとんどの単純なユースケースでは追加の管理構造は必要ありませんが、より複雑な管理パラダイムによって、パフォーマンス、冗長性、または柔軟性を高めることができます。

RAIDとは何ですか?

RAID は、iに依存しないdリスクのr冗長aレイの略です。 RAIDは、ストレージ管理および仮想化テクノロジーであり、ドライブをグループ化して、追加機能を備えた単一のユニットとして管理できます。

RAIDアレイの特性は、RAIDレベルに依存します。これは、基本的に、アレイ内のディスクが相互にどのように関係するかを定義します。 選択したレベルは、セットのパフォーマンスと冗長性に影響を与えます。 より一般的なレベルのいくつかは次のとおりです。

LVMとは何ですか?

LVM、または L ogical V olume M anagementは、柔軟性と電力を向上させるために、基盤となるストレージデバイスの物理的特性を抽象化するシステムです。 LVMを使用すると、物理デバイスのグループを作成し、それを1つのスペースブロックであるかのように管理できます。 次に、必要に応じて、パーティションとして機能する論理ボリュームにスペースをセグメント化できます。

LVMは通常のパーティションの上に実装され、従来のパーティションに固有の制限の多くを回避します。 たとえば、LVMボリュームを使用すると、パーティションを簡単に拡張したり、複数のドライブにまたがるパーティションを作成したり、パーティションのライブスナップショットを作成したり、ボリュームを別の物理ディスクに移動したりできます。 LVMをRAIDと組み合わせて使用すると、従来のRAIDパフォーマンス特性を備えた柔軟な管理を提供できます。

次はどこへ?

Linuxシステムで使用する新しいストレージデバイスがある場合は、この記事で、新しいファイルシステムのパーティション分割、フォーマット、およびマウントの基本的なプロセスについて説明します。 これは、主に容量の追加に関心があるほとんどのユースケースで十分です。 基本的なストレージ管理タスクの実行方法については、この記事をご覧ください。

モバイルバージョンを終了