高级文件系统管理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

(0)
上一篇 2016-09-13 11:17
下一篇 2016-09-13 11:17

相关推荐

  • Linux系统修复

    在boot里面我们可以根据自己的需求去设置一些启动选项,我们今天来了解一下Linux启动流程,以及boot下的选项。       加载BIOS的硬件信息,获取第一个启动设备。 读取第一个启动设备MBR的引导加载程序(grub)的启动信息 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备。 核型执行init程序…

    Linux干货 2016-09-13
  • vim基本总结

    ASCII可以将计算机存储的0或1转成我们认识的文字。在Linux中,绝大部分的配置文件都是以ASCII的纯文本形态存在。通过文本编辑器,可以实现对这些文本文件的更改。常风的文本编辑器有emacs, pico,nano,joe与vi(vim是vi的升级版)等。那么为会么要学vi呢? l 因为vi是内置编辑器,系统安装好就有了 l 很多软件…

    2017-08-05
  • linux用户与组管理

    一、linux用户与组管理的基本介绍 1、任何一个用户想要使用Linux系统都要向管理员申请一个账号,对这些账号的管理即是对用户的管理,所谓组,就是多个账号的集合。用户和组管理可以提高用户的管理效率、工作效率以及系统的安全性,比如将同一个部门的成员放在一个组里并设置权限,这样可有效的对资源共享,同时可以避免其他部门的人恶意破坏。 2、用户和组的管理内容一般有…

    Linux干货 2016-08-02
  • 重构-改善既有代码的设计:重构原则(二)

    1.什么是重构 重构(Refactoring):在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造,对代码内部的结构进行优化。 2.为何重构   1)改进软件设计(整理代码) 重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解…

    Linux干货 2015-04-07
  • 文本处理(1)

    文本处理工具最全整理上半部

    Linux干货 2018-03-15
  • ngx_http_proxy_module

    ngx_http_proxy_module 1.proxy_pass Syntax: proxy_pass URL; Context: location, if in location, limit_except 这条指令将来是用的相当多的指令。 v  附加1:proxy_pass后面的路径不带uri时,其会将loca…

    2016-10-30