>  기사  >  운영 및 유지보수  >  리눅스의 lvm 파티션은 무엇입니까?

리눅스의 lvm 파티션은 무엇입니까?

藏色散人
藏色散人원래의
2023-03-24 09:48:291770검색

Linux의 lvm 파티션은 "논리 볼륨 관리"를 의미합니다. lvm의 전체 영어 이름은 "Logical Volume Manager"입니다. 이는 Linux 환경에서 LVM이 하드 디스크와 파티션에 구축되어 있는 디스크 파티션을 관리하는 메커니즘입니다. 디스크 파티션 관리의 유연성을 향상시키는 논리 계층입니다.

리눅스의 lvm 파티션은 무엇입니까?

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

1. LVM이란?

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

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

리눅스의 lvm 파티션은 무엇입니까?

2. LVM 용어 설명

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

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

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

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

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

3. LVM 쓰기 모드

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

  • 선형 모드는 다른 장치에 쓰기 전에 한 장치에 쓰는 것을 의미합니다.
  • 스트라이프 모드는 RAID0과 다소 유사합니다. 즉, 데이터가 분산 방식으로 각 LVM 구성원 장치에 기록됩니다.
    스트라이프 모드의 데이터는 안전하지 않고 LVM은 읽기 및 쓰기 성능을 강조하지 않기 때문에 LVM은 기본적으로 선형 모드를 사용하므로 한 장치가 손상되더라도 다른 장치의 데이터는 그대로 유지됩니다.

4. LVM 작동 방식

LVM은 각 물리 볼륨의 헤드에 메타데이터를 유지합니다. 각 메타데이터에는 각 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 명령을 사용해야 합니다(이 명령에는 루트 권한이 필요하며 스냅샷 볼륨 그룹에서는 허용되지 않습니다).
  • 볼륨 그룹의 디스크 하나가 손상되면 전체 볼륨 그룹이 영향을 받습니다.
  • 추가 작업으로 인해 스토리지 성능이 영향을 받습니다.

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. 그룹). 볼륨 그룹은 여러 물리 볼륨을 통합하고(기본 세부 정보 보호) 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 볼륨 그룹을 동적으로 확장하여 볼륨에 물리 볼륨을 추가하여 볼륨 그룹의 용량을 늘립니다. group

 用法: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视频教程

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

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