LVM的管理和使用

LVM的管理和使用

## 一、什么是LVM
LVM2(Logical Volume Manager, Version:2),逻辑卷管理器,是使用的是Linux系统内核中的dm(Device Mapper)模块(能够将一个或多个底层块设备组织成一个逻辑设备的模块)驱动的。

## 二、LVM的组成

![LVM逻辑关系图.png](http://upload-images.jianshu.io/upload_images/7430414-2b965d5f386f7f4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
1. PV(Physical Volume)
物理卷,我们通常理解的物理磁盘,这里的磁盘不会划分最小单位的数据单元。
2. VG(Volume Group)
卷组,是若干个PV的集合,将若干个PV,整合在一起,提供一个整体的存储空间。在这里可以设定VG的最小存储单元,也就是PE(Physical Extent),是VG中的最小存储单元。
3. LV(Logical Volume)
逻辑卷组,在VG之上被单独划分的独立存储区域,可以理解为单独划分的独立分区。在这里可以设定LV的最小存储单元,也就是LE(Logical Extent),是LV中的最小存储单元。

## 三、LVM的特点
### 1. LVM的表现形式
/dev/dm-#就是在Linux系统中LVM文件的实际位置。

(1) /dev/mapper/VG_NAME-LV_NAME
例如:/dev/mapper/vol0-root

(2) /dev/VG_NAME/LV_NAME           (注:这个是前一个的软链接)
例如:/dev/vol0/root

### 2. LVM的特点
(1) 边界动态扩展
(2) 边界的扩展和收缩不影响其中存储的数据
(3) 支持快照功能

## 四、管理LVM
### 1. 创建顺序及注意事项
创建LVM文件系统需要遵循如下顺序进行:PV –> VG –> LV
### 2. 各逻辑组成管理汇总

#### (1) PV管理

命令汇总:

命令 | 作用
—— | ——
pvchange | 修改物理卷属性
pvck | 检查物理卷
pvcreate | 创建物理卷
pvdisplay | 显示物理卷
pvmove | 将物理卷上的现有数据(PE),移动到其他物理卷上
pvremove | 删除物理卷
pvresize | 修改被LVM2使用的磁盘或分区的大小
pvs | 简要显示物理卷
pvscan | 扫描物理卷

**a. PV创建**
这里需要注意的是,创建LVM的PV,需要将分区格式调整为”8e Linux LVM”,并使用partx -a 让内核识别新建分区,如果partx不好用,可以考虑使用partprobe,或者重启系统。
创建命令:pvcreate DEVICE
示例:pvcreate /dev/sdb{5,6,7}

**b. PV移动**
pvmove /dev/sdb5

**c. PV移除**
pvremove /dev/sdb5

#### (2) VG管理

命令汇总:

命令 | 作用
—— | ——
vgdisplay | 显示VG信息
vgs | 显示VG简要信息
vgcreate | 创建VG,可使用-s选项指定PE大小
vgrename | 重命名VG
vgremove | 删除VG
vgextend | 扩展VG容量
vgscan | 扫描VG
vgreduce | 缩减VG容量
vgsplit | 切割VG

**a. VG创建**
一定要指定VG的名称
创建命令:vgcreate VG_NAME PV_NAME -s PE_SIZE
示例:vgcreate vg0 /dev/sdb{5,6,7} -s 5M

**b. 缩减VG容量(注意要先做pvmove移动pv上的PE数据块)**
vgreduce VG_NAME PV_NAME
示例:vgreduce vg0 /dev/sdb5

**c. 扩展VG容量**
vgextend VG_NAME PV_NAME
示例:vgextend vg0 /dev/sdb5

#### (3) LV管理

命令汇总:

命令 | 作用
—— | ——
lvdisplay | 显示LV
lvs | 简要显示LV
lvcreate | 创建LV
lvextend | 扩展LV空间
lvreduce | 缩减LV空间,可使用-L设定LV大小,-n设定LV名称,-l设定LV的LE数量
lvremove | 删除LV
lvresize | 修改LV空间
lvscan | 扫描LV
lvconf | 设定LV的配置文件

**a. 创建LV**
创建命令:lvcreate { -L LV_SIZE | -l LV_Number } -n LV_NAME VG_NAME
示例:lvcreate -L 10G -n lv0 vg0,意思是在vg0卷组中,创建名为lv0,大小为10G的LV逻辑卷组。
> 注意:
在创建LV时,所指定的LV大小必须在VG中有足够的空间才可以。

**b. 扩展LV**
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

**扩展LV时需要的步骤**
– 扩展物理边界(扩展LV的大小)
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
– 扩展逻辑边界(修改文件系统大小)
这里只限扩展ext系列文件系统,resize2fs /dev/VG_NAME/LV_NAME
其他文件系统使用其他命令。

> 注意:
其中,“+”有特殊意义:
带“+”表示在现有基础上增加多少;
不带“+”表示将空间扩展至多大;
另外,
扩展时LV要写全绝对路径,不能只写LV的名字。

**c. 缩减LV**
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

**缩减LV时需要的步骤**
– 取消该LV的挂载
umount /dev/VG_NAME/LV_NAME
– 做文件系统强制性检测和修复
e2fsck -f /dev/VG_NAME/LV_NAME
– 重新调整ext文件系统大小
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
– 缩减LV容量
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
– 重新挂载文件系统
mount /dev/VG_NAME/LV_NAME /PATH/TO/MOUNT_POINT
> 注意:
其中,“-”有特殊意义:
带“-”表示在现有基础上缩减多少;
不带“-”表示将空间缩减至多大;
另外,
缩减后的空间一定要能够容纳现有存储的文件才可以,否则文件必然损坏。

示例:
“`
~]# umount /backup

~]# e2fsck -f /dev/mapper/vg0-lv0

~]# resize2fs /dev/mapper/vg0-lv0 5G

~]# lvreduce -L 5G /dev/mapper/vg0-lv0

~]# mount /dev/mapper/vg0-lv0 /backup

“`
**d. 删除LV**
lvremove LV_NAME

**e. 快照卷**
lvcreate -L #[mMgGtT] -p r -s -n SNAPSHOT_LV_NAME Original_Name
其中

选项 | 含义
—— | ——
-L | 指明快照卷大小
-p | 指明快照卷权限,r为只读,rw为读写
-s | 指明创建的是快照卷
-n | 指明快照卷名称

示例:
“`
~]# lvcreate -s -L 2G -n lv0-snap -p r /dev/vg0/lv0
Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 2.00 GiB
Logical volume “lv0-snap” created.

~]# mount /dev/vg0/lv0-snap /mnt
mount: /dev/mapper/vg0-lv0–snap is write-protected, mounting read-only

~]# tail /mnt/functions
“x$1” = xrestart -o \
“x$1” = xreload -o \
“x$1” = xtry-restart -o \
“x$1” = xforce-reload -o \
“x$1” = xcondrestart ] ; then

systemctl_redirect $0 $1
exit $?
fi
fi

 

~]# vim /backup/functions
在文件末尾添加如下一行:
test insert character.

~]# tail -2 /backup/functions
fi
test insert character.

~]# tail -2 /mnt/functions
fi
fi

~]# cp /etc/issue /backup/

~]# ls /backup/
functions  issue  lost+found

~]# ls /mnt/
functions  lost+found
“`

## 五、练习题
1. 创建一个至少由两个PV组成,大小为20G,名为testvg的VG。要求:PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv。挂载至/users目录。
“`
~]# pvcreate /dev/sdb12
Physical volume “/dev/sdb12” successfully created.
~]# pvcreate /dev/sdb13
Physical volume “/dev/sdb13” successfully created.
~]# pvdisplay /dev/sdb{12,13}
“/dev/sdb12” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name               /dev/sdb12
VG Name
PV Size               10.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               6bpfIP-9QEj-oNdQ-ih0e-VFbi-b3fw-YSBxgN

“/dev/sdb13” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name               /dev/sdb13
VG Name
PV Size               10.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               NiEAMK-46oD-bdO7-lUEs-zQgM-jYau-kVlVcD

~]# vgcreate testvg -s 16M /dev/sdb{12,13}
Volume group “testvg” successfully created

~]# vgdisplay testvg
— Volume group —
VG Name               testvg
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                2
Act PV                2
VG Size               19.97 GiB
PE Size               16.00 MiB
Total PE              1278
Alloc PE / Size       0 / 0
Free  PE / Size       1278 / 19.97 GiB
VG UUID               uBalL0-Zc2o-YOGd-MyTA-K2Aw-PDf3-ZR6YDk

~]# lvcreate -L 5G -n testlv testvg
Logical volume “testlv” created.

~]# lvdisplay
— Logical volume —
LV Path                /dev/testvg/testlv
LV Name                testlv
VG Name                testvg
LV UUID                mjmG6u-TRQB-1XDR-M06U-PMJ1-H0ik-r93Z3E
LV Write Access        read/write
LV Creation host, time sapbcs.mageedu.com, 2017-10-10 16:47:01 +0800
LV Status              available
# open                 0
LV Size                5.00 GiB
Current LE             320
Segments               1
Allocation             inherit
Read ahead sectors     auto
– currently set to     8192
Block device           253:0

~]# mke2fs -t ext4 /dev/testvg/testlv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=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: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

~]# mkdir /users

~]# mount /dev/testvg/testlv /users
“`
2. 新建用户archlinux,要求其家目录为/users/archlinux,而后切换至archlinux用户,复制/etc/pam.d/内的所有文件至自己的家目录。
“`
~]# useradd archlinux -d /users/archlinux

~]# su – archlinux

~]$ cp -r /etc/pam.d/* ./

~]$ ls
atd               fingerprint-auth-ac     ksu               pluto         runuser-l          su              vlock
chfn              gdm-autologin           liveinst          polkit-1      setup              sudo            vmtoolsd
chsh              gdm-fingerprint         login             postlogin     smartcard-auth     sudo-i          xserver
config-util       gdm-launch-environment  other             postlogin-ac  smartcard-auth-ac  su-l
crond             gdm-password            passwd            ppp           smtp               system-auth
cups              gdm-pin                 password-auth     remote        smtp.postfix       system-auth-ac
fingerprint-auth  gdm-smartcard           password-auth-ac  runuser       sshd               systemd-user
“`
3. 扩展testlv至7G,要求archlinux用户的文件不能丢失
“`

~]# df -lh /users
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/testvg-testlv  4.8G   21M  4.6G   1% /users

~]# lvs
LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
testlv testvg -wi-ao—- 7.00g

~]# vgs
VG     #PV #LV #SN Attr   VSize  VFree
testvg   2   1   0 wz–n- 19.97g 12.97g

~]# lvextend -L 7G /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
Logical volume testvg/testlv successfully resized.

~]# df -lh /users
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/testvg-testlv  6.8G   23M  6.4G   1% /users

~]# ls /users/archlinux/
atd               fingerprint-auth-ac     ksu               pluto         runuser-l          su              vlock
chfn              gdm-autologin           liveinst          polkit-1      setup              sudo            vmtoolsd
chsh              gdm-fingerprint         login             postlogin     smartcard-auth     sudo-i          xserver
config-util       gdm-launch-environment  other             postlogin-ac  smartcard-auth-ac  su-l
crond             gdm-password            passwd            ppp           smtp               system-auth
cups              gdm-pin                 password-auth     remote        smtp.postfix       system-auth-ac
fingerprint-auth  gdm-smartcard           password-auth-ac  runuser       sshd               systemd-user
“`

4. 缩减testlv至3G,要求archlinux用户的文件不能丢失
“`
~]# umount /dev/testvg/testlv
~]# e2fsck -f /dev/testvg/testlv
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/testvg/testlv: 69/458752 files (0.0% non-contiguous), 67379/1835008 blocks
~]# resize2fs /dev/testvg/testlv 3G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks.
The filesystem on /dev/testvg/testlv is now 786432 blocks long.
~]# lvreduce -L 3G /dev/testvg/testlv
WARNING: Reducing active logical volume to 3.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testvg/testlv? [y/n]: y
Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
Logical volume testvg/testlv successfully resized.
~]# mount /dev/testvg/testlv /users
~]# ls /users/archlinux/
atd               fingerprint-auth-ac     ksu               pluto         runuser-l          su              vlock
chfn              gdm-autologin           liveinst          polkit-1      setup              sudo            vmtoolsd
chsh              gdm-fingerprint         login             postlogin     smartcard-auth     sudo-i          xserver
config-util       gdm-launch-environment  other             postlogin-ac  smartcard-auth-ac  su-l
crond             gdm-password            passwd            ppp           smtp               system-auth
cups              gdm-pin                 password-auth     remote        smtp.postfix       system-auth-ac
fingerprint-auth  gdm-smartcard           password-auth-ac  runuser       sshd               systemd-user
~]# df -lh /users
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/testvg-testlv  2.9G   16M  2.7G   1% /users
“`

5. 对testlv创建快照并尝试基于快照备份数据,验证快照的功能
“`
~]# lvcreate -L 1G -p r -s -n testlv-snap /dev/testvg/testlv
Using default stripesize 64.00 KiB.
Logical volume “testlv-snap” created.
~]# mount /dev/testvg/testlv-snap /mnt
mount: /dev/mapper/testvg-testlv–snap is write-protected, mounting read-only
~]# ls /mnt
archlinux  lost+found
[root@sapbcs ~]# ls /mnt/archlinux/
atd               fingerprint-auth-ac     ksu               pluto         runuser-l          su              vlock
chfn              gdm-autologin           liveinst          polkit-1      setup              sudo            vmtoolsd
chsh              gdm-fingerprint         login             postlogin     smartcard-auth     sudo-i          xserver
config-util       gdm-launch-environment  other             postlogin-ac  smartcard-auth-ac  su-l
crond             gdm-password            passwd            ppp           smtp               system-auth
cups              gdm-pin                 password-auth     remote        smtp.postfix       system-auth-ac
fingerprint-auth  gdm-smartcard           password-auth-ac  runuser       sshd               systemd-user

“`

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88076

(0)
N27_sapbcsN27_sapbcs
上一篇 2017-10-27
下一篇 2017-10-27

相关推荐

  • httpd配置

    httpd配置 修改监听的IP和端口(port) 持久连接 MPM DSO(Dynamic Shared Object) main server的文档页面路径 站点访问控制 定义站点主页面 定义路径别名 设定默认字符集 日志 基于用户的访问控制 虚拟主机 httpd状态页面 使用压缩模块mod_daflate优化速度 基于IP 为每个虚拟主机至少准备一个IP…

    Linux干货 2016-12-21
  • 通过view实现智能DNS

    DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址,然后跟DNS服务器内部的IP表匹配一下,看看用户的类型,然后给用户返回对应的IP地址。

    Linux干货 2017-10-03
  • 第八周-Shell脚本编程

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示; 不在线的主使用红色显示; #!/bin/bash for i in {1..254}; do { ip=172.16.250.$i if ping -c 1 -w 1 $ip &> /dev/null …

    Linux干货 2017-08-23
  • history          每打开一个终端都会从文件(.bash_history)中加载历史记录           不同终端历史记录不同彼此终端不共享 …

    2017-07-15
  • FHS文件系统下个各目录功能

    FHS文件系统下个各目录功能 FHS文件系统的建立是为了让开发者和用户可以预测软件安装文件和文件夹的位置。对整个linux的文件系统系统做了以下的规范:     /bin:命令二进制文件的存放目录;     /boot:系统启动时一些文件存放的目录,包含引导linux的重要文件,…

    Linux干货 2016-10-18
  • 毕业即高薪只是别人家的好事吗?

    1 毕业即高薪?运气?梦想?还是嘘头?  同学们,你还在担心毕业后不好找工作吗,毕业即高薪只是别人家的好事吗?马哥linux又一名在校生学员毕业即20w+高薪名企,你还在等什么呢? 真的只是梦想么?还是只存在于别人家的公司? 越来越多的在校大学生凭着强烈的上进心踊跃的加入了马哥linux的学习阵营,这名研究生同学在研究生毕业的同时也从马哥linux…

    2015-09-06