ITエンジニア基礎スキル 🟢 Linux の基礎知識
📌 サーバー運用の基盤となるOSの仕組みを理解する
├─【Linuxの基礎知識】Linuxとは?基本概要と仕組みをわかりやすく解説!
├─【Linuxの基礎知識】インストールからログインまでの完全マニュアル
├─【Linuxの基礎知識】カーネルの役割と起動プロセスをわかりやすく解説!
├─【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド
├─【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築
├─【Linuxの基礎知識】リンクとiノードについて理解を深めよう!
├─【Linuxの基礎知識】LVMとは? LVMを理解しよう!
├─【Linuxの基礎知識】再起動時に入れ替わるデバイス名「sdX」を固定したい
├─【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本
├─【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!
├─【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!
├─【Linuxの基礎知識】パッケージ管理の応用テクニックをマスター!
├─【Linuxの基礎知識】仮想化とコンテナの基本を学ぶ!仕組みと違いを解説!
├─【Linuxの基礎知識】バックアップとリストア!スナップショット活用も紹介!
└─RAIDとディスク管理を徹底解説!
LVMとは?
LVM(logical volume manager)とは、複数のハードディスクやパーティションにまたがった記憶領域をまとめて、単一の論理ボリューム(LV)として扱うことのできるディスク管理機能です。
※ インストール時に手動パーティションの設定で作成することが出来ます。

利用者からは、通常のパーティションと同様に見え、作成されたlvを個々に任意のフォーマットで利用できる等のメリットがあります。また、システムを停止せずに論理ボリュームサイズの増減を自由に行うことが可能です。
LVMを使用すメリット
- 複数「PV(フィジカルボリューム)」を結合して作成された「VG(ボリュームグループ)」上に、フィジカルディスクサイズを超える「 LV(論理ボリューム)」 を作成する事が可能
- 「 LV(論理ボリューム)」 の動的拡張・縮小が可能
- 「PV(フィジカルボリューム)」の追加による「 LV(論理ボリューム)」 の拡張性の維持が可能
- ソフトウェアミラーやソフトウェアによるストライピングが可能
LVMの特徴
従来のパーティション管理は、ディスクの物理的なセクターを直接管理しますが、固定的で柔軟性に欠けます。一方、LVMはディスクを抽象化し、より柔軟な操作を可能にします。
特徴 | 従来のパーティション管理 | LVM |
---|---|---|
ディスク容量の変更 | 固定的で、サイズ変更にはデータの削除やバックアップが必要。 | 動的に拡張・縮小が可能。 |
複数ディスクの統合 | サポートされていない。 | 複数の物理ディスクを統合して管理可能。 |
スナップショット機能 | 利用不可。 | システム状態のコピーを作成可能。 |
運用の柔軟性 | 制約が多く、構成変更に手間がかかる。 | 柔軟な構成変更が可能。 |
バックアップ作業 | 時間と手間がかかる。 | スナップショットを活用して簡単に実施可能。 |
LVMは、以下の課題を解決するために設計されています。
LVMが解決する課題
- ディスク容量の制約:
- ストレージが不足した場合に、新しいディスクを簡単に追加可能。
- 柔軟なストレージ管理:
- パーティションサイズの変更や、動的なボリューム管理が可能。
- スナップショットの活用:
- システム状態のコピーを瞬時に作成し、復元作業を容易にする。
LVMは、ファイルシステムに対して柔軟なディスク管理を提供します。これにより、従来のパーティション管理では不可能だった操作が可能になります。
ディスク領域の柔軟性と拡張性
- 柔軟性の例:
- ファイルシステムがストレージを使い切った場合、LVMを使用するとディスク容量を動的に拡張できます。
- 複数の物理ディスクを統合し、一つの大きな論理ボリュームとして使用可能。
- 拡張性の具体例:
- 新しい物理ディスクを追加し、ボリュームグループに統合。
- 拡張した論理ボリュームをファイルシステムにマウントし、シームレスに運用を継続。
これらの特徴により、LVMは現代のシステム運用において不可欠な技術の一つとなっています。
LVMの構成要素
LVMは、ハードディスクを「PE(フィジカルエクステント)」と言う記憶領域に分割し、必要な時に必要な分だけ使用することが可能です。
PE(フィジカルエクステント)とは?
PEとは、LVMが扱う記憶領域の最小単位で、デフォルトのサイズは4MBです。PEの数は最大65,536個となっており、デフォルトの4MBでlvを作成する場合、最大で「256GB」までとなっています。それ以上のサイズをLVで作成するためには、このPEのサイズを4MB以上にする必要があります。

むやみにPEサイズを大きくとってしまうと端数が発生し無駄な領域が生じてしまいます。
※ PEのサイズは8KB~512MBの範囲で指定が可能です。
PV(フィジカルボリューム)とは?
「PV(フィジカルボリューム)」とは、物理的な記憶媒体を指しています。通常は、物理ディスクに対して1対1で作成をしますが、複数のパーティションで区切ったパーティション単位にPVを1体1で作成することも可能です。「fdisk」コマンドでパーティションID「HEXコード(16進数)」には「8e」を指定して作成します。
1 2 3 4 5 6 7 8 9 10 11 12 | [root@db01 ~]# fdisk -l /dev/sda Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x000c6a1f デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 206899199 102400000 8e Linux LVM 👈 8e |
PVの拡張について
対象のPVが「ディスクの最終パーティション」にある場合のみ、PVの拡張が可能です。空きスペースを使用して「最終パーティション」以外を拡張した場合、後続のパーティションは破壊されてしまうため注意する必要があります。
VG(ボリュームグループ)とは?
「VG(ボリュームグループ)」は、作成されたPV管理します。特にPEサイズの指定が無い場合、VG作成時にPV中に4MB(デフォルト)でPEが作成され、複数「PV(フィジカルボリューム)」を結合して、フィジカルディスクサイズを超える「 VG(ボリュームグループ)」 を作成する事が可能です。

ただし、前述のとおり、PEの数は最大65,536個となっており、デフォルトの4MBでlvを作成する場合、最大で「256GB」までとなっています。さらに大きなVGを作成する場合は、PEサイズを(8K~512MB)の範囲で大きな値を指定する必要があります。
LV(ロジカルボリューム)とは?
「LV(ロジカルボリューム)」は、実ファイルを格納する領域です。LVはPEの集合で作成されており、作成するLVの容量はPEの倍数で最も効率的となります。

LVは任意のファイルシステムにフォーマットすることができ、またVGの空き容量にもよりますが、動的に拡張・縮小が可能です。
ファイルシステムとは?
ハードディスクやUSB等の記憶媒体上のデータやプログラムは、フアイルと呼ばれる単位で管理されます。この管理のしくみをファイルシステムといいます。ざっくりと言ってしまえば、ファイルを取り扱う(操作だけでなくその所在を定義したり読み出したりする)際の枠組み(規格)」といえます。通常はパーティション上に作成されますが、LVM環境ではLV上に作成されます。現時点では、「ext4」がLinuxの標準ファイルシステムになります。
ファイルシステムについては、下記のリンクページを参照してください。
システム領域
通常、linuxOSをインストールすると、ブート領域に第1バーティション「/dev/sda1」及び、システムの稼働に第2パーティション「/dev/sda2」が作成されます。

基本パーティション
- 第1パーティション
100MB程度の小さなパーティション「/boot」が作成されます。
昨今の物理マシンの場合、この領域に別パーティションとして「UEFI(FAT)」がマウントされます。なお「/boot」領域にLVMは使用されません。123456789101112[root@db01 ~]# fdisk -l /dev/sdaDisk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトDisk label type: dosディスク識別子: 0x000c6a1fデバイス ブート 始点 終点 ブロック Id システム/dev/sda1 * 2048 2099199 1048576 83 Linux 👈 これ/dev/sda2 2099200 206899199 102400000 8e Linux LVM - 第2パーティション
システムを稼働させるために必要な領域が作成されます。本記事では「root_vg」として作成されています。123456789101112131415[root@db01 ~]# pvsPV VG Fmt Attr PSize PFree/dev/sda2 root_vg lvm2 a-- 97.65g 45.65g[root@db01 ~]# vgsVG #PV #LV #SN Attr VSize VFreeroot_vg 1 7 0 wz--n- 97.65g 45.65gtest_vg 1 1 0 wz--n- <1.34g 348.00m[root@db01 ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv_crash root_vg -wi-ao---- 4.00glv_home root_vg -wi-ao---- 5.00glv_root root_vg -wi-ao---- 15.00glv_swap root_vg -wi-ao---- 4.00glv_var root_vg -wi-ao---- 4.00glv_work root_vg -wi-ao---- 10.00g
外部ディスクを追加する
データ格納領域や、バックアップ領域で巨大なディスクを外部から取り込み使用する場合もLVMは使用することが出来ます。下記のイメージはデータ格納領域を外部ディスク上へ作成して使用する場合のイメージになります。

昨今のシステムでは、腹持ちディスクの肥大化を避け、むしろ外部ディスクを積極的に使うプロジェクトが多くなっています。
上記イメージで言う「データ格納領域(外部ディスク)」とは、あくまでも例として「DBMS(Oracle)」のデータファイルを想定しています。如何にLVMを作成するか・・、何を格納するか・・は設計次第です(無理に作る必要はありません)。
LVM領域の作成
LVM領域を作成するには、下記の手順で「pv」「vg」「lv」を作成していきます。
メーカー製の物理ディスクを扱う場合、稀にLVM2がうまく認識されないと言った問題が起こります。これは、メーカーストレージの仕様によるもので「/etc/lvm/lvm.conf」内の「global_filter」に手を入れる必要があります。詳しくは、各当該メーカーへ確認してください。私は主に日立製品を扱っていたため、この問題によく遭遇していました。
こちらに参考URLを貼っておきます。
grub2でlvmが認識されないと言った声がちらほらと聞こえます。ログを見ていないので何とも言えませんが「/etc/default/grub」内の「GRUB_CMDLINE_LINUX」オプションに正しい値が指定されているか確認してください。「/etc/default/grub」で"GRUB_CMDLINE_LINUX"から始まる行を探して正しい値を設定し、そのうえでgrub2設定を再生成します。
参考:GRUB_CMDLINE_LINUX="crashkernel=256M elevator=noop audit=1 crashkernel=auto rd.lvm.lv=root_vg/lv_root rd.lvm.lv=root_vg/lv_swap rhgb quiet"
「root_vg」は、当サイトでのVG名になります。ご自身の使用環境のvg名が正しいことを確認してください。
UEFIを使用している場合は「vFat」フォーマットが有効であることを確認してください。UEFIは「/boot/efi」として別パーティションで作成されます。セキュリティ強化のために「vFat」を使用不可にしている場合、OSブート時に「/boot/efi」パーティションが読み込めず、結果的にOSの起動が始まりません。カーネルがどのファイルシステムをサポートしているかは「/proc/filesystems」で確認できます。
すみません、話がそれてしまいました。戻します。
ここでは「/dev/sda」へ3つ目のパーティションを作成してLVMを設定していきます。

領域作成の流れ
- パーティション作成
- pv(フィジカルボリューム)作成
- vg(ボリュームグループ)作成
- lv(ロジカルボリューム)作成
- lvのファイルシステムフォーマット
パーティション作成
LVM領域を作成するためには、まずLinux上へLVMで使用するパーティションを作成する必要があります。例として「/dev/sda」の空き領域へテスト用のパーティション「/dev/sda3」を作成します。
コマンドの書式
fdisk [オプション] デバイス名
コマンドの主なオプション
-l:指定したデバイスのパーティションテーブルを一覧表示する
-u:パーティションテーブルの始点と終点の位置をセクタで指定する
-s:指定したパーティションのサイズをブロック単位で表示する
下記のコマンドを入力して、新規パーティション「/dev/sda3」を作成します。
fdisk /dev/sda
下記のログを見ると長ったらしくてウザく見えますが、要求される質問に対して、対話形式でキーを入力していくだけです。やってみるとそうでもないことが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [root@db01 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p パーティション番号 (3,4, default 3): 最初 sector (206899200-209715199, 初期値 206899200): 初期値 206899200 を使います Last sector, +sectors or +size{K,M,G} (206899200-209715199, 初期値 209715199): 初期値 209715199 を使います Partition 3 of type Linux and of size 1.4 GiB is set コマンド (m でヘルプ): t パーティション番号 (1-3, default 3): 3 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' コマンド (m でヘルプ): p Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x000c6a1f デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 206899199 102400000 8e Linux LVM /dev/sda3 206899200 209715199 1408000 8e Linux LVM コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) ディスクを同期しています。 |
35行目:新たなパーティション「/dev/sda3」が作成されていることが分かります。
対話モードの主なコマンド
m:対話モード用コマンドを一覧表示する
p:パーティションテーブルを表示する
v:パーティションテーブルを検査する
n:新しいパーティションを作成する
a:ブート可能フラグを切り替える
d:パーティションを削除する
w:パーティションテーブルの変更を保存して終了する
q:パーティションテーブルの変更を「保存せずに」終了する
ちなみにパーティションの削除は、「対話モードの主なコマンド」で「-d」を入力し、対象パーティションを選択して削除します。
pv(フィジカルボリューム)作成
パーティションへLVMの「フィジカルボリューム」を作成します。
コマンドの書式
pvcreate[オプション][デバイス名 or パーティション名…]
コマンドの主なオプション
-y:全ての問い合わせに対し「y」を入力したものとして実行する
-f:処理内容を確認せず、強制的に実行する
-t:実際には実行せず処理内容だけを表示する
下記のコマンドを入力して、作成したパーティション「/dev/sda3」へpvを作成します。
# pvcreate /dev/sda3
※ 環境により、パーティションの反映に再起動が必要です。
1 2 | [root@db01 ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created. |
下記のコマンドを入力して、PVが正常に作成されていることを確認します。
# pvs
1 2 3 4 | [root@db01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 root_vg lvm2 a-- 97.65g 45.65g /dev/sda3 lvm2 --- 1.34g 1.34g 👈 これ |
パーティション「/dev/sda2」に、ほとんどの領域が取られてしまっていますが、とりあえず1.3GB分pvが確保できているのが分かります。
pvの削除を行うには「pvremove」コマンドに、対象パーティションを引数として実行することで削除することが出来ます。
vg(ボリュームグループ)作成
LVMの「PV(フィジカルボリューム)」へボリュームグループを作成します。
# コマンドの書式
vgcreate[オプション] ボリュームグループ名 デバイス名 or パーティション名…
コマンドの主なオプション
-s:PE(Physical Extent:物理エクステント)のサイズを指定する
-l:ボリュームグループに作成可能な論理ボリュームの個数を指定する
-p:ボリュームグループに割当可能な物理ボリュームの個数を指定する
-y:全ての問い合わせに対し「y」を入力したものとして実行する
-f:処理内容を確認せず、強制的に実行する
-t:実際には実行せず処理内容だけを表示する
下記のコマンドを入力して、作成したpvへボリュームグループを作成します。
# vgcreate test_vg /dev/sda3
1 2 | [root@db01 ~]# vgcreate test_vg /dev/sda3 Volume group "test_vg" successfully created |
下記のコマンドを入力して、VGが正常に作成されていることを確認します。
# vgs
1 2 3 4 | [root@db01 ~]# vgs VG #PV #LV #SN Attr VSize VFree root_vg 1 7 0 wz--n- 97.65g 45.65g test_vg 1 0 0 wz--n- <1.34g <1.34g 👈 これ |
ボリュームグループ「test_vg」が作成されているのが分かります。
vgの削除を行うには、「vgremove」コマンドへ、対象ボリュームグループを引数として実行することで削除することが出来ます。
lv(ロジカルボリューム)作成
LVMの「vg(ボリュームグループ)」へロジカルボリュームを作成します。
コマンドの書式
lvcreate[オプション] ボリュームグループ名[物理ボリューム名]
コマンドの主なオプション
-L:作成する論理ボリュームのサイズを指定する
-l:作成する論理ボリュームのサイズを論理エクステントの個数、または割合を指定する
%VG ボリュームグループ全体に対する割合
%FREE ボリュームグループの空き容量に対する割合
%PVS 物理ボリュームに対する割合
%ORIGIN 元の論理ボリュームの合計サイズ(スナップショット用)に対する割合
-n:作成する論理ボリュームの名前を指定する
下記のコマンドを入力して、作成したVGへ論理ボリュームを作成します。
# lvcreate -n lv_test -L 1G test_vg
1 2 | [root@db01 ~]# lvcreate -n lv_test -L 1G test_vg Logical volume "lv_test" created. |
下記のコマンドを入力して、LVが正常に作成されていることを確認します。
# lvs
1 2 3 4 5 6 7 8 9 10 11 | [root@db01 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_arch01 data06_vg -wi-a----- <27.94g lv_crash root_vg -wi-ao---- 4.00g lv_home root_vg -wi-ao---- 5.00g lv_oracle root_vg -wi-ao---- 10.00g lv_root root_vg -wi-ao---- 15.00g lv_swap root_vg -wi-ao---- 4.00g lv_var root_vg -wi-ao---- 4.00g lv_work root_vg -wi-ao---- 10.00g lv_test test_vg -wi-a----- 1.00g 👈 これ |
論理ボリューム「lv_test」が作成されているのが分かります。
lvの削除を行うには、「lvremove」コマンドへ、対象ロジカルボリュームを引数として実行することで削除することが出来ます。
※ 実際に作成した「lv_test」を使用するには、システム使用されるフォーマット形式へ変換する必要があります。また、lvの「拡張・縮小」については、別記事でご紹介します。
高度なLVMの活用
LVM(Logical Volume Manager)の基本操作を理解したら、次はその高度な活用方法について学びましょう。このセクションでは、スナップショット機能とロジカルボリュームの動的管理に焦点を当て、実践的な応用例を紹介します。
スナップショットの作成と運用
LVMのスナップショット機能は、データ保護やテスト環境の作成に非常に役立ちます。ファイルシステムの状態を瞬時にコピーすることで、安全かつ効率的な運用を実現します。
スナップショットの用途と運用
- 用途:
- バックアップを取る際に使用。
- テスト環境を作成し、実運用データを安全に保護。
システムの変更前に現在の状態を保持し、問題が発生した場合に復元可能。
- 利点:
- 高速に作成可能で、データのコピーを丸ごと作る必要がない。
- ディスク領域を効率的に使用し、変更された部分のみを保存。
実際の作成手順と応用例
- スナップショットの作成:
lvcreate --size 1G --snapshot --name snapshot_name /dev/vg_name/lv_name
- --size: スナップショットの容量を指定。
- --snapshot: スナップショットを作成するオプション。
- スナップショットのマウント:
lmount /dev/vg_name/snapshot_name /mnt
- 応用例:
- バックアップ用ディスクにスナップショットを保存。
- テスト環境でスナップショットをマウントし、変更の影響を確認。
ロジカルボリュームの動的管理
LVMの大きな利点の一つは、運用中でもロジカルボリュームのサイズを動的に変更できる点です。この機能を活用すれば、ディスク容量の効率的な利用が可能になります。
- ロジカルボリュームの拡張:
lvextend -L +10G /dev/vg_name/lv_name
resize2fs /dev/vg_name/lv_name- -L +10G: 現在のサイズに10GBを追加。
- ロジカルボリュームの縮小:
umount /mnt
e2fsck -f /dev/vg_name/lv_name
resize2fs /dev/vg_name/lv_name 5G
lvreduce -L 5G /dev/vg_name/lv_name
mount /mnt - 縮小する場合、データ損失を防ぐためにファイルシステムのチェックが必須。
実運用での注意ポイント
- 拡張時の注意:
- ディスク領域が不足している場合、拡張が失敗することがあります。
- 余裕を持った容量設計が重要です。
- 縮小時の注意:
- データ損失を防ぐために、縮小する前に必ずバックアップを取得してください。
- ファイルシステムのサイズを先に調整しないとデータ破損が発生する可能性があります。
LVMのスナップショットは、ファイルシステムの現在の状態を瞬時に保存できる便利な機能です。ただし、スナップショットのサイズ設定が適切でないと、期待通りに動作しない場合があります。このセクションでは、スナップショットサイズの指定とその動作について詳しく解説します。
スナップショットのサイズ指定
スナップショットを作成する際、サイズを指定します(例: --size 1G)。このサイズは、バックアップ対象全体の容量ではなく、スナップショット作成後に発生するデータ変更の量に基づいて決定します。
- 初期状態:
- スナップショット作成直後、指定されたサイズの領域にはデータは保存されません。
- ファイルシステム全体の状態を参照するためのメタデータが設定されます。
- 変更時の動作:
- 元のロジカルボリューム(LV)のデータが変更されると、変更前のデータがスナップショット領域にコピーされます(Copy-on-Write方式)。
- サイズが不足するとスナップショットが破損し、バックアップやリストアができなくなります。
スナップショットサイズの適切な決め方
- データ変更量を把握する:
通常の運用で、どの程度のデータが変更されるかを見積もります。例: 毎時間の変更量が5GBの場合、スナップショットサイズを10GB以上に設定。 - 余裕を持たせる:
予期しないデータ変更に備え、見積もった変更量の2倍以上を推奨。 - サイズの監視:
作成したスナップショットの利用状況を監視し、必要に応じてサイズを調整します。lvdisplay /dev/vg_name/snapshot_name
スナップショットサイズの指定例
- 少量の変更が予想される場合:
変更量が1GB以内なら、以下のコマンドで十分です。lvcreate --size 1G --snapshot --name snapshot_name /dev/vg_name/lv_name
- 多くの変更が予想される場合:
大規模なデータ変更が予想される場合、変更量を見積もってサイズを増やします。lvcreate --size 10G --snapshot --name snapshot_name /dev/vg_name/lv_name
スナップショットが破損する場合
スナップショットのサイズが変更量を超えた場合、次のようなエラーが発生する可能性があります:
- 「Snapshot is full」
- 「Insufficient snapshot space」
この場合、スナップショットの利用が停止し、作業内容が失われるリスクがあります。
スナップショットのサイズは、変更量に応じて適切に設定する必要があります。サイズを十分に確保することで、安定したバックアップやデータ保護が可能となります。スナップショットの運用を成功させるには、事前の計画と運用中の監視が不可欠です。
ロジカルボリューム縮小時の注意
ロジカルボリューム(LV)の縮小操作はデータ損失のリスクを伴うため、慎重に進める必要があります。以下に、適切な手順を示します。
ロジカルボリューム縮小手順
- 対象のロジカルボリュームのバックアップ取得:
縮小操作にはデータ損失の可能性があるため、事前にデータを完全にバックアップします。 - 対象のロジカルボリューム縮小作業:
- ファイルシステムをアンマウントし、整合性を確認します。
umount /mnt/lv_name e2fsck -f /dev/vg_name/lv_name
- ファイルシステムのサイズを縮小します(縮小後の容量を指定)。
resize2fs /dev/vg_name/lv_name new_size
- ロジカルボリューム自体を縮小します。
lvreduce -L new_size /dev/vg_name/lv_name
- 作業が完了したら再マウントし、正常に動作していることを確認します。
mount /mnt/lv_name
- ファイルシステムをアンマウントし、整合性を確認します。
スナップショットからのリストアする場合の手順
スナップショットを使用してバックアップしたデータをリストアする場合、以下の手順を実行します。この方法では、 restoreコマンドを使用して、 dump形式のバックアップファイルを復元します。
- スナップショットをマウントする:
スナップショットのデバイスをマウントします。mount /dev/vg_name/snapshot_name /mnt/snapshot
- リストア元の dumpファイルを使用する :
restoreコマンドを使用してバックアップをリストアします。restore -rf /mnt/snapshot/backup.dump -D /mnt/lv_name
- リストア後の確認 :
データが正しくリストアされたことを確認します。ls -l /mnt/lv_name
補足事項
- 縮小後の容量計算:
ファイルシステム内のデータサイズを正確に確認し、縮小後のサイズがデータを十分に格納できる容量を確保してください。 - データサイズの確認例:
du -sh /mnt/lv_name
- リストアが不要な場合:
縮小作業が正常に完了した場合、リストアは不要です。ただし、リストア手順は緊急時の備えとして準備しておくべきです。
補足(スナップショット)
この記事に寄せられるコメントの中で、スナップショットに関する質問が特に多く寄せられていますが、その仕組みや用途について誤解されている方も少なくないようです。スナップショットについて詳しく説明しようとすると、この記事内では内容が非常に多くなってしまうため、別記事として詳しく解説をお届けする予定ですがちょっとだけ原理について記載しておきます。
スナップショットの動作
- スナップショット作成後:
- スナップショット領域には変更前のデータだけが保存されます。
- 元のボリューム全体の参照状態(現在のデータ)も保持されます。
- バックアップ時のデータ取得:
- バックアップは、スナップショットの参照状態を基に、元のボリュームの現在のデータ(変更のない部分)とスナップショット領域の変更前データ(変更された部分)の両方を参照して全体のバックアップを作成します。
スナップショットを利用することでバックアップが早くなる理由は、スナップショットが元のボリューム全体を直接操作するのではなく、参照状態を基に効率的にデータを取得するためです。そのため、元のボリュームのデータを「直接すべてコピーする」のではなく、参照を活用して必要最小限のI/O操作で済ませることが速度向上のカギとなります。
バックアップが早い理由
- バックアップ対象は「スナップショットの参照状態」に基づくため、元のボリューム全体を直接コピーする必要がありません。
- スナップショットの参照状態を利用することで、変更が発生した部分を効率的に追跡できます。
- ディスクI/Oの負荷が分散されるため、通常よりも高速な処理が可能になります。
結論
スナップショットを使用したバックアップとリストアは、元のボリュームが正常であることが前提となります。元のボリュームが破損している場合、スナップショット領域だけではデータ全体を復元することはできません。
スナップショットはあくまで一時的な保護やバックアップのための補助的なツールであり、完全なデータ復元には元のボリュームまたはフルバックアップが必要です
LVM運用中のトラブルシューティング
LVM(Logical Volume Manager)は柔軟なディスク管理を可能にしますが、運用中にエラーが発生することもあります。このセクションでは、よくあるトラブルとその解決方法について解説します。
よくあるエラーの原因と解決法
VMの運用中には、ディスクが認識されない、ボリュームがマウントできないなどのエラーが発生することがあります。このセクションでは、これらのよくあるトラブルの原因を特定し、解決するための基本的な手順を解説します。
ディスク未認識時の対応
新しいディスクが認識されない場合、ハードウェア接続やシステム設定が原因となることがあります。以下の手順で問題を特定し、解決します。
- ハードウェアの確認:
ディスクが正しく接続されていることを確認します。
lsblk
fdisk -l
- LVMのスキャンを実行:
LVMがディスクを検出できるか確認します。
pvscan
- モジュールのロード:
デバイスマッパーモジュールがロードされているか確認し、必要に応じてロードします。
lsmod | grep dm_mod
modprobe dm_mod
- リブート後の再確認:
上記の手順で解決しない場合、システムを再起動して再度確認します。
ボリュームがマウントできない場合の対処
ボリュームがマウントできない場合、ファイルシステムや設定に問題がある可能性があります。以下の手順で対応します。
- エラーメッセージの確認:
dmesg または journalctl を使用してエラーログを確認します。
dmesg | tail
journalctl -xe
- ファイルシステムの修復:
ファイルシステムが破損している場合、 fsck コマンドで修復を試みます。
fsck /dev/vg_name/lv_name
- 手動マウントの試行:
ファイルシステムを手動でマウントし、エラーが解消されるか確認します。
mount /dev/vg_name/lv_name /mnt
- マウントオプションの確認:
/etc/fstab を確認し、誤った設定がないか確認します。
この記事を読んだら、次は 「【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本」 を読むのがおすすめです!