一、 ISCSI存储

本例测试环境:

DELL R620 E5-2630 v2,128G,250SSD*2,Raid1 三台,安装Proxmox VE 5.X

Synology DS1817+ 双核8G .4千兆口(添加一块10G光纤),2TB*8,Raid1

Synology上已建好Target-1 iqn.2000-01.com.synology:DataCenter001.Target-1fcb817738X

1. 获取查看iSCSItarget

执行命令

iscsiadm -m discovery -t sendtargets –p <target IP>

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

10.91.30.224:3260,1 iqn.2000-01.com.synology:DataCenter001.Target-1.fcb8177382

2. 登录iSCSI目标

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

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

iscsiadm -m node -T iqn.2000-01.com.synology:DataCenter001.Target-1.fcb817738x -p 10.91.30.224 –l

b.为了重启系统能自动登录目标,执行以下命令:(不做此步,重启iscsi无法连接)

iscsiadm -m node -p 10.91.30.224 –op update -n node.startup -v automatic

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

3. 在iSCSI磁盘 /dev/sdb上创建LVM分区、创建物理卷、创建卷组(只在某一个节点进行如下操作即可。)

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      (改变分区类型31)

Selected partition1

Partition type(type L to list all types):31  (分区1的类型改变为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使用了。

注意:如多网卡同时连接iscsi存储,会出现多路径问题,请一个一个的添加(也可先做网口汇聚)

4. 在proxmox VE的GUI中增加共享存储

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

  出现添加LVM的对话框:

image

图4-1-1

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

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

二、 NFS存储

本节内容请参考本人另一篇文档《Openfiler2.99.1图文教程-搭创建ISCSI&NFS存储》

三、 Ceph存储

1. 搭建ceph使用本地挂载硬盘为proxmox 提供存储空间

在线安装

luminous 为ceph10.2

hammer 为ceph0.94

每个节点执行

# pveceph install --version luminous

2. 配置ceph网络

在主节点执行(在任意一个节点执行即可,执行一遍)

# pveceph init --network 10.91.30.0/24

3. 创建ceph监视器mon

可以创建多个mon,在3个节点执行创建奇数个mon

# pveceph createmon

查看mon状态

# ceph mon stat

4. 创建OSD

# pveceph createosd /dev/sdb

查看ceph osd 运行状态

# cpeh osd stat

# ceph osd tree

5. 创建存储池

# ceph osd pool create pool1 128 128

6. web登陆

https://IP:8006

结果如图

image

图4-3-1

image

图4-3-2

四、 Proxmox VE主机硬盘管理

一、硬盘管理

1查看硬盘

#fdisk -l

例如有/dev/sdb

2 新建一个分区

# sgdisk -N 1 /dev/sdb

3 创建pv

#pvcreate --metadatasize 250k -y -ff /dev/sdb1

4 创建vg

#vgcreate pve1 /dev/sdb1

5 创建lv 这里100g根据自己硬盘大小填写

#lvcreate -L 100g -n data pve1

6 转换为thin-pool

#lvconvert --type thin-pool pve1/data

7 警告:

在某些情况下,LVM不会正确计算元数据池/块大小。请检查metadatapool是否足够大。必须满足的公式是:

PoolSize / ChunkSize * 64b = MetadataPoolSize

你可以通过命令获取这些信息

#lvs -a -o name,size,chunk_size

8 增加到存储 可以在数据中心存储 直接添加lvm-thin id:lvm1, 卷组:pve1, thin pool:data

或者编辑/etc/pve/storage.cfg

lvmthin: lvm1

thinpool data

vgname pve1

content rootdir,images

Creating a Volume Group

Let’s assume we have an empty disk /dev/sdb, onto which we want to create a volume group named “vmdata”.

Caution Please note that the following commands will destroy all existing data on /dev/sdb.

First create a partition.

# sgdisk -N 1 /dev/sdb

Create a Physical Volume (PV) without confirmation and 250K metadatasize.

# pvcreate --metadatasize 250k -y -ff /dev/sdb1

Create a volume group named “vmdata” on /dev/sdb1

# vgcreate vmdata /dev/sdb1

Creating an extra LV for /var/lib/vz

This can be easily done by creating a new thin LV.

# lvcreate -n <Name> -V <Size[M,G,T]> <VG>/<LVThin_pool>

A real world example:

# lvcreate -n vz -V 10G pve/data

Now a filesystem must be created on the LV.

# mkfs.ext4 /dev/pve/vz

At last this has to be mounted.

Warning be sure that /var/lib/vz is empty. On a default installation it’s not.

To make it always accessible add the following line in /etc/fstab.

# echo '/dev/pve/vz /var/lib/vz ext4 defaults 0 2' >> /etc/fstab

Resizing the thin pool

Resize the LV and the metadata pool can be achieved with the following command.

# lvresize --size +<size[\M,G,T]> --poolmetadatasize +<size[\M,G]> <VG>/<LVThin_pool>

Note When extending the data pool, the metadata pool must also be extended.

Create a LVM-thin pool

A thin pool has to be created on top of a volume group. How to create a volume group see Section LVM.

# lvcreate -L 80G -T -n vmstore vmdata

二、增加为zfs格式:

创建存储池(type raidz 两块硬盘是raid1,三块硬盘是raid5,还可以用raidz1,2,3等高级用法)

性能对比

Stripe > Mirror

Stripe > RAIDZ1 > RAIDZ2 > RAIDZ3

数据可靠性

Mirror > Stripe

RAIDZ3 > RAIDZ2 > RAIDZ1 > Stripe

zpool create -f -o ashift=12 <pool> <type> <device> log <device-part1> cache <device-part2>

对已有pool增加缓存

zpool add -f <pool> log <device-part1> cache <device-part2>

更换失败的硬盘

zpool replace -f <pool> <old device> <new-device>

pool存储池丢失处理.no pools avaliable

查看存储池状态

#zpool status -v

删除缓存

#rm -f /etc/zfs/zpool.cache

导入存储池

#zpool import zfs-v

如果提示 -f

#zpool import -f zfs-v

如果有设置过缓存或者log,可能会提示 -m

#zpool import -f zfs-v -m

LVM使用缓存

#sda为HDD sdb为SSD

创建物理卷

pvcreate /dev/sda

pvcreate /dev/sdb

创建卷组vg

vgcreate vg /dev/sda

vgextend vg /dev/sdb

创建逻辑卷(data为存储卷,cache为缓存卷,meta为缓冲卷索引,其中cache:meta不能大于1000:1,meta最小为8M)

lvcreate -L 500G -n data /dev/sda

lvcreate -L 220G -n cache /dev/sdb

lvcreate -L 220G -n meta /dev/sdb

创建缓存池(注意cache和meta的顺序不能颠倒)

lvconvert --type cache-pool --poolmetadata vg/meta vg/cache

将存储卷加入到缓存池中(cachemode有writeback和writethrough两种模式,默认为writethrough)

lvconvert --type cache --cachepool vg/cache --cachemode writeback vg/data

注:writeback会在写入cache完成后,再写入date中

writethrough会在写入cache的同时,写入date(写入date慢于cache)