将clvm的状态改成no-clustered

来源:互联网 发布:手机如何连接电脑网络 编辑:程序博客网 时间:2024/04/30 14:05

简介

  clvm(The Clustered Logical Volume Manager),是lvm的一些列集群扩展,这些扩展使得集群中的节点能够通过lvm来管理共享存储,例如SAN.

  那么我们什么时候使用clvm呢?
  当我们的集群系统中多个活跃节点都需要访问同一个存储时,我们就必须使用clvm。clvm的原理是在存储上建立lvm,然后通过锁控制使得用户进行配置和管理存储。

实验背景

   例如当我们集群使用gfs挂在的共享存储出问题,需要将其挂在到另一台服务器上来备份数据,由于这台服务器是一台独立的机器,没有集群中的环境,就会出现一些问题。

解决过程

1.我们先将存储挂载到新服务器上

[root@test ~]#iscsiadm -m discovery -t sendtargets -p 10.20.3.10[root@test ~]#iscsiadm -m node -T iqn.2001-05.com.equallogic:0-8a0906-20ed24b07-fa4000047ac56fcb-pic-new-01  -p 10.20.3.10:3260 -l[root@test ~]#fdisk -lDisk /dev/sdb: 1438.7 GB, 1438679826432 bytes255 heads, 63 sectors/track, 174909 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd3997559   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1      174910  1404959744   8e  Linux LVMDisk /dev/mapper/vg_test-test: 590.6 GB, 590633500672 bytes255 heads, 63 sectors/track, 71807 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sdc: 1073.7 GB, 1073747066880 bytes255 heads, 63 sectors/track, 130542 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000

从上面看能够正常挂在。

2.查看存储上的pv是否存在

[root@test ~]# pvs Skipping clustered volume group cluster_vg_test Skipping volume group cluster_vg_test  PV         VG               Fmt  Attr PSize    PFree  /dev/sda2  vg_test        lvm2 a--     7.81g    0   /dev/sda3  vg_test        lvm2 a--   550.07g    0 

上面提示“skipping clustered volume group cluster_vg_test”,其中cluster_vg_test正是我们在集群环境中基于存储创建lvm的vg名称,但是它被跳过了。这是由于cluster_vg_test是基于clustered创建的,而现在的这台服务器上是没有clustered扩展的,因此会被忽略,我们可以通过设置lvm的locking_type=0来解决。

[root@test ~]# vgchange -cn  cluster_vg_test --config 'global {locking_type = 0}'  WARNING: Locking disabled. Be careful! This could corrupt your metadata.  Unable to determine exclusivity of nasdb  Volume group "cluster_vg_test" successfully changed

更改后,我们就可以看到lvm的相关信息了

[root@test ~]# pvs  PV         VG               Fmt  Attr PSize    PFree  /dev/sda2  vg_test        lvm2 a--     7.81g    0    /dev/sdc   cluster_vg_test lvm2 a--  500.00g    0  [root@test ~]# lvs  LV             VG               Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert                                  gfs_test      cluster_vg_test -wi-ao---- 500.00g                                               LogVol00       vg_test        -wi-ao----   7.81g    [root@test ~]# lvscan  inactive          '/dev/cluster_vg_test/gfs_test' [500.00 GiB] inherit  ACTIVE            '/dev/vg_test/test' [7.81 GiB] inherit                                           

从以上看出,虽然lvm能够正常显示,但是lv让处于inactive状态,我们仍需要将lv的状态设置成active

 [root@test ~]# lvchange -ay /dev/cluster_vg_test/gfs_test [root@test ~]# lvscan  ACTIVE            '/dev/cluster_vg_test/gfs_test' [500.00 GiB] inherit  ACTIVE            '/dev/vg_test/test' [7.81 GiB] inherit

现在我们的lvm正常了,挂载后能够正常读取了。

3.将lvm以gfs2文件系统进行挂载

[root@test ~]# mount -t gfs /dev/cluster_vg_test/gfs_test /datamount: Transport endpoint is not connected

由于lvm使用的是gfs文件系统,而这台机器没有gfs工具,因此我们需要安装

yum install gfs2-utils

由于gfs2通过锁机制来阻止冲突,因此需要解除锁机制。

[root@test ~]# gfs2_tool sb /dev/cluster_vg_test/gfs_test proto lock_noneYou shouldn't change any of these values if the filesystem is mounted.Are you sure? [y/n] ycurrent lock protocol name = "lock_dlm"new lock protocol name = "lock_none"Done#重新挂载[root@test ~]# mount -t gfs /dev/cluster_vg_test/gfs_test /dataerror mounting /dev/dm-4 on /data: No such file or directory

仍然不能挂在,从/var/log/messages中得到以下信息:

kernel: GFS2: can't find protocol lock_none

提示,gfs2找不到对应lock_none的协议,我们应该将其设置成lock_nolock

[root@test ~]# gfs2_tool sb /dev/mapper/nasVG2-nasdb proto lock_nolockYou shouldn't change any of these values if the filesystem is mounted.Are you sure? [y/n] ycurrent lock protocol name = "lock_none"new lock protocol name = "lock_nolock"Done#重新挂载[root@test ~]# mount -t gfs /dev/cluster_vg_test/gfs_test /data

OK,lvm已经能够成功挂载。

总结

   当存储从一台机器换到另一台机器挂载使用的时候,其lvm信息仍保存在磁盘当中,我们只需要在新机器上激活即可;但是基于cluster的lvm需要根据所使用的文件系统进行解除相关锁机制才能够挂载使用。

补充

   当我们在解除通过iscsi挂载的存储时,没有先删除逻辑卷,而是直接iscsiadm -m node …. -u,此时查看lvm时会有错误。

[root@test ~]# vgscan  Reading all physical volumes.  This may take a while...  /dev/vg_test/lv_test: read failed after 0 of 4096 at 9663672156160: Input/output error  Found volume group "vg_test2" using metadata type lvm2  Found volume group "vg_test1" using metadata type lvm2

由于我们将挂载的网络盘卸载并删除,而lvm的相关配置信息没有卸载,则会报错,我可以通过以下方式解决:

[root@test ~]# dmsetup ls vg_test-lv_test (253:4)vg_image2-lv_image2 (253:5)vg_image1-lv_image1 (253:3)[root@test ~]# dmsetup remove vg_test-lv_test再次输入vgscan则正常。[root@picture-118-new ]# vgscan  Reading all physical volumes.  This may take a while...  Found volume group "/dev/vg_test/lv_test" using metadata type lvm2  Found volume group "vg_test2" using metadata type lvm2  Found volume group "vg_test1" using metadata type lvm2
1 0