使用逻辑卷管理器管理灵活存储

七.使用逻辑卷管理器管理灵活存储
硬盘或者分区-->pv-->vg-->lvm


1.LVM 定义
• 物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN 磁盘
• 物理卷是 LVM 所使用的基础 “ 物理 ” 存储。这通常是块设备 ,例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 , 才能与 LVM 结合使用
• 卷组是存储池 , 由一个或多个物理卷组成
• 物理区块是物理卷中存储的小型数据区块 , 用作 LVM 存储的后端
• 逻辑区块映射到物理区块 , 构成 LVM 存储的前端。默认情况下 , 每个逻辑区块映射到一个物理区块。启用某些选项将更改此映射。例如 , 镜像会导致每个逻辑区块映射到两个物理区块
• 逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用


2.使用逻辑卷的意义
• 逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 ,可以将其卷组的可用空间分配给逻辑卷 , 并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘


3.使用命令行工具实施 LVM 存储
• 准备物理卷
– disk 用于创建与 LVM 结合使用的新分区。在要与 LVM 结合使用的分区上 , 始终将“ 类型 ” 设置为 “ 0x8e Linux LVM”
– pvcreate /dev/vdaN 用于初始化分区 ( 或其他物理设备 ), 使其作为物理卷与 LVM 结合使用。直接在物理卷中创建用于存储 LVM 配置数据的表头
• 创建卷组
– vgcreate vgname /dev/vdaN 将创建名为 vgname 且由物理卷 /dev/vdaN 组成的卷组。您可以在创建时指定其他物理卷 ( 以空格隔开 ), 也可以随后使用 vgextend 添加新物理卷
• 创建和使用新逻辑卷
– lvcreate -n lvname -L 2G vgname 从 vgname 上可用物理区块创建名为 lvname 、容量为 2GB 的新逻辑卷
– mkfs -t ext4 /dev/vgname/lvname 将在新逻辑卷上创建 ext4 文件系统
– mkdir /data 建立所需目录作为挂载点
– 向 /etc/fstab 文件中添加一下条目:
/dev/mapper/vgname-lvname /data ext4 defaults 1 2
– 运行 mount -a 可在 /etc/fstab 中挂载所有文件系统 , 包括您刚刚添加的条目


4.查看 LVM 状态信息
• pvdisplay /dev/vdaN 将显示有关特定物理卷的信息
• vgdisplay vgname 将显示有关特定卷组的信息
• lvdisplay /dev/vgname/lvname 将显示有关特定逻辑卷的信息


5.扩展逻辑卷和 xfs 文件系统
• 验证已挂载文件系统 /data 的当前大小
– df -h /data
• 验证 “ 可用物理区块 ” 是否够用
– vgdisplay vgname
• 使用部分或全部可用区块扩展逻辑卷
– lvextend -l 128 /dev/vgname/lvname
• 扩展在 /data 上挂载的关联文件系统
– xfs_growfs
/dev/vgname/lvname
• 验证已挂载文件系统 /data 的新的大小
– df -h /data


6.创建快照以便于数据备份
• 快照逻辑卷是 LVM 存储的另一项灵活功能。LVM 快照是临时保留所更改的逻辑卷的原始数据的逻辑卷。快照提供原始卷的静态视图 , 从而能够以一致状态备份其数据
• 快照卷大小只需足以存储在它存在期间更改的数据即可
• 如果数据更改量大于快照存储容量 , 则快照将自动变为不可用。 ( 原始卷原封不动 , 仍然需要从卷组中手动解除挂载和删除不可用的快照。 )


7.创建和使用快照进行备份
• 创建 /dev/vgname/lvname 的名为 snaplvname 、大小为 20M 的新快照卷
– lvcreate -s -n snaplv -L 20M /dev/vgname/lvname
• 如果备份软件要求 , 请挂载该快照 , 并使备份程序指向新挂载点
– mkdir /snapmount
– mount -o ro /dev/vgname/snaplv /snapmount
• 验证快照逻辑卷的状态
– lvs /dev/vgname/snaplv
• 不再使用快照时 , 请解除挂载并删除它
– umount /snapmount
– lvremove /dev/vgname/snaplv


1.LVM的建立
命令:
   73  mkdir /weixindata
   74  fdisk /dev/vdb
   75  fdisk -l
   76  partprobe 
   77  pvcreate /dev/vdb1
   78  fdisk -l
   80  df ##注意:一定要把上次实验做的停掉
   83  mdadm -D /dev/md0
   84  mdadm -S /dev/md0
   85  mdadm -D /dev/md0
   86  pvcreate /dev/vdb1
   87  vgcreate vg0 /dev/vdb1
   88  lvcreate -L 300M -n lv0 vg0
   89  mkfs.xfs /dev/vg0/lv0
   90  mount /dev/vg0/lv0 /weixindata/


监控命令:
[root@localhost ~]# watch -n 1 'echo =======pvmessage========; pvs;echo ==========vgmessages==============;vgs;echo ========lvmmessages===========;lvs;echo ==================;df -h /weixindata'


-------------------------------------------------------------------------------------
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     2099199     1048576   8e  Linux LVM
/dev/vdb2         2099200     4196351     1048576   8e  Linux LVM
/dev/vdb3         4196352     6293503     1048576   8e  Linux LVM


Disk /dev/md0: 523 MB, 523960320 bytes, 1023360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


[root@localhost ~]# pvcreate /dev/vdb1
  Physical volume /dev/vdb1 not found
  Can't open /dev/vdb1 exclusively.  Mounted filesystem?
[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10473900 3809408   6664492  37% /
devtmpfs          927072       0    927072   0% /dev
tmpfs             942660     140    942520   1% /dev/shm
tmpfs             942660   17076    925584   2% /run
tmpfs             942660       0    942660   0% /sys/fs/cgroup
[root@localhost ~]# mdadm -I 
mdadm: --incremental requires a device.
[root@localhost ~]# mdadm -D
mdadm: No devices given.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Apr 22 02:44:00 2017
     Raid Level : raid1
     Array Size : 511680 (499.77 MiB 523.96 MB)
  Used Dev Size : 511680 (499.77 MiB 523.96 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent


    Update Time : Sat Apr 22 03:38:38 2017
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1


           Name : localhost:0  (local to host localhost)
           UUID : af9e3fe4:dfed6efc:02461f8e:af60c0c1
         Events : 39


    Number   Major   Minor   RaidDevice State
       0     253       17        0      active sync   /dev/vdb1
       2     253       19        1      active sync   /dev/vdb3


       3     253       18        -      spare   /dev/vdb2
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory
[root@localhost ~]# pvcreate /dev/vdb1
  Physical volume /dev/vdb1 not found
WARNING: linux_raid_member signature detected on /dev/vdb1 at offset 4096. Wipe it? [y/n] y
  Wiping linux_raid_member signature on /dev/vdb1.
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y
  Wiping xfs signature on /dev/vdb1.
  Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1
  Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0
  Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0           isize=256    agcount=4, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=76800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
------------------------------------------------------------------------------------







2.拉伸与缩减
拉伸
    1  lvextend -L 900M /dev/vg0/lv0 ##-L是拉伸到多大
    2  xfs_growfs /dev/vg0/lv0 ##使文件也增大,注意:文件不能格式化,否则内容会丢掉
    3  lvextend -L 1500M /dev/vg0/lv0
    4  pvcreate /dev/vdb2 ##再加一块硬盘
    5  vgextend vg0 /dev/vdb2
    6  lvextend -L 1500M /dev/vg0/lv0
    7  xfs_growfs /dev/vg0/lv0


-------------------------------------------------------------------------------------
[root@localhost ~]# lvextend -L 900M /dev/vg0/lv0
  Extending logical volume lv0 to 900.00 MiB
  Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=4, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=76800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 76800 to 230400
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
  Extending logical volume lv0 to 1.46 GiB
  Insufficient free space: 150 extents needed, but only 30 available
[root@localhost ~]# pvcreate /dev/vdb2
  Physical volume /dev/vdb2 not found
WARNING: linux_raid_member signature detected on /dev/vdb2 at offset 4096. Wipe it? [y/n] y
  Wiping linux_raid_member signature on /dev/vdb2.
  Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2
  Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
  Extending logical volume lv0 to 1.46 GiB
  Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=12, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=230400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 230400 to 384000




最后监控命令显示:
=======pvmessage========
  PV         VG   Fmt  Attr PSize    PFree
  /dev/vdb1  vg0  lvm2 a--  1020.00m      0
  /dev/vdb2  vg0  lvm2 a--  1020.00m 540.00m
==========vgmessages==============
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    2   1   0 wz--n- 1.99g 540.00m
========lvmmessages===========
  LV   VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-ao---- 1.46g
==================
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv0  1.5G   16M  1.5G   2% /weixindata
-------------------------------------------------------------------------------------




缩减:不能用xfs格式的文件,所以先取消挂载,把文件换一种格式


    1  umount /weixindata/
    2  mkfs.ext4 /dev/vg0/lv0
    3  mount /dev/vg0/lv0 /weixindata/
    4  df
 
    1  umount /weixindata/ ##先把文件取消挂载
    2  e2fsck -f /dev/vg0/lv0   ##做这一步是为了下一步如果缩的过小有提示
    3  resize2fs /dev/vg0/lv0 20M ##过小,会有提示的
    4  resize2fs /dev/vg0/lv0 300M
    5  resize2fs /dev/vg0/lv0 10M ##也过小
    6  mount /dev/vg0/lv0 /weixindata/ ##显示的文件大小是300M
    7  lvreduce -L 300 /dev/vg0/lv0
    8  pvmove /dev/vdb1 /dev/vdb2
    9  vgreduce vg0 /dev/vdb1
   10  pvremove /dev/vdb1
------------------------------------------------------------------------------
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0
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
96000 inodes, 384000 blocks
19200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=394264576
12 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912


Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 


[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
[root@localhost ~]# df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3809384   6664516  37% /
devtmpfs               927072       0    927072   0% /dev
tmpfs                  942660     140    942520   1% /dev/shm
tmpfs                  942660   17072    925588   2% /run
tmpfs                  942660       0    942660   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0   1479088    4512   1381392   1% /weixindata
---------------------------------------------------------------------------------


########然后正式进行########## 
    1  umount /weixindata/ ##先把文件取消挂载
    2  e2fsck -f /dev/vg0/lv0   ##做这一步是为了下一步如果缩的过小有提示
    3  resize2fs /dev/vg0/lv0 20M ##过小,会有提示的
    4  resize2fs /dev/vg0/lv0 300M
    5  resize2fs /dev/vg0/lv0 10M ##也过小
    6  mount /dev/vg0/lv0 /weixindata/ ##显示的文件大小是300M
    7  lvreduce -L 300 /dev/vg0/lv0
    8  pvmove /dev/vdb1 /dev/vdb2
    9  vgreduce vg0 /dev/vdb1
   10  pvremove /dev/vdb1
----------------------------------------------------------------------------------
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# e2fsck -f /dev/vg0/lv0
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/vg0/lv0: 11/96000 files (9.1% non-contiguous), 15356/384000 blocks
[root@localhost ~]# resize2fs /dev/vg0/lv0 20M
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: New size smaller than minimum (17124)


[root@localhost ~]# resize2fs /dev/vg0/lv0 300M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 76800 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 76800 blocks long.


[root@localhost ~]# resize2fs /dev/vg0/lv0 10M
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: New size smaller than minimum (16509)


[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
[root@localhost ~]# lvreduce -L 300 /dev/vg0/lv0
  WARNING: Reducing active and open logical volume to 300.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
  Reducing logical volume lv0 to 300.00 MiB
  Logical volume lv0 successfully resized
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2
  /dev/vdb1: Moved: 20.0%
  /dev/vdb1: Moved: 100.0%
[root@localhost ~]# vgreduce vg0 /dev/vdb1
  Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1
  Labels on physical volume "/dev/vdb1" successfully wiped
----------------------------------------------------------------------------------



########镜像######
   12  touch /weixindata/file{1..5} ##实际上是建在了/dev/vg0/lv0里面了,通过/weixindata 来查看
   13  ls /weixindata/
   14  umount /weixindata/
   15  cd /weixindata/
   16  ls
   17  cd
   18  lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##镜像给50M
   19  mount /dev/vg0/lv0backup /weixindata/ ##查看关于监控命令镜像的大小,应该不是50M了,和源一致
   20  cd /weixindata/
   21  ls
   22  rm -fr /weixindata/*
   23  ls
   24  cd
   25  umount /weixindata/
   26  lvremove /dev/vg0/lv0backup 
   27  lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
   28  mount /dev/vg0/lv0backup /weixindata/
   29  cd /weixindata/
   30  ls


-------------------------------------------------------------------------------
[root@localhost ~]# touch /weixindata/file{1..5}
[root@localhost ~]# ls /weixindata/
file1  file2  file3  file4  file5  lost+found
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
file1  file2  file3  file4  file5  lost+found
[root@localhost weixindata]# rm -fr /weixindata/*
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# lvremove /dev/vg0/lv0backup 
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
file1  file2  file3  file4  file5  lost+found
---------------------------------------------------------------------------------




设备都不用了,全都卸载
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# lvremove /dev/vg0/lv0backup
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvremove /dev/vg0/lv0
Do you really want to remove active logical volume lv0? [y/n]: y
  Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0
  Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb2
  Labels on physical volume "/dev/vdb2" successfully wiped









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章