iSCSI磁盘阵列用作Proxmox VE的LVM共享存储


  proxmox作为开源的虚拟化管理平台,支持集群管理和HA。在一般的中小规模虚拟化应用,完全可以替代VMware。VM热迁移、HA高可用等作为虚拟化应用的重要功能,必须用到共享存储。从其官方资料和一些网上资料称,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph等。

  笔者用Proxmox VE 4.4在两台DELL R730服务器建立了两个节点(pve-01和pve-02)的群集。拟在一台iSCSI的DELL PS6000E磁盘阵列上划出一个2T的卷作为共享存储。

  之前在VMware的vCenter中作过类似的应用,vCenter的存储可直接挂上iSCSI的卷,用VMFS文件系统可直接作为共享存储,其各项性能(如精简磁盘、快照等)与本地存储完全一样。

  所以,首先试验Proxmox VE直接挂iSCSI卷,发现VM也可创建在该卷上,但VM的磁盘将占用整个卷的空间。查询Proxmox VE的帮助文件Proxmox VE Storage中Open-iSCSI initiator一节中提到:

  If you want to use LVM on top of iSCSI, it make sense to setcontent none. That way it is not possible to create VMs using iSCSI LUNs directly.

  即不可能直接使用iSCSI LUN创建VM,需要用LVM on top of iSCSI。即要在iSCSI LUN上建立LVM。按此提示,笔者作了以下实验,成功地创建了共享存储,实现了VM的热迁移、HA等。

  

一、在PS6000E磁盘阵列创建用于PVE共享存储的卷(Volume):

 

卷名:pve-storage

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_服务器&存储


大小:2000G,精简模式:

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_iSCSI_02


开启共享(允许不同的发起端同时连接该目标):

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_proxmox_03

 

 

二、挂载磁盘阵列iSCSI卷(pve-storage)。

1、查找pve-01pve-02等节点的iSCSI initiator

在节点1(pve-01)上查看/etc/iscsi/initiatorname.iscsi文件内容,找到pve-01iSCSI发起名:iqn.1993-08.org.debian:01:c8a15d1fa8b

 

root@pve-01:# cat /etc/iscsi/initiatorname.iscsi

## DO NOT EDIT OR REMOVE THIS FILE!

## If you remove this file, theiSCSI daemon will not start.

## If you change the InitiatorName,existing access control lists

## may reject this initiator.  The InitiatorName must be unique

## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.

InitiatorName=iqn.1993-08.org.debian:01:c8a15d1fa8b

 

同样方式在1(pve-02)上查看/etc/iscsi/initiatorname.iscsi文件内容,可找到pve-02iSCSI发起名:iqn.1993-08.org.debian:01:d9fe19a3091

将两个发起名填入在PS6000S磁盘阵列创建的pve-storage卷访问设置页面,仅允许该卷被pve-01pve-02访问:

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_服务器&存储_04

2、获取iSCSItarget

  执行命令iscsiadm -m discovery -t sendtargets –p < target IP>获取iSCSItarget


root@pve-01:~# iscsiadm -m discovery -t sendtargets -p 192.168.1.254

192.168.1.254:3260,1 iqn.2001-05.com.equallogic:0-8a0906-a05065a08-f053c73a5da5881d-pve-storage

  也可在PS6000E pve-storageConnections页中直接复制iSCSI target

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_iSCSI_05


3、登录iSCSI目标

在各节点上分别执行以下操作登录iSCSI目标

a.执行命令iscsiadm -m node -T <iSCSI-target> -p <target-IP> -l登录iSCSI目标:

iscsiadm -m node -Tiqn.2001-05.com.equallogic:0-8a0906-a05065a08-f053c73a5da5881d-pve-storage -p192.168.1.254 –l

b.为了重启系统能自动登录目标,执行以下命令:

iscsiadm -m node -p 192.168.1.254 --opupdate -n node.startup -v automatic

现在,在该节点上增加了新的磁盘/dev/sdb(本地磁盘只有/dev/sda一个)

依次在其它节点(pve-02)执行上述登录操作(a.b.),将PS6000E上的pve-strage卷挂到各节点。

 

三、在iSCSI磁盘 /dev/sdb上创建LVM分区、创建物理卷、创建卷组(只在某一个节点如pve-01进行如下操作即可。不能在其它节点上再次操作)

 

a.执行磁盘分区命令:

root@pve-01:/#fdisk /dev/sdb

 

Welcome to fdisk(util-linux 2.25.2).

Changes will remainin memory only, until you decide to write them.

Be careful beforeusing the write command.

 

Command (m forhelp):g      (建立GPT分区表)

…………

Command (m forhelp):n      (建立一个新的分区,输入分区号、起始结束扇区等)

…………

Command (m forhelp):t      (改变分区类型)

 

Selected partition1

Partition type(type L to list all types):23  (分区1的类型改变为Linux LVM)

 

Command(m for help): p      (查看分区表)

Disk/dev/sdb: 2 TiB, 2147494133760 bytes, 4194324480 sectors

Units:sectors of 1 * 512 = 512 bytes

Sectorsize (logical/physical): 512 bytes / 512 bytes

I/Osize (minimum/optimal): 512 bytes / 512 bytes

Disklabeltype: gpt           (分区表类型为GPT)

Diskidentifier: 97D04321-DE97-4001-A68B-84585F6EAC93

 

Device               Start                  End                     Sectors              Size  Type

/dev/sdb1         34              4194324446     4194324413     2T     Linux LVM (分区类型为Linux LVM)

 

Command(m for help): w      (写入磁盘并退出fdisk)

 

b.在分区/dev/sdb1上创建物理卷physical volume (PV)

pvcreate /dev/sdb1

      c.创建卷组volume group (VG)VG名为“vg-pve

vgcreate vg-pve/dev/sdb1

 

至此,iSCSI共享存储已准备就绪。可供proxmoxVE使用了。


四、在proxmox VEGUI中增加共享存储

  用鼠标依次选:数据中心-存储-添加-LVM

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_服务器&存储_06

  出现添加LVM的对话框:

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储_服务器&存储_07

依次命名ID(iSCSI-lvm)、选择卷组(刚才创建的卷组vg-pve会出现在下拉菜单中,选择它即可)、节点(选所有)、选启用、选共享,然后点添加。

现在共享存储iSCSI-lvm就会出现在proxmoxVE各节点。共享存储iSCSI-lvmLVM存储,可将VM的硬盘创建或移动到上面运行以实现HA或经过它热迁移VM。但LVM不支持精简(Thin)磁盘和快照。

参考文献http://benpiper.com/2014/12/creating-linux-lvm-logical-volume-iscsi-san/