PVE支持ISCSI。分2种情况。
- 第一种是挂载ISCSI到系统,进行分区,随后将虚拟机放到这个分区中去。
- 第二种是将整个lun传递给虚拟机。
本文介绍的第二种方法。
与virtmanger使用方法类似
12.5.2. Adding an iSCSI Target to virt-manager Red Hat Enterprise Linux 6 | Red Hat Customer Portal
只不过,需要在PVE面板上添加ISCSI存储,勾选直接使用LUN,再分配给虚拟机。
演示
下面演示一下。注意勾选直接使用LUN
添加成功之后,在面板上会出现这个ID存储
如果在一个iscsi Targets上映射多个lun,也可以在PVE上发现。
如下图我映射了3个lun,
PVE上也出现3个lun
在创建虚拟机的时候,分配LUN即可
在虚拟机配置选项,可以看到此设备。
原理探究:
当我们qm showcmd的时候,发现有如下命令
- -drive ‘file=/dev/disk/by-id/scsi-36589cfc000000a800b5f48ca88ce273b,if=none,id=drive-scsi0,format=raw,cache=none,aio=io_uring,detect-zeroes=on’
- -device ‘scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100’
这其实是我们之前常用的硬盘rdm直通的方式。把iscsi直接挂载到本地做为scsi盘,接着映射给虚拟机。
我们使用lsblk,果然如此。其中sdb sdc sdd3块盘对应的就是3个LUN
- root@pve1:~# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 111.8G 0 disk
- ├─sda1 8:1 0 1007K 0 part
- ├─sda2 8:2 0 512M 0 part /boot/efi
- └─sda3 8:3 0 111.3G 0 part
- ├─pve-swap 253:0 0 8G 0 lvm [SWAP]
- └─pve-root 253:1 0 103G 0 lvm /
- sdb 8:16 0 100G 0 disk
- ├─sdb1 8:17 0 50M 0 part
- ├─sdb2 8:18 0 99.4G 0 part
- └─sdb3 8:19 0 570M 0 part
- sdc 8:32 0 256G 0 disk
- └─sdc1 8:33 0 256G 0 part
- sdd 8:48 0 100G 0 disk
- ├─sdd1 8:49 0 50M 0 part
- ├─sdd2 8:50 0 99.4G 0 part
- └─sdd3 8:51 0 570M 0 part
- nvme0n1 259:0 0 953.9G 0 disk
- └─nvme0n1p1 259:1 0 953.9G 0 part /mnt/pve/Cache
优势
1、直接使用块存储性能好于文件存储
2、管理方便,可以直接使用mount命令挂载分区修改文件
劣势
1、快照由存储端管理,不能在PVE上打快照。
2、LUN,ID没有备注,所以不清楚这个lunid用于哪个虚拟机。不像常见的存储,命名格式都是vm-999-disk-0,一看就知道是哪个id