linux lvm2,LVM2常见用法详解
LVM2常见用法详解
1.简介
LVM(Logical Volume Manager)是逻辑卷管理的意思,是linux环境下对磁盘分区进行管理的一种机制,lvm是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
2.特点
可以对磁盘进行动态管理,动态增加或较少逻辑卷大小,而不会丢失现有的数据。
3.基本的逻辑管理概念
PV(physical volume)- 物理卷
通常是一个分区,也可以是整个物理硬盘,也可以是raid设备。
VG(volume group)- 卷组
多个物理卷的集合,创建在物理卷之上,在卷组创建时候,可以动态添加物理卷到卷组中。一个逻辑卷系统工程中可以只有一个卷组,也可以有多个卷组。
LV(logical volume)- 逻辑卷
创建在卷组之上,逻辑卷也可以动态的扩展或缩小空间。卷组中未被分配的卷组空间可以用于创建新的逻辑卷。多个逻辑卷可以属于同一个卷组,也可以属于不同的卷组。
PE(physical extent)- 物理块
4.通过联系学习使用lvm
练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;
练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;
练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;
练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;
练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;
5.开始练习
练习1:
首先准备两个分区,并调整分区类型为linux lvm(8e)
我呢,准备了两个分区/dev/sda5(11G)和/dev/sda6(9G)
##创建PV
语法:pvcreate PhysicalVolume [PhysicalVolume...]
pv的创建很简单,使用命令pvcrete后面直接加你想创建的分区,硬盘或者raid设备,在这里是/dev/sda5和/dev/sda6
pvcreate /dev/sda5 /dev/sda6
##使用pvs和pvdisplay查看pv
~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a-- 59.99g 7.99g
/dev/sda5 lvm2 --- 11.01g 11.01g
/dev/sda6 lvm2 --- 9.01g 9.01g
(pvs和pvdisplay都可以显示pv信息,只是pvs显示简要信息,pvdisplay显示详细信息。不带参数会显示所有pv。/dev/sda2是虚拟机自动创建的,对比可以看到,此时,我们创建的pv还并不适于任何一个VG)
##创建Vg
vgcreate [-s|--physicalextentsize PhysicalExtent-Size[bBsSkKmMgGtTpPeE]]
vgcreate -s 8M testvg /dev/sda5
(-s指定PE大小,其实可以一步创建20G的vg 使用vgcreate -s 8M test vg /dev/sda5 /dev/sda6,之所以不这样做,是下面为了演示动态扩展VG大小)
然后看看效果
~]# vgs
VG #PV #LV #SN Attr VSize VFree
testvg 1 0 0 wz--n- 11.00g 11.00g
vg0 1 4 0 wz--n- 59.99g 7.99g
~]# pvdisplay /dev/sda5
--- Physical volume ---
PV Name /dev/sda5
VG Name testvg
PV Size 11.01 GiB / not usable 7.16 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 1408
Free PE 1408
Allocated PE 0
PV UUID rzEsIK-uHnM-cCTi-Cu82-HQXA-7VH9-Xktpd
(可以看到vg name为testvg,pe大小为8M,pv只有加入到卷组后,才有pe大小的,而且,一旦创建,不能更改)
##使用pvextend动态扩展VG
语法:pvextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
pvextend testvg /dev/sda6
~]# vgs
VG #PV #LV #SN Attr VSize VFree
testvg 2 0 0 wz--n- 20.00g 20.00g
vg0 1 4 0 wz--n- 59.99g 7.99g
(可以看到testvg的大小变成了20g)
##使用lvcreate创建逻辑卷
语法:lvcreate -L LogicalVolumeSize[bBsSkKmMgGtTpPeE]} -n|--name LogicalVolume{Name|Path} Volumgroup
lvcreate -L 5G -n testlv testvg
~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testlv testvg -wi-a----- 5.00g
....
~]# ls -l /dev/testvg/
total 0
lrwxrwxrwx 1 root root 7 Dec 19 17:38 testlv -> ../dm-4
(同时,系统在/dev目录下创建了相应的设备文件和符号链接)
最后一步,创建逻辑卷后,在制作文件系统就可以挂在并且使用了
mke2fs -t ext4 /dev/testvg
~]# mke2fs -t ext4 /dev/testvg/testlv
现在就可以挂在并且使用了
mkdir /users
mount /dev/testvg/testlv /users
~]# mkdir /users
[root@localhost ~]# mount /dev/testvg/testlv /users
[root@localhost ~]# ls /users
lost+found
练习2:
mkdir /users/archlinux
useradd -d /users/archlinux archlinux
su - archlinux
cp -r /etc/pam.d .
练习3:
首先查看testvg是否有足够的剩余空间
~]# vgs testvg
VG #PV #LV #SN Attr VSize VFree
testvg 2 1 0 wz--n- 20.00g 15.00g
然后,扩展lv"物理边界",在扩展文件系统边界
~]# lvextend -L +2G /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 5.00 GiB (640 extents) to 7.00 GiB (896 extents).
Logical volume testlv successfully resized
(还有另一种格式lvextend -L 7G /dev/testvg/testlv,+意为在原有的基础上增加空间,不带加号代表绝对空间,然后指定逻辑卷路径)
~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testlv testvg -wi-ao---- 7.00g
df -h
/dev/mapper/testvg-testlv 4.8G 11M 4.6G 1% /users
虽然物理边界增大,但文件系统大小还是不变,下面扩展文件系统边界
resize2fs /dev/testvg/testlv
练习4:
##lvreduce — reduce the size of a logical volume
不像lvextend在扩展lv和resize2fs支持挂在时扩展
在使用lvreduce缩减物理边界前,必须先卸载文件系统,还得使用e2fsck -f some_filesystem 强行检查文件系统,resize2fs之后,才能使用lvreduce。
umount /dev/testvg/testlv
e2fsck -f /dev/testvg/testlv
resize2fs /dev/testvg/testlv 3G
lvreduce -L 3G /dev/testvg/testlv
(保持缩减大小一致)
然后检查是否有文件丢失
练习5:
注意:快照区与被快照区必须要在同一个vg里
lvcreate -L 200M -s -n snap_testlv /dev/testvg/testlv
cd /users
tar cjf /tmp/snap-for-testlv.bz2 *
rm -rf /users/*
ls -l
tar xjf /tmp/snap-for-testlv.bz2
补充两个知识点,就是vg的缩减和删除lvm
类似lv的缩减,在缩减vg之前,必须先使用pvmove先把你想撤掉的块设备的数据移动到其他还在工作中的pv上
pvmove /dev/sda6
vgreduce testvg /dev/sda6
然后在检查一下
要彻底删除lvm,只需按创建lv相反的操作即可
umount /users
lvremove /dev/testvg/testlv
vgremove testvg
pvremove /dev/sda5 /dev/ada6 ...
linux lvm2,LVM2常见用法详解相关推荐
- Linux中head和tail命令作用,Linux 命令head和tail常见用法详解
head和tail是一组想对应的命令,默认分别显示文件的开头和末尾10行记录. head head 命令可以将一段文本的开头一部分输出到标准输出. head命令既可以处理文本文件也可以处理标准输入. ...
- Linux下的awk用法详解
Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...
- Linux下find命令用法详解
Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...
- 《算法笔记》学习日记——6.1 vector的常见用法详解
目录 6.1 vector的常见用法详解 问题 A: Course List for Student (25) 问题 B: Student List for Course (25) 小结 6.1 ve ...
- linux bin fuser,Linux中fuser命令用法详解
描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...
- C++/C--unordered_map常见用法详解
文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...
- C++/C--set常见用法详解【转载】
1 概念 set是一个内部自动有序且不含重复元素的容器,其实现自动去重按升序排序.使用set,需要添加头文件:#include <set>.可以通过迭代器*it来访问set里面的元素,但是 ...
- C++中的unordered_map常见用法详解
文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...
- linux系统中drrwx-xr-x 用法详解
drrwx-xr-x 用法详解 drwxr-xr-x 用法详解: 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x ...
最新文章
- 算法基础知识科普:8大搜索算法之AVL树(下)
- p2596 书架(Treap)
- mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解
- 碎片化学习的三大障碍及破解之道
- 基于C#开发的浏览器隐身工具-上班别乱开
- CodeForces 560A,B,C
- git实现审核功能_一文教你如何搭建PDD分佣小程序实现财富自由
- 多功能pdf编辑器PDF Office Max for mac
- ENVI入门系列教程---一、数据预处理---5. 图像自动配准
- 练习12——二叉树与表达式
- 推荐免费下载380套大型商业源码
- 数据结构 —— 静态链表
- LWN: lockless编程模式——relaxed access和partial memory barrier
- 生物特征识别的种族偏见,肤色偏见,性别偏见
- php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识
度量声音强度,大 - phpStudy...
- 矩阵中行向量两两之间的欧氏距离
- 共享单车大败局:谁是凶手,谁在买单?
- 2004年高考数学压轴题(利用对数齐次化或主元法解决)
- 关于跳出while(1)死循环问题
- 【收藏】计算机专业常用学习网站
热门文章
- TensorFlow 之 构建人物识别系统
- MySQL学习笔记(3)
- 华为S9300交换机CFM和Y.1731配置
- MAC MII PSY及MDI MDIX辨析
- 怎么给锋云服务器打无线网卡驱动,高手教你怎么安装和使用usb无线网卡
- java wrapper作用_Java Service Wrapper使用总结
- logback快速启动
- 品牌如何利用Instagram网红营销做好2023斋月推广?
- impdp 不兼容_Oracle exp/expdp imp/impdp导入导出数据
- C#读写配置文件(config.ini)入门