LVM2:
LVM:logical Volume Manager,Version(版本号):2
逻辑卷管理器的主要作用在于:
与我们前面讲过的软RAID很近似,使用纯软件的方式来组织一个或多个底层硬件设备为一个抽象的逻辑设备使用的一种解决方案。LVM类似于前面讲过的RAID,不过他们的驱动刚好相反,RAID用到的是内核的md模块,而LVM用到的是dm模块,
dm:device mapper 设备映射组件
功能:将一个或多个底层的块设备,组织成一个逻辑设备的模块;
逻辑卷的核心就是dm,dm除了提供逻辑卷功能外,还提供很多其他的功能,比如他也能实现RAID,还能实现多路径的功能。
逻辑卷是什么?
无非就是通过多个逻辑设备组织成一个单一设备来管理的一个组件,所以从这个角度来举例说明:
假如底层有一个硬盘设备,也可能是一个分区,也可能是一个RAID,他可以基于任何块设备进行,假如我们现在有一个分区,我们把他创建成在逻辑卷中被称为物理卷:PV,
我们可以把它创建成物理卷的格式,它类似于RAID中的将分区标记为fd类型,能自我存储一些元数据,创建成PV,也是能够存储一些元数据的,我们可以把PV中提供的存储空间,在一个更低的单位当划分成许许多多独立的存储单元,并且把这些存储单元合并在一个高层上,形成一个组件,我们称之为卷组:VG,卷组的功能类似于扩展分区,是没办法直接使用的,只有格式化才能使用,因为扩展分区要想使用是还需要再划分成逻辑分区的,所以在VG的基础上我们还要创建LV的组件,这才是真正意义上的逻辑卷,每一个LV都是一个独立的文件系统,可以被格式化并被使用,并且这个逻辑卷多大呢,他可以是卷组内的任意可用空间大小,LV可以跨越多个PV,在一个更加抽象的层次上我们还可以理解成如果把多个底层设备给他合并起来,做成一个VG的话,VG会在一个逻辑层次上,将内一个PV所提供的的空间,划分成固定大小的块,注意又是一个块的概念,但是这个块不叫block,也不叫chunk,而叫做PE,PE就是物理盘区,PE:Phsical Extent
那么PE到底有多大呢?
这比我们说的block大很多了,他可以是像512K,当然512K并不常见,PE默认大小是4M,还有可能更大,所以他是将PV提供的存储空间划分成n个大小相同个存储块,我们称为PE,一但我们的pv加入到一个VG以后,他的PE的大小取决于VG的定义,PV刚刚创建时,他没有将自己分隔成PE,只有加入到VG以后,才有了PE,因为每一个VG他对PE定义的大小可能都是各不相同的。这也就意味着有第三个PV,比方说现在有两个VG,第一个VG的PE是4M,第二个VG的PE是8M,如果我们将一个PV加入到第一个VG那么这个PV上的PE就是4M,然后我们再将这个PV加入到后面的VG,则这个PV的大小就是8M所以PE的大小是PV在加入到VG之后决定的。但是不管怎么讲,VG他一定是分隔成很多很多的PE作为存储空间使用的。所以我们说在到了VG这个层次以后,无论是来自于那里的PV,我们都将其组成为一个个大小一样的PE空间。我们可以在VG上创建LV,创建LV的过程,就是指定特定数量PE来组成一个逻辑存储空间的过程,比如我们创建一个LV,这里面有三个PE,每个PE大小为4M,那么这个LV大小就是12M,将来这个空间不够用了,我们还可以再加一个PE进去,那么他就成了16M了。将来我们发现分给LV的空间过多了,那么我们还可以从LV中减掉一个PE,那就又回到12M了,我们要注意的是,这个过程是不损坏LV本来就存放的数据的。所以逻辑卷的大小是可以动态的扩展或收缩。而不危害到里面的数据,这对我们的基本磁盘分区是不一样的。我们常用的这种基本磁盘分区,一旦大小不符合要求了,我们就只能重新分区格式化,所以里面的数据是会损失的。但是LV突破了这种限制,就像centos系统,如果我们进行自动化分区,他就会默认将根做在逻辑卷上,他首先也是创建一个boot分区,把剩余的空间全部创建为PV,把这个PV创建成VG,在VG中创建多个逻辑卷,一个LV用来当根,一个LV用来当swap一个LV用来当usr,VG中可以后多个LV,一个LV可以扩展到多大,是取决于VG中的空闲空间大小。如果LV扩展的没有空间可扩展了,那么我们需要先想VG中加以PV,然后再将在扩展LV所以这样对于企业外来不可预测的增长速度来讲这的确是一种很好用的方案。主要是我们不危害原有数据的前提下,我们的次磁盘空间就增大了。但是这样也有一个坏处,LV毕竟是在软件上实现的,就是数据一但发生损坏,修复起来比价困难。毕竟不是直接存储在硬件之上,而是靠另外软件来组织的。
VG的空间也是可以动态的扩展或收缩的。
我们一定要注意,我们要想从一个VG中拆掉一个PV,我们首先要保证剩余的PV能够保证提供VG上的LV已经占的空间。如果要移除PV上存有数据,我们需要先将存储在要移除PV中的数据拷贝出来,LV的缩减还是很危险的。但是扩展问题倒是不大。LVM加很容易,
1 LV:文件逻辑卷的缩减还是很危险的。
2. 一旦VG中的PE分配了给了VG,那么在LV中的PE就叫做LE,叫做逻辑盘区。
我们一定要注意删除PV有很多注意的地方。
对于VG或者LG来讲,他的每一个设备文件是在:
/dev/dm-#
/dev/mapper/VG_NAME-LV_NAME //设备文件的名字
例如:
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
创建物理卷:
物理卷可以创建在,磁盘上,分区上,RAID上
创建物理卷:
第一步:先创建分区,然后将分区的类型转化为“8e”;
第二步:使用创建物理卷的命令,我们在命令行上输入“pv”,然后双击“Tab”键, 就显示全部的与物理卷有关的命令
[[email protected]~]# pv
pvchange pvcreate pvmove pvresize pvscan
pvck pvdisplay pvremove pvs pv.sh
PV管理工具:
pvdisplay:显示物理卷详细信息 //单独执行会显示所有PV,也可以显示指定PV
pvremove:删除物理卷
pvmove:pv上的pe移动
pvscan:物理卷扫描
pvck:物理卷检测
pvs:简要显示PV格式
pvcreate /dev/DEVICE:物理卷创建(可以一块写多个分区一起创建物理卷)
-v:显示创建过程
-f:强制创建物理卷,如果分区中有数据,则就强制覆盖。
-u:手动指定UUID
VG管理命令:
vgs:
vgdisplay:
vgcreate 物理卷
-s #:指定PE大小,#表示单位。[mMgGtT]
vgextend 卷组名 物理卷(一次可以有多个)
vgremove
vgreduce 物理卷
移除之前先做vgmove移动PV上的数据到同一个卷组的PV上去。
LV管理工具:
lvcreate:创建
-L #[mMgGtT] -n 逻辑卷名 卷组名
注意:我们创建逻辑卷大小时,有时候不一定就一定能做到要10G,就创建10G, 这取决于我们的卷组上的PE大小。
lvdisplay:显示
lvs:简要显示
lvextend:扩展
lvreduce:缩减
lvremove:删除
lvresize:改变大小
lvconf:设置lv的配置文件
创建完成逻辑卷后,我们需要再进行格式化逻辑卷才能使用:
mke2fs -t ext4 -b 1024 -L 卷标名 /dev/卷组名/逻辑卷名
然后我们创建一个目录,然后就可以将上面的格式化的分区挂载使用了。
mkdir /bacup
mount /dev/卷组名/逻辑卷名 /backup
ls -l /back //如果现实一个“lost+fount”文件,表示成功,任何一个新的文 件系统创建都有一个新的lost+found文件。
扩展逻辑卷:
逻辑卷支持在线扩展容量
(1)lvextend -L [+]#[mMgGtT] /dev/卷组名/逻辑卷名
(2)resize2fs /dev/卷组名/逻辑卷名
缩减逻辑卷:
(1)umount /dev/卷组名/逻辑卷名
(2)e2fsck -f /dev/卷组名/逻辑卷名
(3)resize2fs /dev/卷组名/逻辑卷名 #[ mMgGtT]
(4)lvreduce -L [-]#[mMgGtT] /dev/卷组名/逻辑卷名
(5)mount /dev/卷组名/逻辑卷名 挂载点
(6)df -lh /dev/卷组名/逻辑卷名 //查看缩减后的大小
btrfs文件系统本身就支持逻辑卷
快照:snapshot
对数据或者对一个文件系统做快照,就相当于把这个文件系统在过去某一时刻的状态迅速扫描一遍,也就是说,假设有一个磁盘分区,我们现在要对这个分区做快照,也就是瞬间完成这个磁盘上数据的状态。快照的特点就是瞬间完成。那么这个瞬间完成到底体现在什么地方?其实在备份时特别有用,因为快照很快,但是备份很慢,比方说现在我们需要将这个磁盘上的数据备份一份出来,也就是将磁盘上的数据复制一份出来,那么拷贝的速度就会很慢,拷贝的时候是将磁盘上的数据抽象成数据流,之所以转成数据流是因为我们的数据从一块磁盘上传输到另一块磁盘上是通过线缆传输的。而线缆所能承载的都是“0101”代码。也就是说的数据流,而这个过程我们称之为序列化的过程。任何数据都必须被序列化才能存到磁盘上。
举例说明:
比方说我们现在的教室有一张桌子,要将其送往上海去,那怎样运送呢?假如我们现在有一个水管,那怎样运呢?我们将桌子打碎成碎屑,这就是序列化的过程,把一个本来有形状的,有组织格式的数据转化成流式化传输的机制就叫做序列化但是序列化以后最重要的是我们还能将其还原回来才行,本来数据是在内存中存放,我为了将其保存在磁盘上,于是就将其序列化了,现在再回内存后发现碎了,那问题是我们接下来怎样将其还原回来呢,这就特别困难了,但不管怎样讲,我们要知道这就是一个序列化的过程而已。那么既然是序列化,那么就有可能有的数据已经到了上海了,但是仍然有一部分数据还在北京。那么我们的文件复制也是有这样的情况的,所以我们复制着前面的数据,后面的数据还在准备着,所以这样的备份速度太慢,尤其是在文件很大,假设文件是1T的话,复制半个小时是很常见的,那么复制半个小时后面的文件已经发生变化是很有可能出现的。那我们就必须解决这个问题。那么就要解决这种问题,我们复制过程中数据不能发生改变,也就是意味着我们复制数据在一个时间点。那我们应该怎样做这个功能?
这就是快照的意义,快照其实就是本来是一个逻辑卷我现在立马给他照几张照片放在另一个位置,我们知道每一个文件系统上的数据都分为数据和元数据,我们做快照就是在某一刻创建这个文件系统的元数据的监视器,我们随时监控着对方的元数据,而目标这个卷快照是通过快照卷来实现的,快照卷也是一个逻辑卷,这个卷在刚创建之初是没有任何信息的。一旦创建了快照卷就意味着,我们创建的监视器监视着对方的元数据,我们通过挂载点可以访问他的元数据,如果我们把快照卷也挂载了,那么我们通过快照卷也能访问到磁盘中的元数据,快照卷其实是指向访问另一个卷的访问路径而已。但是它不仅仅是一个路径,就想我们以前讲到的硬链接一样,他们指向同一段存储空间,只不过我们明确起名叫他为快照卷。并且他看起来像一个独立的卷一样,但是他本身没有存任何文件但是一旦你挂载,你发现他的文件都在,只是他引用的是原卷上的文件,所以我们说他是访问原逻辑卷上的文件的另一条路径。
但是如果原卷上的文件发生变化了,那么我们知道我们的快照卷也是指向这个原卷的文件的,所以访问快照卷时,我们也会看到文件发生了变化。我们要想办法避免这种情况发生,刚才我们说了,我们有一个监视器监视着对方的元数据,那么任何数据发生变化了,那么这些数据的元数据首先是变化的,所以任何时刻有些数据发生变化了,通过监控监控到时,先把这个要变化的文件复制一份到快照卷上,这样以后查找没有发生变化的文件时,我们就到原卷上查找,如果查找发生变化的文件我们就去快照卷上查找本地存放的副本。这就是快照卷的基本工作机制,快照卷的大小要看我们打算让快照卷存在多长时间,存在时监控的元数据有多大。
比如我们想让快照卷只存在2个小时,因为我们只需要两个小时就将数据复制完了,那么2个小时内元数据大概会发生2G的变化,那么我们创建5G的快照卷,那么这样就够用了。
快照卷与原卷必须要在一个卷组中,所以我们在创建快照卷时,我们要确保我们的卷组有足够的空间可用。快照卷一定是现有某个卷的快照。所以他要针对现有的某个卷来创建。
创建快照卷:
因为快照卷也是逻辑卷,所以我们通过“man lvcreate”来查看快照卷的格式
lvcreate [-l|--extentsLogicalExtentsNumber[%{FREE|ORIGIN|PVS|VG}] |
-L|--size LogicalVolumeSize] [-c|--chunksize ChunkSize]
[--commandprofile ProfileName] [--noudevsync] [--ignoremonitoring]
[--metadataprofile ProfileName] [--monitor {y|n}] [-n|--name Snapshot-
LogicalVolume] -s|--snapshot|-H|--cache
{[VolumeGroup/]OriginalLogicalVolume [-V|--virtualsize VirtualSize]}
选项:
-s:指明原卷
-n:自己设定快照卷的名称
-L:指明快照卷的大小
-p:(小写)指明快照卷的读写;快照卷主要是用来读的,所以快照卷用来只读的。
标准命令:
lvcreate -L #[mMgGtT] -p r -s -n 快照卷的名字 原卷的名字
演示对某一个原卷创建快照卷
对ourlv逻辑卷创建快照
[[email protected]entos6 ~]# lvcreate -L 512M -p r -s -n ourlv-snapshot/dev/ourvg/ourlv
Logical volume "ourlv-snapshot" created.
[[email protected] ~]#
[[email protected] ~]# mount /dev/ourvg/ourlv-snapshot /mnt
mount: block device/dev/mapper/ourvg-ourlv--snapshot is write-protected, mounting read-only
[[email protected] ~]# cd /mnt
[[email protected] mnt]# ls
grub.conf issue lost+found
[[email protected] mnt]# cat issue //这是查看快照文件
CentOS release 6.8 (Final)
Kernel \r on an \m
[[email protected] ~]# cd /testdir/backup/ //切换到原卷中的文件
[[email protected] backup]# ls
grub.conf issue lost+found
[[email protected] backup]# vim issue //并在源文件中加上一个新内容
[[email protected] backup]# cat issue
CentOS release 6.8 (Final)
Kernel \r on an \m
newLine.
[[email protected] backup]#
[[email protected] mnt]# cat issue //但是我们在快照文件中没有显示。
CentOS release 6.8 (Final)
Kernel \r on an \m
[[email protected] mnt]#
[[email protected] mnt]# cp /etc/rc.d/init.d/functions /testdir/backup/ //向原文件中复制一个 新文件
[[email protected] mnt]# cd /testdir/backup/
[[email protected] backup]# ls //原卷中存在新复制的文件
functions grub.conf issue lost+found
[[email protected] backup]# ls /mnt //但是查看快照卷中没有新文件,因为快照卷是复制原 来做快照那一刻的文件。
grub.conf issue lost+found
[[email protected] backup]#
[[email protected] backup]# cp -a /mnt/{grub.conf,issue} /tmp/ //这时候我们就可以开复 制我们原本要想复制的文件了, 因为这个卷中的文件是不会变化的。
[[email protected] backup]# cd
[[email protected] ~]# umount /mnt //复制完文件后,快照卷没有用了,我们将其删除,删 除逻辑卷要先卸载。
[[email protected] ~]# lvremove /dev/ourvg/ourlv-snapshot //删除卷组
Do you really want to remove active logicalvolume ourlv-snapshot? [y/n]: y
Logical volume "ourlv-snapshot" successfully removed
[[email protected] ~]#
演示:将逻辑卷删除一直到恢复硬盘分区:
ourlv ourvg -wi-ao---- 3.00g
[[email protected] ~]# mount
/dev/mapper/ourvg-ourlv on /testdir/backuptype ext4 (rw)
[[email protected] ~]# umount /testdir/backup/
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ourlv ourvg -wi-a----- 3.00g
[[email protected] ~]# lvremove /dev/ourvg/ourlv //一定要记住删除逻辑卷要写全“/dev/卷组 名/逻辑卷名”
Do you really want to remove active logicalvolume ourlv? [y/n]: y
Logical volume "ourlv" successfully removed
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
ourvg 2 0 0wz--n- 8.01g 8.01g
[[email protected] ~]# vgremove /dev/ourvg
Volume group "ourvg" successfully removed
[[email protected] ~]# fdisk -l /dev/sdc //查看那几各分区做成了物理卷
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x9d28685f
Device Boot Start End Blocks Id System
/dev/sdc1 1 523 4200966 83 Linux
/dev/sdc2 524 1046 4200997+ 8e Linux LVM
/dev/sdc3 1047 2610 12562830 5 Extended
/dev/sdc5 1047 1569 4200966 8e Linux LVM
[[email protected] ~]# pvremove /dev/sdc2
Labelson physical volume "/dev/sdc2" successfully wiped
[[email protected] ~]# pvremove /dev/sdc5
Labels on physical volume "/dev/sdc5" successfully wiped
[[email protected]~]#
演示:
(1)创建物理卷:
a.创建物理卷首先创建分区,并将要创建成物理卷的分区类型转化为8e
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x9d28685f
Device Boot Start End Blocks Id System
/dev/sdc1 1 523 4200966 83 Linux
/dev/sdc2 524 1046 4200997+ 8e Linux LVM
/dev/sdc3 1047 2610 12562830 5 Extended
/dev/sdc5 1047 1569 4200966 8e Linux LVM
b.创建物理卷
[[email protected] ~]# pvcreate /dev/sdc2 /dev/sdc5
[[email protected] ~]# pvs /dev/sdc2 /dev/sdc5 //简要显示PV
PV VG Fmt Attr PSize PFree
/dev/sdc2 lvm2 ---- 4.01g4.01g
/dev/sdc5 lvm2 ---- 4.01g4.01g
[[email protected] ~]# pvdisplay /dev/sdc2 /dev/sdc5 //显示更为详细的PV信息,pvdisplay 单独执行时会显示所有的PV,后面 也可以跟PV名称,也就是分区的名 称,这就代表显示特定的PV。
"/dev/sdc2" is a new physical volume of "4.01 GiB"
---NEW Physical volume ---
PVName /dev/sdc2
VGName //还没有创建卷组所以这里还没有从属的卷组
PVSize 4.01 GiB //PV大小
Allocatable NO //不可分配,因为他还没有加入到卷组中
PESize 0 //由于还没有创建卷组,所以PE大小还没有
Total PE 0
Free PE 0
Allocated PE 0 //已经分配的PE数
PVUUID VzUCFz-9432-QfU4-Gfmt-Dk8m-nt0c-kj0G14 //PV自己的UUID
"/dev/sdc5" is a new physical volume of "4.01 GiB"
---NEW Physical volume ---
PVName /dev/sdc5
VGName
PVSize 4.01 GiB
Allocatable NO
PESize 0
Total PE 0
Free PE 0
Allocated PE 0
PVUUID 1fW6MV-cOsb-9r41-c4l3-jmDb-Apvf-iiK4Jd
c.删除物理卷
[[email protected] ~]# pvremove /dev/sdc2
Labels on physical volume "/dev/sdc2" successfully wiped
[[email protected] ~]#
(2)创建卷组:
a.创建卷组:
[[email protected] ~]# vgcreate ourvg /dev/sdc2/dev/sdc5
Volume group "ourvg" successfully created
[[email protected] ~]#
[[email protected] ~]# vgdisplay ourvg //查看创建的卷组
---Volume group ---
VGName ourvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VGAccess read/write
VGStatus resizable
MAXLV 0
CurLV 0
Open LV 0
MaxPV 0
CurPV 2
ActPV 2
VGSize 8.01 GiB //卷组总的大小
PESize 4.00 MiB //PE大小默认就是4M,这个一旦确定就不能改变了,
Total PE 2050
Alloc PE / Size 0 / 0
Free PE / Size 2050 / 8.01 GiB
VGUUID TvVCzT-UfzG-l3aT-ABJ3-J5yy-qGe2-kspFiS
[[email protected] ~]#
[[email protected] ~]# pvdisplay /dev/sdc2 //创建卷组完成后,再次查看物理卷
---Physical volume ---
PVName /dev/sdc2
VGName ourvg
PVSize 4.01 GiB / not usable2.54 MiB
Allocatable yes
PESize 4.00 MiB
Total PE 1025
Free PE 1025
Allocated PE 0
PVUUID Gv6hNB-aOaC-JRMg-IvIS-FvQL-8bIR-nsQoYa
[[email protected] ~]#
[[email protected] ~]# vgextend ourvg /dev/sdc1 //扩展卷组
Volume group "ourvg" successfully extended
[[email protected] ~]# vgs ourvg
VG #PV #LV #SN Attr VSize VFree
ourvg 3 0 0wz--n- 12.01g 12.01g //现在成了12G,添加成功
[[email protected] ~]#
[[email protected] ~]# pvmove /dev/sdc1 //在从卷组中移除一个物理卷时,我们应该先执行 pvmove这个命令,将pv中的数据移出这个PV, 然后在删除PV
Nodata to move for ourvg
[[email protected] ~]# vgreduce ourvg /dev/sdc1 //从卷组ourvg中删除PV
Removed "/dev/sdc1" from volume group "ourvg"
[[email protected] ~]# vgs ourvg //删除成功。
VG #PV #LV #SN Attr VSize VFree
ourvg 2 0 0wz--n- 8.01g 8.01g
[[email protected] ~]#
(3)创建逻辑卷
[[email protected] ~]# lvcreate -L 3G -n ourlv ourvg
Logical volume "ourlv" created.
[[email protected] ~]# ls /dev/mapper //查看已经创建好设备文件
control myvg-mylv ourvg-ourlv
[[email protected] ~]#
创建好逻辑卷后,我们就可以跟分区那样进行格式化然后挂载使用了。
(4)格式化逻辑卷,创建目录,并挂载使用
[[email protected] ~]# mke2fs -t ext4 -b 1024 -L OURLV /dev/ourvg/ourlv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=OURLV
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 3145728 blocks
157286 blocks (5.00%) reserved for thesuper user
First data block=1
Maximum filesystem blocks=70254592
384 block groups
8192 blocks per group, 8192 fragments pergroup
512 inodes per group
Superblock backups stored on blocks:
8193,24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001,1990657, 2809857
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accountinginformation: done
This filesystem will be automaticallychecked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[[email protected] ~]# mkdir -p /testdir/backup
[[email protected] ~]# ls -l /testdir/backup/
total 0
[[email protected]]# mount/dev/ourvg/ourlv /testdir/backup/
[[email protected] backup]# ls -l /testdir/backup/
total 12
drwx------. 2 root root 12288 Nov 14 17:49 lost+found
[[email protected] backup]#
[[email protected] backup]# mount //使用mount命令我们也能看到格式化的逻辑卷挂载 到了那个目录下
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts(rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda3 on /testdir type ext4 (rw)
none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fusetype fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon(rw,nosuid,nodev)
/dev/sr0 on /media/CentOS_6.8_Final typeiso9660(ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
/dev/mapper/ourvg-ourlvon /testdir/backup type ext4 (rw)
[[email protected] backup]#
(5)向这个文件中复制文件:
[[email protected] backup]# cd /testdir/backup/
[[email protected] backup]# cp /etc/issue ./
[[email protected] backup]# cp /etc/grub.conf ./
[[email protected] backup]# ls
grub.conf issue lost+found
[[email protected] backup]# cat issue
CentOS release 6.8 (Final)
Kernel \r on an \m
[[email protected] backup]#
综上我们就可以完成逻辑卷的创建了。
演示扩展逻辑卷:
[[email protected] backup]# lvextend -L +2g /dev/ourvg/ourlv
Size of logical volume ourvg/ourlv changed from 3.00 GiB (768 extents)to 5.00 GiB (1280 extents).
Logical volume ourlv successfully resized.
[[email protected] backup]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G 4.5G 42G 10% /
tmpfs 932M 76K 932M 1% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
/dev/sda3 20G 44M 19G 1% /testdir
/dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final
/dev/mapper/ourvg-ourlv
3.0G 3.3M 2.8G 1% /testdir/backup
[[email protected] backup]# umount /dev/ourvg/ourlv //卸载失败,是因为用户还在这个挂 载目录中,所以需要先退出这个挂载 目录,然后再卸载
umount: /testdir/backup: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[[email protected]]# cd
[[email protected] ~]# umount /testdir/backup/
[[email protected]~]# mount /dev/ourvg/ourlv/testdir/backup/
[[email protected] ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G 4.5G 42G 10% /
tmpfs 932M 76K 932M 1% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
/dev/sda3 20G 44M 19G 1% /testdir
/dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final
/dev/mapper/ourvg-ourlv
3.0G 3.3M 2.8G 1% /testdir/backup
[[email protected] ~]#
我们发现重新挂载后,这个逻辑卷大小仍然是原来的大小,这其实并不是表示我们的逻辑卷扩展没有成功,因为对于整个逻辑卷来讲,他其实创建完成以后,这是他的物理空间决定的,因为我们创建逻辑分区后,我们又在上面创建了文件系统,那我们扩展的是仅是物理上的空间,我们还没有扩展文件系统的空间,所以我们再次扩展文件系统,我们不用重新挂载文件系统,我们使用resize2fs命令,这只适用于ext系列的文件系统
[[email protected] ~]# resize2fs /dev/ourvg/ourlv //没有指明扩展大小,表示重新修改整个分区大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/ourvg/ourlv is mountedon /testdir/backup; on-line resizing required
old desc_blocks = 12, new_desc_blocks = 20
Performing an on-line resize of/dev/ourvg/ourlv to 5242880 (1k) blocks.
The filesystem on /dev/ourvg/ourlv is now5242880 blocks long.
[[email protected] ~]#
[[email protected] ~]# df -lh //表示我们不需要卸载,我们只需修改他的分区的逻辑边界即可
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G 4.5G 42G 10% /
tmpfs 932M 76K 932M 1% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
/dev/sda3 20G 44M 19G 1% /testdir
/dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final
/dev/mapper/ourvg-ourlv
4.9G 3.5M 4.7G 1% /testdir/backup
[[email protected] ~]#
演示缩减逻辑卷:
缩减逻辑卷与扩展逻辑卷正好相反,我们先所缩减文件系统,然后我们再缩减外部的物理逻辑卷空间。
(1)要缩减文件系统就必须先卸载
[[email protected]~]# umount /dev/ourvg/ourlv //因为缩减是不能联机进行的, 否则出错的可能性非常大,所以 我们不建议去缩减文件系统
[[email protected]~]#
(2)卸载完成后,我们强制进行文件系统检测和修复
[[email protected]~]# e2fsck -f /dev/ourvg/ourlv
e2fsck1.41.12 (17-May-2010)
Pass1: Checking inodes, blocks, and sizes
Pass2: Checking directory structure
Pass3: Checking directory connectivity
Pass4: Checking reference counts
Pass5: Checking group summary information
OURLV:13/327680 files (0.0% non-contiguous), 119751/5242880 blocks
[[email protected]~]#
(3)缩减逻辑变界,注意我们再缩减逻辑边界时我们要指明缩减至多大,缩减的空间要大于里面所存储的文件大小
[[email protected]~]# resize2fs /dev/ourvg/ourlv3G
resize2fs1.41.12 (17-May-2010)
Resizingthe filesystem on /dev/ourvg/ourlv to 3145728 (1k) blocks.
Thefilesystem on /dev/ourvg/ourlv is now 3145728 blocks long.
[[email protected]~]#
(4)然后再缩减物理逻辑卷的大小,我们在指定大小的时候。我们可以使用减多少,我们也可以直接写数字,后不加单位。带减号表示将空间减少多少,不带减号表示将空间降到多大。
[[email protected] ~]# lvreduce -L 3G /dev/ourvg/ourlv
WARNING: Reducing active logical volume to 3.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce ourvg/ourlv?[y/n]: y
Size of logical volume ourvg/ourlv changed from 5.00 GiB (1280 extents)to 3.00 GiB (768 extents).
Logical volume ourlv successfully resized.
[[email protected] ~]#
(5)然后重新挂载缩减后的逻辑卷
[[email protected] ~]# mount /dev/ourvg/ourlv /testdir/backup/
[[email protected] ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G 4.5G 42G 10% /
tmpfs 932M 76K 932M 1% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
/dev/sda3 20G 44M 19G 1% /testdir
/dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final
/dev/mapper/ourvg-ourlv
3.0G 3.3M 2.8G 1% /testdir/backup
[[email protected] ~]#
[[email protected] ~]# cd /testdir/backup/
[[email protected] backup]# ls
grub.conf issue lost+found
[[email protected] backup]# cat issue //所有的 文件都能正常访问
CentOS release 6.8 (Final)
Kernel \r on an \m
[[email protected] backup]# cat grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grubafter making changes to this file
# NOTICE: You have a /boot partition. Thismeans that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64)
root(hd0,0)
kernel/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=2ead7599-15b0-4b11-b96d-5f9b59e2e7ebrd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16crashkernel=128M KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quiet
initrd/initramfs-2.6.32-642.el6.x86_64.img
[[email protected] backup]#
练习题:(分别实现以下步骤)
1.创建一个至少有两个PV组成的大小为20G的名为tesetvg的VG,要求PE大小为16MB,而后在卷组创建大小为5G的逻辑卷testlv;挂载至/users目录;
2.新建用户arclinux,要求其家目录为/users/arclinux,而后su切换至arclinux用户,复制/etc/pam.d目录至自己的家目录;
3.扩展testlv至7G,要求arclinux用户的文件不能丢失;
4.收缩testlv至3G,要求arclinux用户的文件不能丢失;
5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能;
文件系统挂载使用:
挂载光盘设备:
光盘设备文件:路径:
IDE接口:/dev/hdc
SATA接口:/dev/sr0
符号连接文件:
/dev/cdrom
/dev/cdrrw
/dev/dvd
/dev/dvdrw
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
挂载U盘时,先把U盘插到主机上,如果用虚拟机也可以测试:
他就能识别出U盘,然后这个时候我们使用命令fdisk -l 来列出设备。
如果是fat32文件系统进行挂载一点问题没有,但是如果是ntfs的话很可能我们的centos6和7的内核是无法识别的。
dd命令:
实现文件底层复制的工具。
dd不像cp那样通过文件系统接口复制的,而是通过块接口复制的。
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
这个命令还有个特点就是还可以在复制的时候不需要复制全部,还能够复制指定的字节数
bs=#:复制单元大小,bs默认单位为字节
count=#:复制多少个bs
由于dd命令很底层所以他的效率比cp要高。
举例:
dd if=/etc/fstab of=/tmp/fstab bs=1 count=100
等同于:
dd if=/etc/fstab of=/tmp/fstab bs=100 count=1
磁盘复制:
dd if=/dev/sda of=/dev/sdb
备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
还有一种用法:
dd if=/dev/zero of=/dev/sda bs=512 count=1 //这表示破坏磁盘分区表,可 以使用这种方法快速清空一个磁盘上的分区, 但是操作有风险
破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=256 count=1 //这表示清空磁盘上的 bootloader,但是磁盘分区表还有。
/dev/zero被称为泡泡机
linux上有两个特殊设备:
/dev/null:数据黑洞;
/dev/zero:吐零机;