LinuxのLVMとは何ですか

青灯夜游
青灯夜游オリジナル
2022-02-24 15:08:537550ブラウズ

Linux では、LVM の正式名は「Logical Volume Manager」で、中国語で「論理ボリューム管理」を意味します。これは、Linux 環境でディスク パーティションを管理するためのメカニズムであり、LVM はハードウェア上に構築されています。ディスクとパーティション: ディスク パーティション管理の柔軟性を高めるために使用できる論理レイヤー。

LinuxのLVMとは何ですか

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

LVM とは

#LVM (Logical Volume Manager)、つまり論理ボリューム管理とは、ディスク パーティションを管理するための方法です。 Linux 環境: メカニズムとしての LVM は、ディスク パーティション管理の柔軟性を向上させるために、ハードディスクとパーティション上に構築される論理レイヤーです。 LVM システム管理者は、複数のディスク パーティションをボリューム グループに接続してストレージ プールを形成するなど、ディスク パーティションを簡単に管理できます。管理者はボリューム グループ上に論理ボリュームを自由に作成し、さらに論理ボリューム グループ上にファイル システムを作成できます。管理者は、LVM を通じてストレージボリュームグループのサイズを簡単に調整でき、グループに応じてディスクストレージに名前を付け、管理し、割り当てることができます。新しいディスクがシステムに追加されると、LVM 管理者は、新しいストレージ領域を最大限に活用するためにディスクのファイルを新しいディスクに移動する必要がなく、ファイル システムをディスク全体に直接拡張できます。

一般に、物理ディスクまたはパーティションは分離されており、データはディスクまたはパーティションをまたがることができず、各ディスクまたはパーティションのサイズは固定されているため、再調整は面倒です。 LVM は、これらの基盤となる物理ディスクまたはパーティションを統合し、それらを容量リソース プールに抽象化し、上位層で使用できるように論理ボリュームに分割することができます。その主な機能は、シャットダウンや再フォーマットを行わずに使用できることです (正確には、論理ボリュームのサイズは柔軟に調整できます (元の部分をフォーマットする必要はなく、新しい部分のみがフォーマットされます)。

#LVM の実装プロセスは次のとおりです。

LinuxのLVMとは何ですか

#LVM 名詞の説明

PV(物理ボリューム)

: 物理ボリュームは論理ボリューム管理システムの最下部にあり、物理ハードディスク全体または実際の物理ハードディスク上のパーティションになります。 LVM に関連する管理パラメータを記録するために、物理パーティション内に特別な領域を確保するだけです。

VG (ボリューム グループ)

: ボリューム グループは物理ボリューム上に作成されます。ボリューム グループには少なくとも 1 つの物理ボリュームが含まれている必要があります。ボリューム グループの作成後、ボリュームを動的に追加できます。ボリューム グループ。論理ボリューム管理システム プロジェクトには複数のボリューム グループが存在できます。

LV(論理ボリューム)

: 論理ボリュームはボリューム グループ上に構築されます。ボリューム グループの未割り当て領域を使用して、新しい論理ボリュームを作成できます。論理ボリュームは、作成後に動的に拡張および縮小できます。空間が生まれます。

PE(物理エクステント)

: 物理領域とは、物理ボリューム内に割り当てることができる最小の記憶単位であり、物理領域のサイズはボリュームグループの構築時に指定されます。すべての物理ボリュームの物理領域サイズは一貫している必要があります。新しい pv が vg に追加されると、pe サイズは vg で定義された pe サイズに自動的に変更されます。

LE(論理エクステント)

: 論理領域は、論理ボリューム内で割り当て可能な最小のストレージ単位です。論理領域のサイズは、論理ボリューム内の物理領域のサイズによって異なります。論理ボリュームが配置されているボリューム グループ。カーネルの制限により、論理ボリューム (論理ボリューム) には最大 65536 PE (物理エクステント) しか含めることができないため、PE のサイズによって論理ボリュームの最大容量が決まります。4 MB (デフォルト) PE が最大容量を決定します論理ボリュームの最大容量は 256 GB です。256 GB を超える論理ボリュームを使用する場合は、ボリューム グループを作成するときに、より大きな PE を指定する必要があります。 Red Hat Enterprise Linux AS 4 では、PE サイズの範囲は 8 KB ~ 16 GB であり、常に 2 の倍数である必要があります。

LVM 書き込みモード

LVM には、リニア モードとストライプ モードの 2 つの書き込みモードがあります。

リニア モードとは、あるデバイスに書き込む前に別のデバイスに書き込むことを意味します
  • ストライプ モードは RAID0 に似ています。つまり、データが分散されます。各LVMメンバーデバイスに書き込みます。
  • ストライプ モードのデータは安全ではなく、LVM は読み取りおよび書き込みのパフォーマンスを重視していないため、LVM はデフォルトでリニア モードになり、1 つのデバイスが壊れた場合でも、他のデバイス上のデータはそのまま残ります。

  • #LVM の仕組み

LVM は各物理ボリュームの先頭にメタデータを保持します。メタデータには次の情報が含まれます。各VGのレイアウト構成、PV(物理ボリューム:物理ボリューム)の数、LV(論理ボリューム:論理ボリューム)の数、PEからの各Mapping関係を含むVG(ボリュームグループ:ボリュームグループ)全体の情報(物理拡張:物理拡張ユニット)から LE(論理拡張:物理拡張ユニット)まで。同じ VG 内の各 PV のヘッダー内の情報は同じであるため、障害発生時のデータ回復が容易になります。

LVM は、上位ファイル システムに LV 層を提供し、操作の詳細を隠します。ファイル システムに関しては、LV の操作はパーティションの本来の操作と変わりません。 LV に書き込む場合、LVM は対応する LE を見つけ、PV ヘッダーのマッピング テーブルを通じて対応する PE にデータを書き込みます。 LVM の最大の特徴は、ディスクを動的に管理できることです。論理ボリュームのサイズは、既存のデータを失うことなく動的に調整できるためです。新しいハードディスクを追加しても、既存の上位論理ボリュームは変更されません。重要なのは、PE と LE の間のマッピング関係を確立することであり、異なるマッピング ルールによって異なる LVM ストレージ モデルが決まります。 LVM は複数の PV のストライプとミラーをサポートします。

LVM の利点と欠点

利点:

  • ファイルシステム 複数のディスクにまたがることができるため、ファイル システムのサイズは物理ディスクによって制限されません。

  • ファイル システムのサイズは、システムの実行中に動的に拡張できます。

  • LVM ストレージ プールに新しいディスクを追加できます。

  • 重要なデータを複数の物理ディスクに冗長的にミラーリングできます。

  • ボリューム グループ全体を別のマシンに簡単にエクスポートできます。

欠点:

  • ボリューム グループからディスクを削除する場合は、reducevg コマンドを使用する必要があります (このコマンドは必要です) root 権限が必要であり、スナップショット ボリューム グループでは許可されません)。

  • ボリューム グループ内の 1 つのディスクが破損すると、ボリューム グループ全体が影響を受けます。

  • 追加の操作が追加されるため、ストレージのパフォーマンスが影響を受けます。

PV/VG/LV の作成方法

1. システム タイプは Linux に設定されます。 LVM、およびそのシステム ID は 8e です。fdisk ツールで t コマンドを使用して、

[root@localhost ~]# fdisk /dev/sdb 
...
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-62914559, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
...
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e  # 指定system id为8e
Changed type of partition 'Linux' to 'Linux LVM'
...
Command (m for help): p
...
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
/dev/sdb2        20973568    31459327     5242880   8e  Linux LVM
Command (m for help): w
...

2 を設定します。各物理ディスクまたはパーティションを PV (物理ボリューム、物理ボリューム) に初期化します。 Volume)

#この段階で使用できるコマンドは、pvcreate、pvremove、pvscan、pvdisplay (pvs)

1) pvcreate: 物理ボリュームの作成

使用法:

pvcreate [オプション] DEVICE

オプション:

  • -f: ユーザーなしで論理ボリュームの作成を強制します確認

  • -u: デバイスのUUIDを指定します

  • -y: 回答すべての質問に「はい」

pvcreate /dev/sdb1 /dev/sdb2

2) pvscan: 現在のシステム上のすべての物理ボリュームをスキャンします

使用法:

pvscan [オプション]

オプション:

  • -e: 物理ボリュームのみを表示します出力ボリューム グループ

  • #-n

    : どのボリューム グループにも属さない物理ボリュームのみを表示します

  • -u

    : UUIDを表示

  • 3) pvdisplay: 物理ボリュームの属性を表示

使用法:

pvdisplay [PV_DEVICE]

4 ) pvremove: 物理ボリューム情報を削除して、物理ボリュームとみなされなくなるようにします

使用法:

pvremove [オプション] PV_DEVICE

オプション:

  • -f

    : 強制削除

  • -y

    : 「はい」と答えるすべての質問へ

pvremove /dev/sdb1

5) PV の作成と削除の例

[root@localhost ~]# pvcreate /dev/sdb{1,2}  # 将两个分区初始化为物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvscan 
  PV /dev/sdb2                      lvm2 [5.00 GiB]
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 2 [15.00 GiB] / in use: 0 [0   ] / in no VG: 2 [15.00 GiB]
[root@localhost ~]# pvdisplay /dev/sdb1   # 显示物理卷sdb1的详细信息
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   # 由于PE是在VG阶段才划分的,所以此处看到的都是0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               GrP9Gi-ubau-UAcb-za3B-vSc3-er2Q-MVt9OO
   
[root@localhost ~]# pvremove /dev/sdb2   # 删除sdb2的物理卷信息
  Labels on physical volume "/dev/sdb2" successfully wiped.
[root@localhost ~]# pvscan     # 可以看到PV列表中已无sdb2
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 1 [10.00 GiB] / in use: 0 [0   ] / in no VG: 1 [10.00 GiB]
[root@localhost ~]# pvcreate /dev/sdb2 
  Physical volume "/dev/sdb2" successfully created.

3. VG(ボリュームグループ、ボリュームグループ)を作成します。

ボリューム グループは、複数の物理ボリュームを統合し (基礎となる詳細を保護)、PE を分割します (物理拡張)

PE は物理ボリューム内の最小のストレージ ユニットであり、For ブロックに似ています。ファイル システムでは PE サイズを指定でき、デフォルトは 4M です。この段階で使用されるコマンドには、vgcreate、vgscan、vgdisplay、vgextend、vgreduce

##1) vgcreate: ボリューム グループの作成

# 使用法:

vgcreate [option] VG_NAME PV_DEVICE

オプション:

#-s

: ボリューム グループ内の物理ボリュームの PE サイズ、デフォルトは 4M
  • -l

    : ボリューム グループで作成できる論理ボリュームの最大数
  • -p

    :ボリューム レベルで追加できる論理ボリュームの最大数 物理ボリュームの最大数
  • vgcreate -s 8M myvg /dev/sdb1 /dev/sdb2

2) vgscan: システム LVM ボリューム グループ内の存在を検索し、見つかったボリューム グループ リストを表示します

3) vgdisplay: ボリューム グループ属性を表示します

使用法:

vgdisplay [オプション] [VG_NAME]

オプション:

-A

: アクティブなボリューム グループに関する情報のみを表示します
  • -s

    : 短い形式の出力情報を使用します
  • 4) vgextend: LVM ボリューム グループを動的に拡張します。これにより、LVM ボリューム グループの容量が増加します。物理ボリュームをボリューム グループに追加することでボリューム グループを作成します

    使用法:
  • vgextend VG_NAME PV_DEVICE

  例 vgextend myvg /dev/sdb3

5)vgreduce:通过删除LVM卷组中的物理卷来减少卷组容量,不能删除LVM卷组中剩余的最后一个物理卷

 用法:vgreduce VG_NAME PV_DEVICE

6)vgremove:删除卷组,其上的逻辑卷必须处于离线状态

  用法:vgremove [-f] VG_NAME

  •   -f:强制删除

7)vgchange:常用来设置卷组的活动状态

  用法:vgchange -a n/y VG_NAME

  •   -a n为休眠状态,休眠之前要先确保其上的逻辑卷都离线;

  •   -a y为活动状态

8)vg创建例子

[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "myvg" using metadata type lvm2
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               14.98 GiB
  PE Size               8.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / 14.98 GiB
  VG UUID               aM3RND-aUbQ-7RjC-dCci-JiS4-Oj2Z-wv9poA

4、在卷组上创建LV(logical volume,逻辑卷)

为了便于管理,逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME。LV中可以分配的最小存储单元称为LE(logical extend),在同一个卷组中,LE的大小和PE是一样的,且一一对应。这一阶段用到的命令有lvcreate、lvscan、lvdisplay、lvextend、lvreduce、lvresize

1)lvcreate:创建逻辑卷或快照

  用法:lvcreate [选项] [参数]

  选项:

  •       -L:指定大小

  •       -l:指定大小(LE数)

  •       -n:指定名称

  •       -s:创建快照

  •       -p r:设置为只读(该选项一般用于创建快照中)

  注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷         

  例 lvcreate -L 500M -n mylv myvg

2)lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件

3)lvdisplay:显示逻辑卷属性

  用法:lvdisplay [/dev/VG_NAME/LV_NAME]

4)lvextend:可在线扩展逻辑卷空间

  用法:lvextend -L/-l 扩展的大小 /dev/VG_NAME/LV_NAME  

  选项:

  •       -L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M

  •       -l:指定扩展(后)的大小(LE数)

  例 lvextend -L 200M /dev/myvg/mylv

5)lvreduce:缩减逻辑卷空间,一般离线使用

 用法:lvexreduce -L/-l 缩减的大小 /dev/VG_NAME/LV_NAME  

  选项:

  •       -L:指定缩减(后)的大小

  •       -l:指定缩减(后)的大小(LE数)

  例 lvreduce -L 200M /dev/myvg/mylv

6)lvremove:删除逻辑卷,需要处于离线(卸载)状态

  用法:lvremove [-f] /dev/VG_NAME/LV_NAME

  •   -f:强制删除

7)lv创建例子

[root@localhost ~]# lvcreate -L 2G -n mylv myvg  
  Logical volume "mylv" created.
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/myvg/mylv' [2.00 GiB] inherit
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                2lfCLR-UEhm-HMiT-ZJil-3EJm-n2H3-ONLaz1
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-07-05 13:42:44 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

5、格式化逻辑卷并挂载

[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv
...
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
...
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount
mount mountpoint
[root@localhost ~]# mount /dev/myvg/mylv /data
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 1.5G 49G 3% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/myvg-mylv 2.0G 6.0M 1.8G 1% /data

相关推荐:《Linux视频教程

以上がLinuxのLVMとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。