>운영 및 유지보수 >리눅스 운영 및 유지 관리 >리눅스에서 LVM은 무엇입니까

리눅스에서 LVM은 무엇입니까

青灯夜游
青灯夜游원래의
2022-02-24 15:08:537509검색

LVM의 전체 이름은 "논리적 볼륨 관리자"입니다. 이는 중국어로 "논리적 볼륨 관리"를 의미합니다. LVM은 하드 디스크에 구축된 논리적 계층입니다. 및 파티션을 사용하여 디스크 파티션 관리의 유연성을 향상시킬 수 있습니다.

리눅스에서 LVM은 무엇입니까

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

LVM이란

논리 볼륨 관리인 LVM(Logical Volume Manager)은 Linux 환경에서 디스크 파티션을 관리하는 메커니즘입니다. LVM은 하드 디스크와 파티션 위에 구축된 논리적 계층입니다. 디스크 파티션 관리의 유연성을 향상시킵니다. LVM 시스템 관리자는 여러 디스크 파티션을 볼륨 그룹에 연결하여 스토리지 풀을 형성하는 등 디스크 파티션을 쉽게 관리할 수 있습니다. 관리자는 볼륨 그룹에 논리 볼륨을 자유롭게 생성하고 논리 볼륨 그룹에 파일 시스템을 추가로 생성할 수 있습니다. 관리자는 LVM을 통해 스토리지 볼륨 그룹의 크기를 쉽게 조정할 수 있으며 그룹에 따라 디스크 스토리지의 이름을 지정하고 관리하고 할당할 수 있습니다. 새 디스크가 시스템에 추가되면 LVM 관리자는 새 저장 공간을 최대한 활용하기 위해 디스크의 파일을 새 디스크로 이동할 필요가 없지만 파일 시스템을 디스크 전체로 직접 확장할 수 있습니다.

일반적으로 물리적인 디스크나 파티션은 분리되어 있고, 데이터는 디스크나 파티션에 걸쳐 있을 수 없으며, 각 디스크나 파티션의 크기도 고정되어 있어 재조정이 번거롭습니다. LVM은 이러한 기본 물리적 디스크 또는 파티션을 통합하여 용량 리소스 풀로 추상화하고 상위 계층에서 사용할 수 있도록 논리 볼륨으로 나눌 수 있습니다. 주요 기능은 종료하거나 다시 포맷하지 않고도 사용할 수 있다는 것입니다. 논리 볼륨의 크기는 유연하게 조정될 수 있습니다(원본 부분은 포맷할 필요가 없으며 새 부분만 포맷됩니다).

LVM 구현 과정은 다음과 같습니다.

리눅스에서 LVM은 무엇입니까

LVM 용어 설명

PV(물리적 볼륨): 물리 볼륨은 논리 볼륨 관리 시스템의 맨 아래에 있으며, 전체 물리적 하드 디스크 또는 실제 물리적 하드 디스크 파티션이 있습니다. LVM과 관련된 관리 매개변수를 기록하기 위해 물리 분할에 특수 영역을 별도로 설정합니다.

VG(볼륨 그룹): 볼륨 그룹은 물리 볼륨에 설정됩니다. 볼륨 그룹은 하나 이상의 물리 볼륨을 포함해야 합니다. 볼륨 그룹이 설정된 후에는 볼륨 그룹에 동적으로 추가할 수 있습니다. 관리 시스템 프로젝트에는 여러 볼륨 그룹이 있을 수 있습니다.

LV(논리 볼륨): 논리 볼륨은 볼륨 그룹에 구축됩니다. 볼륨 그룹의 할당되지 않은 공간은 논리 볼륨이 생성된 후 공간을 동적으로 확장 및 축소할 수 있습니다.

PE(물리적 범위): 물리적 영역은 물리적 볼륨에서 할당할 수 있는 가장 작은 저장 단위입니다. 물리적 영역 크기는 볼륨 그룹을 생성할 때 지정됩니다. 동일한 볼륨 그룹에 있는 모든 물리 볼륨의 물리 영역 크기는 지속적으로 vg에 새 pv가 추가된 후 pe 크기가 vg에 정의된 pe 크기로 자동 변경됩니다.

LE(논리적 범위): 논리 영역은 논리 볼륨에서 할당할 수 있는 가장 작은 저장 단위입니다. 논리 영역의 크기는 논리 볼륨이 위치한 볼륨 그룹의 물리 영역 크기에 따라 다릅니다. . 커널 제한으로 인해 논리 볼륨(논리 볼륨)은 최대 65536 PE(물리적 범위)만 포함할 수 있으므로 PE 크기에 따라 논리 볼륨의 최대 용량이 결정됩니다. 4MB(기본값) PE가 최대 용량을 결정합니다. 단일 PE의 최대 용량은 256GB입니다. 256G보다 큰 논리 볼륨을 사용하려면 볼륨 그룹을 생성할 때 더 큰 PE를 지정해야 합니다. Red Hat Enterprise Linux AS 4에서 PE 크기의 범위는 8KB~16GB이며 항상 2의 배수여야 합니다.

LVM 쓰기 모드

LVM에는 선형 모드와 스트라이프 모드의 두 가지 쓰기 모드가 있습니다.

  • Linear 모드는 하나의 장치에 쓴 후 다른 장치에 쓰는 것을 의미합니다.

  • Stripe 모드는 RAID0과 다소 유사합니다. 즉, 데이터가 분산 방식으로 각 LVM 구성원 장치에 기록됩니다.

    스트라이프 모드의 데이터는 안전하지 않고 LVM은 읽기 및 쓰기 성능을 강조하지 않기 때문에 LVM은 기본적으로 선형 모드를 사용하므로 한 장치가 손상되더라도 다른 장치의 데이터는 그대로 유지됩니다.

LVM 작동 방식

LVM은 각 물리 볼륨의 헤드에 메타데이터를 유지합니다. 각 메타데이터에는 각 VG의 레이아웃 구성, PV 수를 포함하여 전체 VG(볼륨 그룹)에 대한 정보가 포함됩니다. (물리적 볼륨: 물리 볼륨), LV(논리 볼륨: 논리 볼륨) 개수, 각 PE(물리 확장: 물리적 확장 장치)의 개수를 LE(논리 확장: 물리적 확장 장치)로 매핑 관계입니다. 동일한 VG에 있는 각 PV의 헤더 정보는 동일하므로 장애 발생 시 데이터 복구가 용이합니다.

LVM은 상위 파일 시스템에 LV 계층을 제공하여 작업 세부 정보를 숨깁니다. 파일 시스템의 경우 LV의 작동은 원래 파티션의 작동과 다르지 않습니다. LV에 쓸 때 LVM은 해당 LE를 찾아 PV 헤더의 매핑 테이블을 통해 해당 PE에 데이터를 씁니다. LVM의 가장 큰 특징은 디스크를 동적으로 관리할 수 있다는 점이다. 기존 데이터 손실 없이 논리 볼륨의 크기를 동적으로 조정할 수 있기 때문입니다. 새 하드 디스크를 추가해도 기존 상위 논리 볼륨은 변경되지 않습니다. 핵심은 PE와 LE 간의 매핑 관계를 설정하는 것입니다. 서로 다른 매핑 규칙에 따라 서로 다른 LVM 저장소 모델이 결정됩니다. LVM은 여러 PV의 스트라이프 및 미러를 지원합니다.

LVM의 장점과 단점

장점:

  • 파일 시스템은 여러 디스크에 걸쳐 있을 수 있으므로 파일 시스템 크기는 물리적 디스크에 의해 제한되지 않습니다.

  • 시스템이 실행되는 동안 파일 시스템의 크기를 동적으로 확장할 수 있습니다.

  • LVM 스토리지 풀에 새 디스크를 추가할 수 있습니다.

  • 미러링 방식으로 중요한 데이터를 여러 물리적 디스크에 중복할 수 있습니다.

  • 전체 볼륨 그룹을 다른 컴퓨터로 쉽게 내보낼 수 있습니다.

단점:

  • 리듀스vg 명령은 볼륨 그룹에서 디스크를 제거할 때 사용해야 합니다(이 명령에는 루트 권한이 필요하며 스냅샷 볼륨 그룹에서는 사용할 수 없습니다).

  • 볼륨 그룹의 디스크 하나가 손상되면 전체 볼륨 그룹이 영향을 받습니다.

  • 추가 작업으로 인해 스토리지 성능이 영향을 받습니다.

PV/VG/LV를 생성하는 방법

1. 각 물리적 디스크 또는 파티션의 시스템 유형을 Linux LVM으로 설정합니다. 시스템 ID는 8e이고, 다음에서 t 명령을 통해 설정합니다. fdisk 도구

[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(물리적 볼륨)로 초기화합니다.

이 단계에서 사용할 수 있는 명령은 pvcreate, pvremove, pvscan, pvdisplay (pvs)

1) pvcreate입니다. : create Physical Volume

사용법: pvcreate [option] DEVICEpvcreate [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(volume group,卷组)。

卷组将多个物理卷整合起来(屏蔽了底层细节),并划分PE(physical extend)

PE是物理卷中的最小存储单元,有点类似于文件系统中的block,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

옵션: 🎜🎜🎜🎜 -f: 사용자 확인 없이 강제로 논리 볼륨 생성🎜🎜🎜 🎜 -u: 장치의 UUID를 지정합니다🎜🎜🎜🎜 -y: 모든 질문에 yes로 대답합니다🎜🎜🎜🎜 예pvcreate /dev/sdb1 / dev/sdb2🎜🎜2) pvscan: 현재 시스템의 모든 물리 볼륨을 검색🎜🎜사용법: <code>pvscan [옵션]🎜🎜 옵션: 🎜🎜🎜🎜 -e: 출력 볼륨 그룹에 속하는 물리 볼륨만 표시🎜🎜🎜🎜 <code>-n: 어떤 볼륨 그룹에도 속하지 않는 물리 볼륨만 표시🎜🎜🎜🎜 -u : UUID 표시🎜 🎜🎜🎜3) pvdisplay: 물리 볼륨의 속성을 표시🎜🎜 사용법: pvdisplay [PV_DEVICE]🎜🎜4) pvremove: 물리 볼륨 정보를 삭제하여 더 이상 물리 볼륨으로 간주되지 않습니다🎜 🎜 사용법: pvremove [옵션] PV_DEVICE🎜🎜 옵션: 🎜🎜🎜🎜 -f: 강제 삭제 🎜🎜🎜🎜 -y: All 모든 질문에 대한 대답은 yes입니다🎜🎜🎜🎜 예시 pvremove /dev/sdb1🎜🎜5) PV 생성 및 삭제 예시🎜
[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
🎜🎜3. (볼륨 그룹, 볼륨 그룹). 🎜🎜🎜볼륨 그룹은 여러 물리적 볼륨을 통합하고(기본 세부 정보 보호) PE를 나눕니다(물리적 확장) 🎜🎜PE는 물리적 볼륨에서 가장 작은 저장 단위로, 파일 시스템의 블록과 다소 유사합니다. 지정되며 기본값은 4M입니다. 이 단계에서 사용되는 명령에는 vgcreate, vgscan, vgdisplay, vgextend, vgreduce🎜🎜1) vgcreate: 볼륨 그룹 생성🎜🎜 사용법: vgcreate [옵션] 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]🎜🎜 옵션 : 🎜🎜🎜🎜                                                                      ~                                         볼륨 그룹에 물리 볼륨을 추가하여 볼륨 그룹의 용량을 늘리는 LVM 볼륨 그룹 확장🎜🎜 사용법: vgextend VG_NAME PV_DEVICE 코드>🎜<p>  例 <code>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            &#39;/dev/myvg/mylv&#39; [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视频教程

위 내용은 리눅스에서 LVM은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.