逻辑卷管理器(LVM),允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小。允许在多个物理设备间重新组织文件系统。其步骤大体如下:将设备指定为物理卷,用一个或者多个物理卷来创建一个卷组,物理卷你是用固定大小的物理区域(PE)来定义的,在物理卷上创建的逻辑卷是由物理区域组成,可以在逻辑卷上创建文件系统。
一、知识整理
1、LVM设备名:dm-#。
软链接:/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
2、结构简图:
1、逻辑卷管理器快照:快照是特殊的逻辑卷,他是在生成快照时存在的逻辑卷的准确拷贝。快照只有在它们和原来的逻辑卷不同时才会消耗空间。
在生成快照时会分配给他一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间。当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。快照中只含有原来的逻辑卷更改的数据或者自生成快照后的快照中更改的数据。建立快照的卷大小只需要原始逻辑卷的百分之十五到二十就够了。也可以使用lvextend放大快照。
由于快照区与原本的LV公用很多PE的区块,因此快照区与被快照的LV必须要在同一个VG上,系统恢复的时候的文件数量不能高于快照区的实际容量。创建快照使用指定只读特性避免操作错误,在快照内查看到的文件,若其没有改变,则实则为lv中的原文件,相当于软链接,但并不是软链接,若发生改变,则为改变时刻之前的原文件,快照只备份创建当时的状态,快照可以有多个。基于COW(copy on write)写时复制更新机制。
2、btrfs技术预览版:(B-tree,Butter FS,Better FS)GPL,Oracle,2007
多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID以及联机“添加”、“移除”、“修改”。
写时复制更新机制:复制更新及替换指针,而非就地更新。
数据及元数据校验码:checksum
子卷:sub_volume
快照:支持快照的快照
透明压缩。
二、命令详解及事例
1、PV管理工具:
pvs 简要pv信息
pvdisplay 详细pv信息
pvcreate /dev/DEVICE 创建pv
pvck pv 检测物理卷LVM元数据的一致性
-d 调试模式
-v 详细信息模式
–labelsector 指定LVE卷标所在扇区,默认情况下物理卷前四个扇区保存着LVM卷标,可以使用该选项指定其他位置。
pvmove 将pv数据移动到其他pv
pvremove 将pv删除
2、VG管理工具:
vgs 简要vg信息
vgdisplay 详细vg信息
vgcreate 创建vg
vgcreate 名称 -s #(chunk大小) 路径
vgextended 扩展vg
vgreduce 缩减vg,在此命令之前先做pvmove
pvmove向下传递,指定当前vg中的空闲逻辑卷,若无空间则无法移动。
vgremove 删除卷组,在此命令之前先做pvmove
3、LV管理工具:
lvs 简要lv信息
lvdisplay 详细lv信息
lvcreate 创建逻辑卷
lvcreate -L #(大小) -n NAME VG
lvremove /dev/VG_NAME/LV_NAME
重设文件系统大小
fsadm [] resize device [new_size[BKMG..]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
4、扩展逻辑卷:
lvextend -L [+]# /dev/VG_NAME/LV_NAME
resize2fs /dev/myvg/mylv 同步文件系统,只适合ext格式文件系统,扩展逻辑卷的时候使用。扩展xfs格式文件系统的命令为xfs_growfs。
df -lh查看大小变化
扩展逻辑卷使用lvextend -r -l +100%FREE /dev/vg0/lv0不需要resize2fs
小写l为百分比或PE的个数,大写为数值
缩减逻辑卷:缩减必须先取消挂载;
umount /dev/VG_NAME/LV_NAME
e2fsck -f /VG_NAME/LV_NAME
resize2fs /VG_NAME/LV_NAME 缩减文件系统
lvreduce -L [-]# /VG_NAME/LV_NAME 缩减逻辑卷
mount
5、逻辑卷管理器快照
为现有逻辑卷创建快照:lvcreate -L # -s -n (指明名字)snap-data -p r (只读) /dev/vg1/data
挂载快照:mkdir -p /mnt/snap
mount -o ro /dev/vg1/snap-data /mnt/snap
删除快照umount /mnt/databackup
lvremove /dev/vg0/databackup
6、btrfs文件系统:
mkfs.btrfs
-L “LABEL”
-d TYPE :raid0,raid1,raid5,raid6,raid10,single
-m PROFILE:raid0,raid1,raid5,raid6,raid10,single,dup
-O FEATURE
-o list-all:列出支持的所有feature
mkfs.btrfs -L mydata -f /dev/sdb /dev/sdc
属性查看:btrfs filesystem show;blkid
挂载文件系统:mount -t btrfs /dev/sdb MOUNT_POINT
透明压缩机制:mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
在线修改文件系统大小:
btrfs filesystem resize -10G /mydata
btrfs filesystem resize +5G /mydata
btrfs filesystem resize max /mydata
查看:btrfs filesystem df /mydata
添加设备:btrfs devic add /dev/sdd /mydata
平衡数据:btrfs balance status /mydata显示平衡过程
btrfs balance start /
btrfs balance pause /
btrfs balance cancel /
btrfs balance resume /
删除设备:btrfs device delete /dev/sdb /mydata
修改raid的级别:注意raid对成员数量的要求
btrfs balance start -mconvert=raid1|0|5 /mydata 元数据组成
btrfs balance start -dconvert=raid1|0|5 /mydata 数据组成
btrfs子卷管理:
btrfs subvolume list /mydata
btrfs subvolume create /mydata/subv1
umount /mydata
moun -o subvo1=subv1 /dev/sdd /mnt/subv1
btrfs subvolume show /mnt/subv1
mount /dev/sdb /mydata 挂父卷,子卷自动挂载
mount -o subvolid=### /dev/sdd /mnt/subv1
btrfs subvolume show /mnt/subv1
btrfs subvolume delete /mydata/subv1
创建快照:btrfs subvolume snapshot /mydata/subv1 /mydata/snapshot_subv1
btrfs subvolume list /mydata
删除快照:
btrfs subvolume delete /mydata/snapshot_subv1
对一个文件做快照(当前卷):
cd /mydata/subv1
cp –reflink testfile snapshot_testfile
转化ext4为btrfs
btrfs-convert /devsdd1
btrfs fikesystem show
转化btrfs为ext4
umount
btrfs-convert -r /dev/sdd1 回滚-r
二、课后练习
1、
[root@localhost ~]# pvcreate /dev/sdc1 WARNING: ext4 signature detected on /dev/sdc1 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/sdc1. Physical volume "/dev/sdc1" successfully created [root@localhost ~]# pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created [root@localhost ~]# vgcreate -s 16M vg1 /dev/sdc{1,2} Volume group "vg0" successfully created [root@localhost ~]# cd / [root@localhost /]# mkdir users [root@localhost /]# useradd -d /users/archlinux archlinux [root@localhost users]# lvcreate -n testlv -L 5G /dev/vg1 Logical volume "testlv" created. [root@localhost users]# mke2fs -t ext4 /dev/vg1/testlv mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: mo^H完成 [root@localhost users]# mount /dev/vg1/testlv /users/ [root@localhost users]# lvextend -L +2G /dev/vg1/testlv Size of logical volume vg1/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). Logical volume testlv successfully resized. [root@localhost users]# umount /users/ [root@localhost users]# resize2fs /dev/vg1/testlv 3G resize2fs 1.42.9 (28-Dec-2013) 请先运行 'e2fsck -f /dev/vg1/testlv'. [root@localhost users]# e2fsck -f /dev/vg1/testlv e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/vg1/testlv: 11/327680 files (0.0% non-contiguous), 58462/1310720 blocks [root@localhost users]# resize2fs /dev/vg1/testlv 3G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg1/testlv to 786432 (4k) blocks. The filesystem on /dev/vg1/testlv is now 786432 blocks long. [root@localhost users]# lvreduce -L 3G /dev/vg1/testlv WARNING: Reducing active logical volume to 3.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce testlv? [y/n]: y Size of logical volume vg1/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testlv successfully resized. [root@localhost users]# mount /dev/vg1/testlv /users/ [root@localhost users]# lvcreate -p r -L 200M -n snap1 -s /dev/vg1/testlv Rounding up size to full physical extent 208.00 MiB Logical volume "snap1" created. [root@localhost users]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 300M 0 part /boot ├─sda2 8:2 0 20.5G 0 part │ ├─centos-root 253:0 0 9.3G 0 lvm / │ ├─centos-swap 253:1 0 1.9G 0 lvm [SWAP] │ └─centos-var 253:2 0 9.3G 0 lvm /var └─sda3 8:3 0 10G 0 part /testdir sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 5G 0 part /mydata ├─sdb2 8:18 0 5G 0 part └─sdb3 8:19 0 5G 0 part sdc 8:32 0 20G 0 disk ├─sdc1 8:33 0 10G 0 part │ ├─vg1-testlv-real 253:4 0 3G 0 lvm │ │ ├─vg1-testlv 253:3 0 3G 0 lvm /users │ │ └─vg1-snap1 253:6 0 3G 1 lvm │ └─vg1-snap1-cow 253:5 0 208M 1 lvm │ └─vg1-snap1 253:6 0 3G 1 lvm └─sdc2 8:34 0 10G 0 part sdd 8:48 0 20G 0 disk sr0 11:0 1 7.2G 0 rom /media/cdrom
原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/45649