高级文件系统管理2

逻辑卷管理器(LVM),允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小。允许在多个物理设备间重新组织文件系统。其步骤大体如下:将设备指定为物理卷,用一个或者多个物理卷来创建一个卷组,物理卷你是用固定大小的物理区域(PE)来定义的,在物理卷上创建的逻辑卷是由物理区域组成,可以在逻辑卷上创建文件系统。

一、知识整理

1、LVM设备名:dm-#

软链接:/dev/mapper/VG_NAME-LV_NAME

/dev/mapper/vol0-root

/dev/VG_NAME/LV_NAME

/dev/vol0/root

2、结构简图:

blob.png

1、逻辑卷管理器快照:快照是特殊的逻辑卷,他是在生成快照时存在的逻辑卷的准确拷贝。快照只有在它们和原来的逻辑卷不同时才会消耗空间。

在生成快照时会分配给他一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间。当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。快照中只含有原来的逻辑卷更改的数据或者自生成快照后的快照中更改的数据。建立快照的卷大小只需要原始逻辑卷的百分之十五到二十就够了。也可以使用lvextend放大快照。

由于快照区与原本的LV公用很多PE的区块,因此快照区与被快照的LV必须要在同一个VG上,系统恢复的时候的文件数量不能高于快照区的实际容量。创建快照使用指定只读特性避免操作错误,在快照内查看到的文件,若其没有改变,则实则为lv中的原文件,相当于软链接,但并不是软链接,若发生改变,则为改变时刻之前的原文件,快照只备份创建当时的状态,快照可以有多个。基于COWcopy on write)写时复制更新机制。

2、btrfs技术预览版:(B-tree,Butter FSBetter FSGPLOracle2007

多物理卷支持: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 showblkid

挂载文件系统: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

转化ext4btrfs

btrfs-convert /devsdd1

btrfs fikesystem show

转化btrfsext4

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