ホームページ >運用・保守 >Linuxの運用と保守 >Linuxのlvmパーティションとは何ですか?

Linuxのlvmパーティションとは何ですか?

藏色散人
藏色散人オリジナル
2023-03-24 09:48:291907ブラウズ

Linux の lvm パーティションは「論理ボリューム管理」を指します。lvm の英語の正式名は「Logical Volume Manager」で、Linux 環境でディスク パーティションを管理するためのメカニズムです。LVM はハードディスク上に構築されます。ディスク パーティション管理の柔軟性を向上させるためのパーティション上の論理層。

Linuxのlvmパーティションとは何ですか?

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

1. LVM とは

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

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

Linuxのlvmパーティションとは何ですか?

2. LVM 用語の説明

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

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

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

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

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

3. LVM 書き込みモード

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

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

4. LVM の仕組み

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

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

5. LVM の長所と短所

利点:

  • ファイル システムは複数のディスクにまたがることができるため、ファイル システムのサイズは物理ディスクによって制限されません。 。
  • ファイル システムのサイズは、システムの実行中に動的に拡張できます。
  • LVM ストレージ プールに新しいディスクを追加できます。
  • 重要なデータをミラーリング方式で複数の物理ディスクに冗長化できます。
  • ボリューム グループ全体を別のマシンに簡単にエクスポートできます。

欠点:

  • ボリューム グループからディスクを削除する場合は、reducevg コマンドを使用する必要があります (このコマンドには root 権限が必要であり、スナップショット ボリューム グループの使用では許可されません)。 。
  • ボリューム グループ内の 1 つのディスクが破損すると、ボリューム グループ全体が影響を受けます。
  • 追加の操作が追加されるため、ストレージのパフォーマンスが影響を受けます。

6. 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): 2First sector (20973568-62914559, default 20973568): 
Using default value 20973568Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
...
Command (m for help): t
Partition number (1,2, default 2): 2Hex code (type L to list all codes): 8e  # 指定system id为8eChanged 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 (物理ボリューム)

## に初期化します。 #この段階で使用できるコマンドは、pvcreate、pvremove、pvscan、pvdisplay (pvs)

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

用法:pvcreate [option] DEVICE

  选项:

      -f:强制创建逻辑卷,不需用户确认

      -u:指定设备的UUID

      -y:所有问题都回答yes

  例 pvcreate /dev/sdb1 /dev/sdb2

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

用法:pvscan [option]

  选项:

      -e:仅显示属于输出卷组的物理卷

      -n:仅显示不属于任何卷组的物理卷

      -u:显示UUID

3) pvdisplay: のプロパティを表示します物理ボリューム

 用法:pvdisplay [PV_DEVICE]

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

 用法:pvremove [option] PV_DEVICE

  选项:

      -f:强制删除

      -y:所有问题都回答yes

  例 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 は物理ボリューム内の最小のストレージ ユニットであり、ファイル システムのブロック、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 [option] [VG_NAME]

  选项:

      -A:仅显示活动卷组的信息

      -s:使用短格式输出信息

4) vgextend: 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

PS:更新

一、LV逻辑卷扩容后,必须对挂载目录在线扩容。

使用 resize2fs或xfs_growfs 对挂载目录在线扩容
resize2fs 针对文件系统ext2 ext3 ext4
xfs_growfs 针对文件系统xfs

xfs在线扩容

xfs_growfs /dev/mapper/vg--BHG-lv01
meta-data=/dev/mapper/vg--BHG-lv01 isize=512    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0data blocks changed from 128000 to 256000

ext4在线扩容

[root@localhost /]# resize2fs /dev/mapper/vg--BHG-lv02
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg--BHG-lv02 is mounted on /BHGPOS-data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg--BHG-lv02 is now 5242880 blocks long.

相关推荐:《Linux视频教程

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

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