Linux LVM分区之VG扩容、LV扩容、LV缩减、LVM快照

摘要

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,于1998年发布到Linux社区中,它允许你在Linux系统上用简单的命令行管理一个完整的逻辑卷管理环境。

一、简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,于1998年发布到Linux社区中,它允许你在Linux系统上用简单的命令行管理一个完整的逻辑卷管理环境。


二、版本
LVM1 最初的LVM与1998年发布,只在Linux内核2.4版本上可用,它提供最基本的逻辑卷管理。
LVM2 LVM-1的更新版本,在Linux内核2.6中才可用,它在标准的LVM-1功能外还提供了额外的功能。
查看:(测试机CentOS 6.6 X86_64)

[[email protected] ~]# rpm -qa | grep lvm
mesa-private-llvm-3.4-3.el6.x86_64
lvm2-libs-2.02.111-2.el6_6.2.x86_64
lvm2-2.02.111-2.el6_6.2.x86_64
[[email protected] ~]# cat /etc/centos-release
CentOS release 6.6 (Final)
[[email protected] ~]# uname -a
Linux ZhongH100.wxjr.com.cn 2.6.32-504.16.2.el6.centos.plus.x86_64 #1 SMP Wed Apr 22 00:59:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]# getconf LONG_BIT
64

Linux LVM分区之VG扩容、LV扩容、LV缩减、LVM快照


三、LVM 模块
Physical volume (PV)、Volume group (VG)、Logical volume(LV)、 Physical extent (PE),下面我们用一个简单的图来说明下物理卷、卷组、逻辑卷他们之间的关系(此图只是个人理解,仅供参考)
LVM 详解Linux LVM分区之VG扩容、LV扩容、LV缩减、LVM快照
简而言之:
逻辑卷的创建,就是将多块硬盘创建物理卷,而将这些物理卷以逻辑的形式总成一个容器,然后从这个容器里面创建大小不同的分区文件,而这个容器就是所谓的逻辑卷,而从这个容器里创建大小不同的分区文件,这个分区文件就叫做逻辑卷。嘿嘿,你懂了吗? ^_^ ……


四、具体操作
1. 分区 (本实验环境使用的是一块新磁盘/dev/sdb)

[[email protected] ~]# fdisk -l /dev/sd[a-z]

Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c656

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        6591    52428800   8e  Linux LVM

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

[[email protected] ~]# 
[[email protected] ~]# fdisk /dev/sdb  #试用fdisk命令来管理磁盘分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xfb1f25cf.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p                      #输入p来打印当前磁盘上的分区

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfb1f25cf

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n                      #输入n 新建分区
Command action
   e   extended
   p   primary partition (1-4)
p                                            #输入p 选择分区类型为主分区
Partition number (1-4): 1                    #输入1 选择为第一个主分区
First cylinder (1-7832, default 1):          #直接回车 选择分区起始块为1
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-7832, default 7832): +10G        #输入+10G 为新分区大小为10G

Command (m for help): n                      #输入n 在当前磁盘上再次新建一个分区
Command action
   e   extended
   p   primary partition (1-4)
p                                            #输入p 选择分区类型为主分区
Partition number (1-4): 2                    #输入2 选择为第二个主分区
First cylinder (1307-7832, default 1307):    #直接回车 选择分区起始块为1307
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-7832, default 7832): +10G      #输入+10G 为新分区大小为10G

Command (m for help): n                      #输入n 在当前磁盘上再次新建一个分区
Command action
   e   extended
   p   primary partition (1-4)
p                                            #输入p 选择分区类型为主分区
Partition number (1-4): 3                    #输入3 选择为第三个主分区
First cylinder (2613-7832, default 2613):    #直接回车 选择分区起始块为2613
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-7832, default 7832): +10G      #输入+10G 为新分区大小为10G

Command (m for help): p                      #输入p来打印当前磁盘上的分区

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfb1f25cf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux

Command (m for help): t                      #输入t 来改变分区类型
Partition number (1-4): 1                    #输入1 来选择改变分区类型的分区号为1
Hex code (type L to list codes): 8e          #输入8e 改变分区类型为LVM
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): t                      #输入t 来改变分区类型
Partition number (1-4): 2                    #输入2 来选择改变分区类型的分区号为2
Hex code (type L to list codes): 8e          #输入8e 改变分区类型为LVM
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): t                      #输入t 来改变分区类型
Partition number (1-4): 3                    #输入3 来选择改变分区类型的分区号为3
Hex code (type L to list codes): 8e          #输入8e 改变分区类型为LVM
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): p                      #输入p来打印当前磁盘上的分区

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfb1f25cf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307        2612    10490445   8e  Linux LVM
/dev/sdb3            2613        3918    10490445   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]# 

新分区完毕后我们需要让内核重新载入,如果执行一次不能载入所有分区那么就多执行几次,直至全部能识别到,我们的sdb上有3个分区,下面的命令已经显示全部识别了

[[email protected] ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
2. 将物理分区与硬盘创建为物理卷(pvcreate)
[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 #这是正常的命令写法 也可以使用下面那种扩展写法^C
[[email protected] ~]# pvcreate /dev/sdb{1,2,3}
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
[[email protected] ~]# pvs                                          #使用pvs来查看当前系统上所有的pv
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1           lvm2 ---  10.00g 10.00g
  /dev/sdb2           lvm2 ---  10.00g 10.00g
  /dev/sdb3           lvm2 ---  10.00g 10.00g
[[email protected] ~]# 
3. 将物理卷(pv)创建为卷组(vgcreate),名为VGtest
[[email protected] ~]# vgcreate VGtest /dev/sdb{1,2,3}
  Volume group "VGtest" successfully created
[[email protected] ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VGtest     3   0   0 wz--n- 30.00g 30.00g
[[email protected] ~]# vgdisplay
  --- Volume group ---
  VG Name               VGtest     #卷组名是VGtest
  System ID
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               30.00 GiB  #新的VG大小是30G 3个10G分区组成的
  PE Size               4.00 MiB   #物理盘的基本单位:默认4MB
  Total PE              7680
  Alloc PE / Size       0 / 0
  Free  PE / Size       7680 / 30.00 GiB
  VG UUID               W8fYiw-Zh46-53lr-qWuf-hqLR-Rqla-x1mFQH
[[email protected] ~]# 
4. 在卷组里创建逻辑卷并格式化、挂载使用
[[email protected] ~]# lvcreate  -L 2G -n LVtest1 VGtest   #在名为VGtest的VG上创建一个名为LVtest1 大小为2G的逻辑卷
  Logical volume "LVtest1" created
[[email protected] ~]# lvs                                 #查看系统上的LV逻辑卷
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVtest1 VGtest   -wi-a-----  2.00g
[[email protected] ~]# mke2fs -t ext4 /dev/VGtest/LVtest1  #格式化新建的LVtest1逻辑卷为ext4格式
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# mkdir /LVtest1                      #创建一个LVtest1的目录
[[email protected] ~]# mount /dev/VGtest/LVtest1 /LVtest1  #将/dev/VGtest/LVtest1这个逻辑卷挂载到 /LVtest1目录上
[[email protected] ~]# mount                               #查看挂载情况
/dev/mapper/vgzhongH-root on / type ext4 (rw,acl)
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)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vgzhongH-data on /data type ext4 (rw,acl)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/VGtest-LVtest1 on /LVtest1 type ext4 (rw)   #挂载成功 分区格式是ext4 可读写
[[email protected] ~]# df -hP                              #查看系统上的分区情况
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vgzhongH-root    30G  3.3G   25G  12% /
tmpfs                       932M     0  932M   0% /dev/shm
/dev/sda1                   477M   34M  418M   8% /boot
/dev/mapper/vgzhongH-data   4.8G   10M  4.6G   1% /data
/dev/mapper/VGtest-LVtest1  2.0G  3.0M  1.9G   1% /LVtest1  #LVtest1逻辑卷分区正常
[[email protected] ~]# 
5. 发现卷组pv空间不够,我们需要扩大卷组空间
 现在系统上新增了一块20G的硬盘/dev/sdc
[[email protected] ~]# fdisk -l /dev/sd[a-z]

Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c656

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        6591    52428800   8e  Linux LVM

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfb1f25cf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307        2612    10490445   8e  Linux LVM
/dev/sdb3            2613        3918    10490445   8e  Linux LVM

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[[email protected] ~]# pvcreate /dev/sdc   #将新硬盘/sdc加入物理卷上
  Physical volume "/dev/sdc" successfully created
[[email protected] ~]# pvs                       #查看物理卷
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  VGtest   lvm2 a--  10.00g  8.00g
  /dev/sdb2  VGtest   lvm2 a--  10.00g 10.00g
  /dev/sdb3  VGtest   lvm2 a--  10.00g 10.00g
  /dev/sdc            lvm2 ---  20.00g 20.00g
[[email protected] ~]# vgextend VGtest /dev/sdc  #扩展卷组
  Volume group "VGtest" successfully extended
[[email protected] ~]# vgs                       #查看卷组
  VG       #PV #LV #SN Attr   VSize  VFree
  VGtest     4   1   0 wz--n- 50.00g 48.00g   #从大小可以看出我们已经扩容成功
6. 扩展逻辑卷 (支持在线扩展)
 在线将/dev/VGtest/LVtest1 扩展到4G,并且要求数据可以正常访问
[[email protected] ~]# cd /LVtest1/
[[email protected] LVtest1]# echo "this is a test for LVM" > lvtest #穿件个lvtest的文件并写入内容
[[email protected] LVtest1]# cat lvtest
this is a test for LVM
[[email protected] LVtest1]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVtest1 VGtest   -wi-ao----  2.00g
[[email protected] LVtest1]# lvextend -L +2G /dev/VGtest/LVtest1  #lvextend -l +100%FREE /dev/LBVG/data
  Size of logical volume VGtest/LVtest1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume LVtest1 successfully resized
[[email protected] LVtest1]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVtest1 VGtest   -wi-ao----  4.00g                         #逻辑卷空间已经增加
[[email protected] LVtest1]# e2fsck -f /dev/VGtest/LVtest1
[[email protected] LVtest1]# resize2fs -p /dev/VGtest/LVtest1   #通过 resize2fs 将文件系统的容量确实添加
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VGtest/LVtest1 is mounted on /LVtest1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/VGtest/LVtest1 to 1048576 (4k) blocks.
The filesystem on /dev/VGtest/LVtest1 is now 1048576 blocks long.

[[email protected] LVtest1]# cat l
lost+found/ lvtest
[[email protected] LVtest1]# cat lvtest   #文件没有受损
this is a test for LVM
[[email protected] LVtest1]# df -hP
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vgzhongH-root    30G  3.3G   25G  12% /
tmpfs                       932M     0  932M   0% /dev/shm
/dev/sda1                   477M   34M  418M   8% /boot
/dev/mapper/vgzhongH-data   4.8G   10M  4.6G   1% /data
/dev/mapper/VGtest-LVtest1  3.9G  4.0M  3.7G   1% /LVtest1  #挂载的分区空间已经增加
[[email protected] LVtest1]# 
[[email protected] ~]# pvcreate /dev/xvde
  Physical volume "/dev/xvde" successfully created.
[[email protected] ~]# vgextend DTVG /dev/xvde
  Volume group "DTVG" successfully extended
[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  DTVG   4   3   0 wz--n- 624.48g 10.00g
[[email protected] ~]# lvresize -l +100%FREE -r /dev/DTVG/data1
  Size of logical volume DTVG/data1 changed from 599.99 GiB (153598 extents) to 609.99 GiB (156157 extents).
  Logical volume DTVG/data1 successfully resized.
meta-data=/dev/mapper/DTVG-data1 isize=512    agcount=5, agsize=32767744 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=157284352, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=63999, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 157284352 to 159904768
[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  DTVG   4   3   0 wz--n- 624.48g    0 
[[email protected] ~]# lvs
  LV    VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data1 DTVG -wi-ao---- 609.99g                                                    
  root  DTVG -wi-ao----  12.50g                                                    
  swap  DTVG -wi-ao----   2.00g                                                    
[[email protected] ~]# xfs_growfs /dev/DTVG/data1
meta-data=/dev/mapper/DTVG-data1 isize=512    agcount=5, agsize=32767744 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=159904768, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=63999, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]# df -hP
文件系统                容量  已用  可用 已用% 挂载点
devtmpfs                3.9G     0  3.9G    0% /dev
tmpfs                   3.9G     0  3.9G    0% /dev/shm
tmpfs                   3.9G  401M  3.6G   11% /run
tmpfs                   3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/DTVG-root    13G  4.4G  8.2G   35% /
/dev/xvda1              497M  197M  301M   40% /boot
/dev/mapper/DTVG-data1  610G  230G  381G   38% /data
tmpfs                   799M     0  799M    0% /run/user/0
[[email protected] ~]# 

如果是xfs文件系统话上面这种扩容方法就不行了,需要用下面的方法,
参考:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/xfsgrow.html
http://oss.sgi.com/archives/xfs/2001-05/msg03189.html

[[email protected] ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/xvda2 LBVG lvm2 a--   14.51g     0
  /dev/xvda3 LBVG lvm2 a--  135.00g 85.01g
[[email protected] ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  LBVG   2   2   0 wz--n- 149.51g 85.01g
[[email protected] ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root LBVG -wi-ao---- 62.00g
  swap LBVG -wi-ao----  2.50g
[[email protected] ~]# lvcreate -L 10G -n data LBVG
  Logical volume "data" created.
[[email protected] ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data LBVG -wi-a----- 10.00g
  root LBVG -wi-ao---- 62.00g
  swap LBVG -wi-ao----  2.50g
[[email protected] ~]# mkfs.xfs /dev/LBVG/data
meta-data=/dev/LBVG/data         isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]# lvextend -L +5G /dev/LBVG/data
  Size of logical volume LBVG/data changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume data successfully resized.
[[email protected] ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data LBVG -wi-a----- 15.00g
  root LBVG -wi-ao---- 62.00g
  swap LBVG -wi-ao----  2.50g
[[email protected] ~]# e2fsck -f /dev/LBVG/data
e2fsck 1.42.13 (17-May-2015)
ext2fs_open2: Bad magic number in super-block
e2fsck: 超级块无效, trying backup blocks...
e2fsck: Bad magic number in super-block 当尝试打开 /dev/LBVG/data 时

The 超级块 could not be read or does not describe a valid ext2/ext3/ext4
文件系统.  If the 设备 is valid and it really contains an ext2/ext3/ext4
文件系统 (and not swap or ufs or something else), then the 超级块
is corrupt, and you might try running e2fsck with an alternate 超级块:
    e2fsck -b 8193 <设备>
 or
    e2fsck -b 32768 <设备>

[[email protected] ~]# mkdir /data
[[email protected] ~]# mount /dev/LBVG/data /data
[[email protected] ~]# df -hP|grep /data
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/LBVG-data   10G   33M   10G    1% /data
[[email protected] ~]# xfs_growfs /dev/LBVG/data
meta-data=/dev/mapper/LBVG-data  isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 3932160
[[email protected] ~]# df -hP|grep /data
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/LBVG-data   15G   33M   15G    1% /data
[[email protected] ~]# 
[[email protected]_Node-192_99_104_97 ~]# fdisk -l

磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000060a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

磁盘 /dev/sdb:10995.1 GB, 10995116277760 字节,21474836480 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/LBVG-root:47.9 GB, 47936700416 字节,93626368 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/LBVG-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/LBVG-data:10997.6 GB, 10997637054464 字节,21479759872 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdc:10995.1 GB, 10995116277760 字节,21474836480 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[[email protected]_Node-192_99_104_97 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
[[email protected]_Node-192_99_104_97 ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree 
  /dev/sda2  LBVG lvm2 a--  <49.00g     0 
  /dev/sdb   LBVG lvm2 a--  <10.00t     0 
  /dev/sdc        lvm2 ---   10.00t 10.00t
[[email protected]_Node-192_99_104_97 ~]# vgextend LBVG /dev/sdc
  Volume group "LBVG" successfully extended
[[email protected]_Node-192_99_104_97 ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  LBVG   3   3   0 wz--n- <20.05t <10.00t
[[email protected]_Node-192_99_104_97~]# lvextend -l +100%FREE /dev/LBVG/data
  Size of logical volume LBVG/data changed from 10.00 TiB (2622041 extents) to 20.00 TiB (5243480 extents).
  Logical volume LBVG/data successfully resized.
[[email protected]_Node-192_99_104_97 ~]# xfs_growfs /dev/LBVG/data
meta-data=/dev/mapper/LBVG-data  isize=512    agcount=11, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2684969984, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2684969984 to 5369323520
[[email protected]_Node-192_99_104_97 ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  LBVG lvm2 a--  <49.00g    0 
  /dev/sdb   LBVG lvm2 a--  <10.00t    0 
  /dev/sdc   LBVG lvm2 a--  <10.00t    0 
[[email protected]_Node-192_99_104_97 ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  LBVG   3   3   0 wz--n- <20.05t    0 
[[email protected]_Node-192_99_104_97 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data LBVG -wi-ao---- 20.00t                                                    
  root LBVG -wi-ao---- 44.64g                                                    
  swap LBVG -wi-ao----  2.00g                                                    
[[email protected]_Node-192_99_104_97 ~]# df -hP
文件系统               容量  已用  可用 已用% 挂载点
devtmpfs               979M     0  979M    0% /dev
tmpfs                  994M     0  994M    0% /dev/shm
tmpfs                  994M  105M  889M   11% /run
tmpfs                  994M     0  994M    0% /sys/fs/cgroup
/dev/mapper/LBVG-root   45G  3.1G   42G    7% /
/dev/sda1             1014M  189M  826M   19% /boot
tmpfs                  199M     0  199M    0% /run/user/0
/dev/mapper/LBVG-data   21T  5.6T   15T   28% /data
overlay                 45G  3.1G   42G    7% /var/lib/docker/overlay2/9170d159193f4ed5c15aba5c35946d41f11b830c017e76e56891a327060dc4fe/merged
overlay                 45G  3.1G   42G    7% /var/lib/docker/overlay2/b9b8c760e73dd778830c192a64da80aa8441aa1b787b633213355c987b9282cc/merged
[[email protected]_Node-192_99_104_97 ~]# 
7. 缩减逻辑卷
 查看逻辑卷使用空间状况
 不能在线缩减,得先卸载 切记
 确保缩减后的空间大小依然能存储原有的所有数据
 在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态
[[email protected] ~]# umount /dev/VGtest/LVtest1       #卸载/dev/VGtest/LVtest1
[[email protected] ~]# e2fsck -f /dev/VGtest/LVtest1    #强制检查文件系统
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/VGtest/LVtest1: 12/262144 files (0.0% non-contiguous), 33871/1048576 blocks
[[email protected] ~]# resize2fs /dev/VGtest/LVtest1 1G  #缩减逻辑大小到1G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/VGtest/LVtest1 to 262144 (4k) blocks.
The filesystem on /dev/VGtest/LVtest1 is now 262144 blocks long.

[[email protected] ~]# lvreduce -L 1G /dev/VGtest/LVtest1
  WARNING: Reducing active logical volume to 1.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LVtest1? [y/n]: y         #输入y 同意裁剪
  Size of logical volume VGtest/LVtest1 changed from 4.00 GiB (1024 extents) to 1.00 GiB (256 extents).
  Logical volume LVtest1 successfully resized
[[email protected] ~]# lvs                                #查看逻辑卷
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVtest1 VGtest   -wi-a-----  1.00g
[[email protected] ~]# mount /dev/VGtest/LVtest1 /LVtest1/ #挂载逻辑卷/dev/VGtest/LVtest1
[[email protected] ~]# df -hP                              #查看系统分区详情
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vgzhongH-root    30G  3.3G   25G  12% /
tmpfs                       932M     0  932M   0% /dev/shm
/dev/sda1                   477M   34M  418M   8% /boot
/dev/mapper/vgzhongH-data   4.8G   10M  4.6G   1% /data
/dev/mapper/VGtest-LVtest1  944M  2.6M  891M   1% /LVtest1 #已经缩减成功
[[email protected] ~]# cat /LVtest1/lvtest                  #查看缩减前文件是否受损
this is a test for LVM
[[email protected] ~]# 
8. 缩减磁盘空间
 发现物理磁盘空间使用不足,将其中一块硬盘或分区拿掉
 pvmove /dev/sdb1 #将/dev/sdb1上存储的数据移到其它物理卷中
 vgreduce VGtest /dev/sdb1 #将/dev/sdb1从VGtest卷组中移除
 pvremove /dev/sdb1 #将/dev/sdb1从物理卷上移除
[[email protected] ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  VGtest   lvm2 a--  10.00g  9.00g
  /dev/sdb2  VGtest   lvm2 a--  10.00g 10.00g
  /dev/sdb3  VGtest   lvm2 a--  10.00g 10.00g
  /dev/sdc   VGtest   lvm2 a--  20.00g 20.00g
[[email protected] ~]# pvmove /dev/sdb1
  /dev/sdb1: Moved: 2.3%
  /dev/sdb1: Moved: 86.3%
  /dev/sdb1: Moved: 100.0%
[[email protected] ~]# vgreduce VGtest /dev/sdb1
  Removed "/dev/sdb1" from volume group "VGtest"
[[email protected] ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped
[[email protected] ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb2  VGtest   lvm2 a--  10.00g  9.00g
  /dev/sdb3  VGtest   lvm2 a--  10.00g 10.00g
  /dev/sdc   VGtest   lvm2 a--  20.00g 20.00g
[[email protected] ~]# 
9. 实现快照,进行备份还原
 在/mnt/lvm目录上,我们将原始的目录文件进行快照,然后将/LVtets1目录中的内容清空,并进行还原
[[email protected] ~]# cat /LVtest1/lvtest
this is a test for LVM
[[email protected] ~]# lvcreate -L 30M -n backup -s -p r /dev/VGtest/LVtest1
  Rounding up size to full physical extent 32.00 MiB
  Logical volume "backup" created
[[email protected] ~]# mkdir /tmp/backup/
[[email protected] ~]# mount /dev/VGtest/backup /tmp/backup/
mount: block device /dev/mapper/VGtest-backup is write-protected, mounting read-only
[[email protected] ~]# cat /tmp/backup/lvtest
this is a test for LVM
[[email protected] ~]# rm -rf /LVtest1/*
You are going to execute "/bin/rm -rf /LVtest1/lost+found /LVtest1/lvtest",please confirm (yes or no):yes
[[email protected] ~]# cd /LVtest1/
[[email protected] LVtest1]# ls -l
总用量 0
[[email protected] LVtest1]# tar xf /tmp/sandy.tar.bz2
[[email protected] LVtest1]# ls -l
总用量 8
drwx------ 2 root root 4096 5月  21 23:33 lost+found
-rw-r--r-- 1 root root   23 5月  21 23:53 lvtest
[[email protected] LVtest1]# cat lvtest
this is a test for LVM
[[email protected] LVtest1]# df -hP
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vgzhongH-root    30G  3.3G   25G  12% /
tmpfs                       932M     0  932M   0% /dev/shm
/dev/sda1                   477M   34M  418M   8% /boot
/dev/mapper/vgzhongH-data   4.8G   10M  4.6G   1% /data
/dev/mapper/VGtest-LVtest1  944M  2.5M  891M   1% /LVtest1
/dev/mapper/VGtest-backup   944M  2.6M  891M   1% /tmp/backup
[[email protected] LVtest1]# 
  • 本文由 发表于 2015年5月21日22:51:46
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  0   博主  0   引用   1