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
大小:2000G,精简模式:
开启共享(允许不同的发起端同时连接该目标):
二、挂载磁盘阵列iSCSI卷(pve-storage)。
1、查找pve-01、pve-02等节点的iSCSI initiator。
在节点1(pve-01)上查看/etc/iscsi/initiatorname.iscsi文件内容,找到pve-01的iSCSI发起名:iqn.1993-08.org.debian:01:c8a15d1fa8b
[email protected]:# 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-02的iSCSI发起名:iqn.1993-08.org.debian:01:d9fe19a3091
将两个发起名填入在PS6000S磁盘阵列创建的pve-storage卷访问设置页面,仅允许该卷被pve-01和pve-02访问:
2、获取iSCSItarget
执行命令iscsiadm -m discovery -t sendtargets –p < target IP>获取iSCSItarget
[email protected]:~# 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-storage的Connections页中直接复制iSCSI target:
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.执行磁盘分区命令:
[email protected]:/#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 VE的GUI中增加共享存储
用鼠标依次选:数据中心-存储-添加-LVM
出现添加LVM的对话框:
依次命名ID(iSCSI-lvm)、选择卷组(刚才创建的卷组vg-pve会出现在下拉菜单中,选择它即可)、节点(选所有)、选启用、选共享,然后点添加。
现在共享存储iSCSI-lvm就会出现在proxmoxVE各节点。共享存储iSCSI-lvm为LVM存储,可将VM的硬盘创建或移动到上面运行以实现HA或经过它热迁移VM。但LVM不支持精简(Thin)磁盘和快照。
参考文献:http://benpiper.com/2014/12/creating-linux-lvm-logical-volume-iscsi-san/