Linux 論理ボリューム管理 (LVM) の使用法の概要

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると、ディスク パーティション内の使用可能なディスク領域を増やすために、一連の時間のかかる複雑なタスクを実行する必要があります。また、処理するにはシステムをオフラインにする必要があります。通常、このタスクには、新しいハード ディスクのインストール、リカバリ モードまたはシングル ユーザー モードでの起動、新しいハード ディスクへのパーティションとファイル システムの作成、一時マウント ポイントへのマウントによる、サイズが小さいファイル システムから新しい大きな場所へのデータの移動、/etc/fstab ファイルの内容の変更による新しいパーティションの正しいデバイス名への変更、再起動による新しいファイル システムの正しいマウント ポイントへの再マウントが含まれます。

LVM (論理ボリューム管理) が Fedora Linux に初めて登場したとき、私はそれに非常に抵抗を感じました。私の最初の反応は、私とデバイスの間にこの余分な抽象化レイヤーは必要ないというものでした。私が間違っていたことが判明しました。論理ボリューム管理は非常に便利です。

LVM により、ディスク領域の管理が非常に柔軟になります。ファイル システムがマウントされアクティブな状態で、論理ボリュームとそのファイル システムにディスク領域を確実に追加する機能や、複数の物理ディスクとパーティションを単一のボリューム グループ (VG) にマージして、論理ボリューム (LV) に分割する機能などを提供します。

ボリューム管理を使用すると、論理ボリュームに割り当てられるディスク領域の量を減らすこともできますが、2 つの要件があります。まず、ボリュームをアンマウントする必要があります。次に、ボリュームのサイズを変更する前に、ファイル システム自体のサイズを縮小する必要があります。

重要な注意点は、ファイル システム自体がサイズ変更操作を許可する必要があることです。ファイル システムのサイズを変更する場合、EXT2、3、および 4 ファイル システムはすべて、オフライン (マウント解除) またはオンライン (マウント) のサイズ変更を許可します。サイズ変更する予定のファイル システムの詳細を慎重に理解し、サイズを変更できるかどうか、特にオンラインでサイズを変更できるかどうかを確認する必要があります。

ファイルシステムをオンザフライで拡張する

新しいディストリビューションを本番マシンにインストールする前に、私はいつもそれを VirtualBox VM でしばらく実行して、致命的な問題がないことを確認します。数年前のある朝、私はメインワークステーションの仮想マシンに新しくリリースされたバージョンの Fedora をインストールしました。 VM がインストールされているメイン ファイル システムに十分なディスク領域が割り当てられていると思います。しかし、私は間違っていて、インストールの約 3 分の 1 が経過した時点で、ファイル システムの容量が不足しました。幸いなことに、VirtualBox はディスク容量不足の状態を検出し、仮想マシンを一時停止して、問題を明確に示すエラー メッセージを表示しました。

この問題は、仮想マシンのディスクが小さすぎることが原因ではなく、ホスト マシンの容量が不足しているために、仮想マシンの仮想ディスクにホスト マシンの論理ボリュームを拡張するのに十分な容量がないことが原因であることに注意してください。

最近のディストリビューションの多くはデフォルトで論理ボリューム管理を使用しており、ボリューム グループに空き領域があるため、追加のディスク領域を適切な論理ボリュームに割り当て、ホスト ファイル システムをその場で拡張できます。つまり、ハードドライブ全体を再フォーマットしたり、オペレーティング システムを再インストールしたり、マシンを再起動したりする必要がないということです。適切な論理ボリュームに空き領域を割り当て、ファイルシステムのサイズを変更するだけで済みました。この間、ファイルシステムはオンラインで実行されており、VM はホスト ファイルシステムを使用していました。論理ボリュームとファイルシステムのサイズを変更した後、VM を再開し、何も起こらなかったかのようにインストール プロセスを続行しました。

この問題に遭遇したことがないかもしれませんが、重要なプログラムの実行中にディスク容量が不足するという問題に遭遇した人は多くいます。また、多くのプログラム、特に Windows のプログラムは VirtualBox ほど適切に作成されておらず、回復力も高くありませんが、Linux の論理ボリューム管理により、データを失ったり、時間のかかるインストール プロセスを経ることなく回復することが可能になります。

LVM構造

論理ボリューム管理のディスク環境構造を図1に示します。論理ボリューム管理により、複数の個別のハードディスクやディスク パーティションを 1 つのボリューム グループ (VG) に結合できます。ボリューム グループは、論理ボリューム (LV) に分割することも、単一の大きなボリュームを割り当てるために使用することもできます。 EXT3 や EXT4 などの通常のファイル システムは、論理ボリューム上に作成できます。

図 1 では、2 つの物理ハード ディスク全体と 3 つ目のハード ディスクのパーティションが 1 つのボリューム グループに結合されています。このボリューム グループには、2 つの論理ボリュームとファイル システムが作成されます。たとえば、各論理ボリュームに EXT3 または EXT4 ファイル システムを作成できます。

図1: LVMではパーティションとハードディスク全体をボリュームグループにまとめることができます

ホストにディスク領域を追加するのは非常に簡単で、私の経験ではまれにしか起こりません。基本的な手順は以下の通りです。まったく新しいボリューム グループを作成したり、既存の論理ボリュームに新しいスペースを追加したり、新しい論理ボリュームを作成したりすることもできます。

新しい論理ボリュームを追加する

場合によっては、ホストに新しい論理ボリュームを追加する必要があります。たとえば、VirtualBox 仮想マシンの仮想ディスクを含む/homeファイル システムがいっぱいになっているという通知を受けた後、仮想ディスクを含む仮想マシン データを保存するための新しい論理ボリュームを作成することにしました。これにより/homeファイルシステムのスペースが大幅に解放され、VM のディスク スペースを個別に管理できるようになります。

新しい論理ボリュームを追加する基本的な手順は次のとおりです。

1 必要に応じて、新しいハードドライブをインストールします。

2 オプション: ハードディスクにパーティションを作成します。

3 ハードディスク上に完全な物理ボリューム (PV) またはパーティションを作成します。

4 新しい物理ボリュームを既存のボリューム グループ (VG) に割り当てるか、新しいボリューム グループを作成します。

5 ボリュームスペースから新しい論理ボリューム (LV) を作成します。

6 新しい論理ボリュームにファイルシステムを作成します。

7 ファイルシステムをマウントするには、 /etc/fstabに適切なエントリを追加します。

8 ファイルシステムをマウントします。

より詳しい紹介として、Linux ファイルシステムについて教えるための実験として例を使用します。

この例では、コマンド ラインを使用して既存のボリューム グループを拡張してスペースを追加し、そのスペースに新しい論理ボリュームを作成し、論理ボリューム上にファイル システムを作成する方法を示します。このプロセスは、実行中およびマウントされたファイル システムで常に実行されます。

警告: 実行中およびマウント中にサイズ変更できるのは、EXT3 および EXT4 ファイル システムのみです。 BTRFS や ZFS を含む他の多くのファイルシステムでは、これができません。

ハードドライブのインストール

システム内の既存のハードディスクのボリューム グループに追加するための十分なスペースがない場合は、新しいハードディスクを追加してから、論理ボリュームに追加するためのスペースを作成する必要があります。まず、物理ハードディスクをインストールし、その後、次の手順に従います。

ハードディスクから物理ボリュームを作成する

まず、新しい物理ボリューム (PV) を作成する必要があります。新しいハードドライブが/dev/hddとして割り当てられていることを前提として、次のコマンドを使用します。

pvcreate /dev/hdd

新しいハードドライブにパーティションを作成する必要はありません。作成された物理ボリュームは、論理ボリューム マネージャーによって、新しくインストールされた raw ディスクまたはタイプ 83 Linux パーティションとして認識されます。ハードディスク全体を使いたい場合、パーティションを作成するメリットは特になく、メタデータに使うディスク領域もPVの一部として使えます。

既存のボリュームグループを拡張する

この例では、新しいボリューム グループを作成するのではなく、既存のボリューム グループを拡張しますが、別の方法を選択することもできます。物理ディスクが作成されたら、既存のボリューム グループ (VG) を拡張して、新しい PV 用のスペースを含めます。この例では、既存のボリューム グループの名前は MyVG01 です。

vgextend /dev/MyVG01 /dev/hdd

論理ボリュームを作成する

まず、ボリューム グループ内の既存の空き領域から論理ボリュームを作成します。次のコマンドは、50 GB サイズの LV を作成します。ボリューム グループの名前は MyVG01、論理ボリュームの名前は Stuff です。

lvcreate -L +50G --name スタッフ MyVG01

ファイルシステムの作成

論理ボリュームを作成しても、ファイルシステムは作成されません。このタスクは個別に実行する必要があります。次のコマンドは、新しく作成された論理ボリュームに EXT4 ファイル システムを作成します。

mkfs -t ext4 /dev/MyVG01/Stuff

ファイルシステムラベルを追加する

ファイル システム ラベルを追加すると、後で問題が発生した場合にファイル システムを識別しやすくなります。

e2label /dev/MyVG01/Stuff スタッフ

ファイルシステムのマウント

この時点で、マウント ポイントを作成し、 /etc/fstabファイル システムに適切なエントリを追加して、ファイル システムをマウントできます。

ボリュームが正しく作成されたかどうかを確認および検証することもできます。これを行うには、 dflvs 、およびvgsコマンドを使用できます。

LVM ファイルシステムの論理ボリュームのサイズ変更

Unix の最初のバージョン以来、ファイル システムの拡張の必要性は常に存在しており、Linux も例外ではありません。論理ボリューム管理 (LVM) を使用すると、さらに簡単になります。

1 必要に応じて、新しいハードドライブをインストールします。

2 オプション: ハードディスクにパーティションを作成します。

3 ハードディスク上に完全な物理ボリューム (PV) またはパーティションを作成します。

4 新しい物理ボリュームを既存のボリューム グループ (VG) に割り当てるか、新しいボリューム グループを作成します。

5 ボリューム スペースから新しい論理ボリューム (LV) を作成するか、ボリューム グループ内のスペースの一部またはすべてを使用して既存の論理ボリュームを拡張します。

6 新しい論理ボリュームが作成された場合は、その上にファイルシステムを作成します。既存の論理ボリュームにスペースを追加する必要がある場合は、 resize2fsコマンドを使用して、論理ボリュームを埋めるためにファイル システムを拡大します。

7 ファイルシステムをマウントするには、 /etc/fstabに適切なエントリを追加します。

8 ファイルシステムをマウントします。

この例では、コマンド ラインを使用して既存のボリューム グループを拡張する方法を示します。 /Staffファイル システムに約 50 GB のスペースが追加されます。これにより、マウント可能なファイルシステムが生成され、Linux 2.6 カーネル (およびそれ以降) では、EXT3 および EXT4 ファイルシステムの両方をすぐに使用できるようになります。重要なシステムにはこれをお勧めしませんが、実行可能であり、ルート ( / ) ファイルシステムでも何度も成功しています。使用するかどうかは自己責任でお願いします。

警告: 実行中およびマウント中にサイズ変更できるのは、EXT3 および EXT4 ファイル システムのみです。 BTRFS や ZFS を含む他の多くのファイルシステムでは、これができません。

ハードドライブのインストール

システム内の既存のハードディスクのボリューム グループに追加するための十分なスペースがない場合は、新しいハードディスクを追加してから、論理ボリュームに追加するためのスペースを作成する必要があります。まず、物理ハードディスクをインストールし、その後、次の手順に従います。

ハードディスクから物理ボリュームを作成する

まず、新しい物理ボリューム (PV) を作成する必要があります。新しいハードドライブが/dev/hddとして割り当てられていることを前提として、次のコマンドを使用します。

pvcreate /dev/hdd

新しいハードドライブにパーティションを作成する必要はありません。作成された物理ボリュームは、論理ボリューム マネージャーによって、新しくインストールされた raw ディスクまたはタイプ 83 Linux パーティションとして認識されます。ハードディスク全体を使いたい場合、パーティションを作成するメリットは特になく、メタデータに使うディスク領域もPVの一部として使えます。

既存のボリュームグループに物理ボリュームを追加する

この例では、既存のボリューム グループを新しい物理ボリュームで拡張します。物理ボリュームが作成されたら、既存のボリューム グループ (VG) を拡張して、新しい PV 用のスペースを含めます。この例では、既存のボリューム グループの名前は MyVG01 です。

vgextend /dev/MyVG01 /dev/hdd

論理ボリュームの拡張

まず、ボリューム グループ内の既存の空き領域から論理ボリュームを作成します。次のコマンドは、50 GB サイズの LV を作成します。ボリューム グループの名前は MyVG01、論理ボリュームの名前は Stuff です。

lvcreate -L +50G --name スタッフ MyVG01

ファイルシステムの拡張

-r オプションを使用すると、論理ボリュームを拡張するとファイルシステムも拡張されます。 -r オプションを使用しない場合、この操作を単独で実行することはできません。次のコマンドは、新しくサイズ変更された論理ボリューム内のファイル システムのサイズを変更します。

resize2fs /dev/MyVG01/Stuff

サイズ変更されたボリュームが正しいかどうかを確認して検証することもできます。これを行うには、df、lvs、vgs コマンドを使用できます。

ヒント

過去数年間、私は論理ボリュームの管理を容易にする方法についていくつかのことを学びました。これらのヒントが皆さんにとって有益なものとなることを願っています。

1 別のファイルシステムを使用する明確な理由がない限り、拡張可能なファイルシステムを使用することをお勧めします。 EXT2、3、4 を除くすべてのファイル システムでサイズ変更がサポートされているわけではありません。 EXT ファイル システムは高速であるだけでなく、効率的でもあります。いずれにしても、デフォルトのパラメータがニーズを満たさない場合は、知識のあるシステム管理者が(ファイル システム パラメータを参照して)調整することができます。

2 意味のあるボリューム名とボリューム グループ名を使用します。

3 EXTファイルシステムラベルの使用

私と同様に、ほとんどのシステム管理者が論理ボリューム管理に抵抗していることは承知しています。この記事が、少なくとも LVM を試してみようという気持ちにさせてくれたら幸いです。そうしていただけると嬉しいです。これを使用してから、ハード ドライブの管理作業が非常に簡単になりました。

著者について

David Both 氏は、ノースカロライナ州ローリー在住の Linux およびオープンソース ソフトウェアの支持者です。彼は IT 業界で 40 年以上、IBM では 20 年以上勤務しています。 IBM 在籍中、彼は 1981 年にオリジナルの IBM PC 向けの最初のトレーニング コースを作成しました。彼は Red Hat の RHCE コースを教えており、MCI Worldcom、Cisco、North Carolina で勤務していました。彼は約 20 年間、Linux とオープン ソース ソフトウェアに携わってきました。

出典: https://opensource.com/business/16/9/linux-users-guide-lvm

上記は、Linux 論理ボリューム管理 (LVM) の使用方法の詳細な概要です。Linux LVM の使用方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux ディスク管理 LVM の使用
  • Linux ディスクデバイスと LVM 管理コマンドの詳細な例
  • Linux で lvm 論理ボリューム パーティションのサイズを調整するチュートリアル (xfs や ext4 などのさまざまなファイル システム用)
  • Linux の Centos7 における LVM ディスク拡張の問題
  • Linuxシステムでlvmを作成し、指定されたディレクトリにマウントする手順
  • Linux LVM スナップショットを作成するための詳細な手順 (PE を使用して完了)

<<:  Linux に MySQL 8.0.19 をインストールするための詳細な手順と問題解決方法

>>:  WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

推薦する

ウェブサイトのコンテンツの100~1%はナビゲーションである

ウェブサイトでは、コンテンツの(100-1)%がナビゲーションです1. ジェシー・ジェームズ・ギャレ...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...

MySQL 最適化チュートリアル: 大規模なページングクエリ

目次背景制限の最適化最適化方法1. カバーインデックスを使用する2. サブクエリの最適化3. 遅延連...

表のセル間隔とセルパディングの違いの詳細な説明

テーブルとは何ですか?セルセルで構成されています。表では、<td> の数は、<tr...

Alibaba Cloud OSS によってアップロードされた Nginx プロキシ転送実装コード

序文ミニプログラムのアップロードには https が必要なので、サーバーの https は lets...

jsは水平および垂直スライダーを実現します

最近、練習プロジェクトをしていたときにスライダーを使う必要があったので、調べてみました。まず、水平ス...

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

Windows 10 で MySQL を完全にアンインストールして再インストールするための詳細な手順

さまざまな理由で、誰もが MySQL を再インストールする必要があると思います。 MySQL と Q...

CSS3で実装されたテキストポップアップ効果

成果を達成する実装コードhtml <div>123WORDPRESS.COM</d...

Mac OS 10.11 での MySQL 5.7.12 のインストールと設定のチュートリアル

Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...

XshellがvirtualBox仮想マシンに接続できない問題の解決策

まず、VirtualBox仮想マシンのネットワーク設定モードについて説明します。NAT+ホストオンリ...

LinuxカーネルマクロContainer_Ofの詳細な説明

目次1. 構造体はメモリにどのように保存されますか? 2. container_ofマクロ3. 型4...

CentOS 7 で PHP 5.4 を 5.6 にアップグレードする方法の簡単な分析

1.ターミナルに入ったらPHPのバージョンを確認するphp -v出力は次のようになります。 PHP ...

Vue2.0の双方向データバインディング原則を手動で実装する

一言で言えば: データハイジャック (Object.defineProperty) + パブリッシュ...