linux入门之磁盘管理lvm逻辑卷案例

author author     2022-08-02     460

关键词:

Linux入门之磁盘管理(9)LVM逻辑卷案例

案例介绍阶段(1):

创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M;而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且支持ACL功能。

 

1、准备工作

#这里我们分别从两个磁盘选择10G来准备组合为PV

[[email protected] ~]# fdisk -l | grep -o ‘/.*B‘
/dev/sda: 21.5 GB
/dev/sdb: 21.5 GB
/dev/sdc: 21.5 GB
/dev/sdd: 10.7 GB
/dev/sde: 10.7 GB

#这里我们选择从sdb磁盘和sdbc磁盘中分别划分两个10G分区进行组合

[[email protected] ~]# fdisk -l | grep ‘^/dev/sd[bc][0-9]‘
/dev/sdb1             1        1306    10490413+  8e  Linux LVM
/dev/sdc1             1        1306    10490413+  8e  Linux LVM

注意:这里使用fdisk进行的新增分区,在创建分区后,最后使用t子命令转换为8e表示分区类型为Linux LVM,表示LVM专用。

#显示刚才的210G分区

[[email protected] ~]# lsblk | grep -o ‘sd[bc]1.*‘
sdb1   8:17   0   10G  0 part 
sdc1   8:33   0   10G  0 part


2、创建pv物理卷

#将两个分区创建为pv物理卷

[[email protected] ~]# pvcreate /dev/sd{b,c}1
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created

#查看pv物理卷

[[email protected] ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1       lvm2 ---- 10.00g 10.00g
  /dev/sdc1       lvm2 ---- 10.00g 10.00g

#扫描pv

[[email protected] ~]# pvscan 
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  PV /dev/sdc1                      lvm2 [10.00 GiB]
  Total: 2 [20.01 GiB] / in use: 0 [0   ] / in no VG: 2 [20.01 GiB]

解析:这里显示了当前pv总大小未20G,分别为两个10G pv组成,并且未使用,下面对其创建vg卷组。

 

3、创建vg组给指定pv分配PE

#指定vg组分配的PE大小每个为16M

[[email protected] ~]# vgcreate -s 16 myvg /dev/sd{b,c}1
  Volume group "myvg" successfully created

#查看当前vgmyvg中有2PV,总大小为20G

[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   0   0 wz--n- 20.00g 20.00g

#扫描为假,正在分配PE

[[email protected] ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "myvg" using metadata type lvm2

#查看PV,以及显示被分配了VG组为myvg

[[email protected] ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1  myvg lvm2 a--u 10.00g 10.00g
  /dev/sdc1  myvg lvm2 a--u 10.00g 10.00g

#使用vgdisplay显示其分配的PE相关信息

[[email protected] ~]# vgdisplay myvg | grep -io ‘(pe|vg).*size.*‘
VG Size               20.00 GiB
PE Size               16.00 MiB
PE / Size       0 / 0   
PE / Size       1280 / 20.00 GiB

解析:这里显示每个PE占用大小为16M,总共有1280个分区,0个使用。

 

4、创建一个5G 的lv逻辑卷

#创建lv逻辑卷大小未5G,逻辑卷名称为lvtest

[[email protected] ~]# lvcreate -n lvtest -L 5G myvg
  Logical volume "lvtest" created.

#扫描LV,显示分配了5G

[[email protected] ~]# lvscan
  ACTIVE            ‘/dev/myvg/lvtest‘ [5.00 GiB] inherit

#显示lv列表

[[email protected] ~]# lvs
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvtest myvg -wi-a----- 5.00g

#再次查看vg列表,发现LV列中为1,表示myvg组中有1个逻辑卷,剩余15G

[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 20.00g 15.00g

 

6、创建文件系统,添加测试数据

#格式化为ext4文件系统

[[email protected] ~]# mke2fs -t ext4 -L lvtest /dev/myvg/lvtest

#测试是否已经被分配了UUID

[[email protected] ~]# blkid /dev/myvg/lvtest 
/dev/myvg/lvtest: LABEL="lvtest" UUID="8b5e3d38-33ed-40b3-a53b-d7b039099378" TYPE="ext4"

#挂载分区

[[email protected] ~]# mkdir /mnt/lvtest; mount /dev/myvg/lvtest /mnt/lvtest

#查看分区占用大小及总大小

[[email protected] ~]# df -Ph | grep ‘/mnt/lvtest‘
/dev/mapper/myvg-lvtest  4.8G   10M  4.6G   1% /mnt/lvtest

#添加测试数据

[[email protected] ~]# cp /etc/issue /mnt/lvtest/
[[email protected] ~]# cat /mnt/lvtest/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m

#修改文件数据

[[email protected] ~]# echo ‘************‘ >> /mnt/lvtest/issue 
[[email protected] ~]# cat /mnt/lvtest/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************


7、设置自动挂载

#使用vim编辑/etc/fstab配置文件

[[email protected] ~]# vim /etc/fstab

技术分享 

#读出lvtestUUIDtype信息写入到文件

技术分享 

#添加额外功能acl

[[email protected] ~]# grep ‘/mnt/lvtest‘ /etc/fstab
UUID="8b5e3d38-33ed-40b3-a53b-d7b039099378" /mnt/lvtest ext4   defaults,acl  0 0

#刚才进行了挂载,因此先卸载,去重读fstab配置

[[email protected] ~]# umount /dev/myvg/lvtest

#查看lvtest逻辑卷是否已经启用了acl功能

[[email protected] ~]# mount | grep ‘.*lvtest‘
/dev/mapper/myvg-lvtest on /mnt/lvtest type ext4 (rw,acl)

 

案例介绍阶段(2):

新建用户archlinux,要求其家目录为/mnt/lvtest/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录

 

8、添加文件及用户设置

#添加用户archlinux并设置指定目录为其家目录

[[email protected] ~]# useradd -d /mnt/lvtest/archlinux archlinux && echo "123456" | passwd --stdin archlinux
Changing password for user archlinux.
passwd: all authentication tokens updated successfully.

#切换用户

[[email protected] ~]# su - archlinux

#查看当前登录用户

[[email protected] ~]$ whoami
archlinux

#查看当前所在目录

[[email protected] ~]$ pwd
/mnt/lvtest/archlinux

#拷贝目录

[[email protected] ~]$ cp -r /etc/pam.d/ /mnt/lvtest/archlinux/

#查看目录中的文件个数,有57

[[email protected] ~]$ ls /mnt/lvtest/archlinux/pam.d/ | sed -n ‘$=‘
57

 

案例介绍阶段(3):

扩展testlv至7G,要求archlinux用户的文件不能丢失

 

准备工作:

#查看分区的占用大小,只用了11M,总4.8G,剩余4.6G

[[email protected] ~]# df -Ph | grep ‘lvtest‘
/dev/mapper/myvg-lvtest  4.8G   11M  4.6G   1% /mnt/lvtest

#查看lv逻辑卷总大小为5G

[[email protected] ~]# lvs /dev/myvg/lvtest 
  LV     VG   Attr  LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvtest myvg -wi-ao---- 5.00g

#查看myvg卷组中还预留剩余15G空间可用于扩展  

[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 20.00g 15.00g

进行扩展:

#扩展逻辑卷大小,由上面得知lvtest原本为5G,扩展到7G加上2G即可

[[email protected] ~]# lvextend -L +2G /dev/myvg/lvtest 
  Size of logical volume myvg/lvtest changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
  Logical volume lvtest successfully resized.

#再次查看lvtest逻辑卷大小,已经变成了5G

[[email protected] ~]# lvs /dev/myvg/lvtest 
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvtest myvg -wi-ao---- 7.00g

#查看物理大小,发现并未改变

[[email protected] ~]# df -Ph | grep ‘lvtest‘
/dev/mapper/myvg-lvtest  4.8G   11M  4.6G   1% /mnt/lvtest

#重新设置物理卷大小为扩展到7G

[[email protected] ~]# resize2fs /dev/myvg/lvtest 7G
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/lvtest is mounted on /mnt/lvtest; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/lvtest to 1835008 (4k) blocks.
The filesystem on /dev/myvg/lvtest is now 1835008 blocks long.

#再次查看,总大小6.8G,显示的一些小误差而已,已经扩展成功

[[email protected] ~]# df -Ph | grep ‘lvtest‘
/dev/mapper/myvg-lvtest  6.8G   12M  6.5G   1% /mnt/lvtest

#下面检查文件数据是否损坏和丢失,查看刚才修改的issue文件

[[email protected] ~]# cat /mnt/lvtest/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************

#查看拷贝的pam.d目录下的文件个数,任然是57个没有丢失

[[email protected] ~]# ls /mnt/lvtest/archlinux/pam.d | sed -n ‘$=‘
57

 

案例介绍阶段(4)

收缩testlv至3G,要求archlinux用户的文件不能丢失


准备工作

#必须先卸载,否则缩减会失败

[[email protected] ~]# umount /dev/myvg/lvtest

#必须先检查文件系统是否完好

[[email protected] ~]# e2fsck -f /dev/myvg/lvtest 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
lvtest: 80/458752 files (0.0% non-contiguous), 64511/1835008 blocks

#上次查看得知分区剩余6.5G,占用了11M,缩减到3G,是够的,下面缩减物理卷

[[email protected] ~]# resize2fs /dev/myvg/lvtest 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/lvtest to 786432 (4k) blocks.
The filesystem on /dev/myvg/lvtest is now 786432 blocks long.

#缩减逻辑卷

[[email protected] ~]# lvreduce -L 3G /dev/myvg/lvtest 
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/lvtest? [y/n]: y
  Size of logical volume myvg/lvtest changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
  Logical volume lvtest successfully resized.

注意:缩减逻辑会提示警告可能会有损数据,当然准备好上面的准备工作来降低缩减失败率,最后在缩减前先将其分区中文件进行备份。

#再次查看逻辑卷大小,已经缩减到3G

[[email protected] ~]# lvs /dev/myvg/lvtest 
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvtest myvg -wi-a----- 3.00g

#再次挂载

[[email protected] ~]# mount -a

#物理卷也被缩减改为3G左右

[[email protected] ~]# df -Ph | grep ‘lvtest‘
/dev/mapper/myvg-lvtest  2.9G  7.8M  2.7G   1% /mnt/lvtest

#检查分区中数据是否损坏和缺少,issue文件内容完整

[[email protected] ~]# cat /mnt/lvtest/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************

#查看pam.d目录中文件个数,仍然是57

[[email protected] ~]# ls /mnt/lvtest/archlinux/pam.d/ | wc -l 
57


案例介绍阶段(5)

对testlv创建快照,并尝试基于快照备份数据,验正快照的功能

 

创建快照卷

#创建一个3G大小的基于lvtest逻辑卷的快照卷,并设置为只读

[[email protected] ~]# lvcreate -n lvtest-sanp -L 3G -p r -s /dev/myvg/lvtest 
  Logical volume "lvtest-sanp" created.

#查看lvs,这里显示它们在同一个vg

[[email protected] ~]# lvs
  LV       VG   Attr      LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvtest    myvg owi-aos---     3.00g                                                    
  lvtest-sanp  myvg sri-a-s---  3.00g      lvtest 0.00

注意:Attr属性那列中lvtest中为owi,而lvtest-sanp快照卷为sri,表示为快照


使用快照卷

#挂载快照卷

[[email protected] ~]# mkdir /mnt/lvtest-sanp && mount /dev/myvg/lvtest-sanp /mnt/lvtest-sanp 
mount:block device /dev/mapper/myvg-lvtest--sanp is write-protected, mounting read-only

#查看快照卷数据文件

[[email protected] ~]# cat /mnt/lvtest-sanp/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************

#查看pam.d目录下文件任然为57

[[email protected] ~]# ls /mnt/lvtest-sanp/archlinux/pam.d/ | grep -n $ | tail -1 | cut -d: -f1
57

#下面修改原逻辑卷中文件数据

[[email protected] ~]# echo {1..10} > /mnt/lvtest/issue
[[email protected] ~]# cat !$
cat /mnt/lvtest/issue
1 2 3 4 5 6 7 8 9 10

#删除原逻辑卷中pam.d目录下几个文件

[[email protected] ~]# rm -f /mnt/lvtest/archlinux/pam.d/c*

#原逻辑卷中pam.d文件夹只有51个文件了

[[email protected] ~]# ls /mnt/lvtest/archlinux/pam.d/ | wc -l
51

#下面查看快照卷中数据issue文件,并未改变

[[email protected] ~]# cat /mnt/lvtest-sanp/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************

#查看快照卷中的pam.d目录是否还是57

[[email protected] ~]# ls /mnt/lvtest-sanp/archlinux/pam.d/ | wc -l
57

 

下面我们将逻辑卷中的数据还原

#备份快照卷数据

[[email protected] ~]# tar -jcf /tmp/lvtest.tar.bz2 /mnt/lvtest-sanp/
tar: Removing leading `/‘ from member names

#查看备份文件已经生成

[[email protected] ~]# ls -l /tmp/lvtest.tar.bz2 
-rw-r--r--. 1 root root 3849 Aug 18 22:30 /tmp/lvtest.tar.bz2

#还原文件及目录结构

[[email protected] lvtest]# tar -jxf /tmp/lvtest.tar.bz2 -C ./ 
[[email protected] lvtest]# ls
mnt
[[email protected] lvtest]# mv mnt/lvtest-sanp/* ./
[[email protected] lvtest]# rmdir mnt/lvtest-sanp/

解析:默认tar命令会保存全路径,所有要进行目录结构调整,当然也可以可以切换到指定目录下进行打包压缩,更方便使用目录结构

#查看文件内容,已经恢复到了原来逻辑卷中的数据状态

[[email protected] lvtest]# ls
archlinux  issue  lost+found  mnt
[[email protected] lvtest]# cat issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
************
[[email protected] lvtest]# ls archlinux/pam.d/ | wc -l
57

解析:这里表示已经完全还原回来了,原来快照卷只从被创建,里面的文件就只是保存原本未改变的数据,如果原文件被改变,那么快照卷卷就会将原文件未改变的数据存入快照卷,实际上快照卷无需很多,里面只是存放被改变的文件后删除文件后原来的文件内容或文件结构。因此快照卷只是做了一个原数据保留。

本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1845375

linux磁盘管理:lvm逻辑卷

Linux磁盘管理:LVM逻辑卷LVM简介  LVM(LogicalVolumeManager逻辑卷管理),是Linux操作系统的逻辑卷管理器。  LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继... 查看详情

转载linux磁盘管理:lvm逻辑卷管理

Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理... 查看详情

linux中的高级存储管理之逻辑卷管理器lvm(代码片段)

...3.LVM的拉伸1.VG容量充足时2.当VG不足时4.LVM的缩减5.LVM的LV磁盘快照6.LVM的删除7.如何移除正在使用的PV3.LVM相关命令集合前言在linux提升五中,我们介绍了关于磁盘分区等的内容。但是在生产环境中往往会出现这样的情况,在... 查看详情

lvm讲解,磁盘故障案例(代码片段)

...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分... 查看详情

磁盘管理之lvm

...个或多个硬盘的分区在逻辑上集合来呈现给上层应用,对磁盘实现动态管理的机制。相对于普通的磁盘分区有很大的灵活性,使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。2、专业术语   ●物理卷(PhysicalVo... 查看详情

lvm(逻辑卷管理)最全案例解析

...里面的物理存储介质。要使用LVM系统,首先对要用于LVM的磁盘进行初始化,初始化的目的就是将磁盘或分区标识为LVM的物理卷。使用pvcreate命令可以将一个磁盘标记为LVM物理卷。b:物理分区:PhysicalExtents,简称PE,LVM将每个物理... 查看详情

lvm逻辑卷管理

它是Linux环境下对磁盘分区进行管理的一种机制解释:LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通... 查看详情

逻辑卷管理器(lvm)(代码片段)

...LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都... 查看详情

lvm逻辑卷管理

...统像卷一样伸长或缩短之故。LVM做法,将几个物理分区或磁盘,通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分成可使用分区(LV),最终就能够挂载使用!阶段一:PV,物理卷,在把磁盘转化为... 查看详情

lvm逻辑卷管理

...calVolumeManager(逻辑卷管理)的简写,,它是Linux环境下对磁盘分区进行管理的一种机制。作用Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘... 查看详情

lvm逻辑卷管理

...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的... 查看详情

lvm(逻辑盘卷管理)

...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分... 查看详情

磁盘空间的扩展与减少------逻辑卷管理器lvm

...LVM是LogicalVolumeManager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制。逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据。新... 查看详情

lvm逻辑卷管理

...ogicalVolumeManager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区... 查看详情

linux系统中lvm是啥?有啥作用?

...统中lvm是什么?LVM中文意思为逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,接下来我们来看看详细的内容介绍。  Linux系统中lvm是什么?  LVM,全称LogicalVolumeManager,即逻辑卷管理,是Linux环境下对磁盘分区进行... 查看详情

linux系统的逻辑卷管理

Linux系统的逻辑卷管理一、查看系统磁盘及系统版本二、LVM逻辑卷相关术语解释三、创建LVM步骤1.创建两个磁盘分区2.创建物理卷PV3.创建卷组VG4.创建逻辑卷LVM5.格式化逻辑卷及挂载①格式化逻辑卷②编辑fstab③永久挂载四、查看逻... 查看详情

逻辑卷管理器(lvm)

...LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都... 查看详情

lvm逻辑盘卷管理

...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以... 查看详情