当前位置:   article > 正文

将clvm的状态改成no-clustered

clvm

简介

  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 -l
Disk /dev/sdb: 1438.7 GB, 1438679826432 bytes
255 heads, 63 sectors/track, 174909 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: 0xd3997559

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      174910  1404959744   8e  Linux LVM

Disk /dev/mapper/vg_test-test: 590.6 GB, 590633500672 bytes
255 heads, 63 sectors/track, 71807 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

Disk /dev/sdc: 1073.7 GB, 1073747066880 bytes
255 heads, 63 sectors/track, 130542 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

从上面看能够正常挂在。

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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上面提示“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
  • 1
  • 2
  • 3
  • 4

更改后,我们就可以看到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                                           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

从以上看出,虽然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
  • 1
  • 2
  • 3
  • 4

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

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

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

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

yum install gfs2-utils
  • 1

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

[root@test ~]# gfs2_tool sb /dev/cluster_vg_test/gfs_test proto lock_none
You shouldn't change any of these values if the filesystem is mounted.

Are you sure? [y/n] y

current lock protocol name = "lock_dlm"
new lock protocol name = "lock_none"
Done

#重新挂载
[root@test ~]# mount -t gfs /dev/cluster_vg_test/gfs_test /data
error mounting /dev/dm-4 on /data: No such file or directory
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

kernel: GFS2: can't find protocol lock_none
  • 1

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

[root@test ~]# gfs2_tool sb /dev/mapper/nasVG2-nasdb proto lock_nolock
You shouldn't change any of these values if the filesystem is mounted.

Are you sure? [y/n] y

current lock protocol name = "lock_none"
new lock protocol name = "lock_nolock"
Done

#重新挂载
[root@test ~]# mount -t gfs /dev/cluster_vg_test/gfs_test /data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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
  • 1
  • 2
  • 3
  • 4
  • 5

由于我们将挂载的网络盘卸载并删除,而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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/235187
推荐阅读
相关标签
  

闽ICP备14008679号