0.背景
由于我的笔记本存储空间告急,但是NAS上的空间还很富裕,于是尝试将NAS的空间挂载到笔记本上使用。我想用来做新创建虚拟机的硬盘,smb/cifs共享肯定不适用在这方面,于是转头看向了ISCSI。
但由于我的NAS为了方便管理,使用的是Windows 10 LTSC系统,无法创建ISCSI Server,但好在电脑有Hyper-V,于是设想创建一个Centos虚拟机,在虚拟机上安装ISCSI服务。
NAS是低功耗的J1900,4G内存,带一个2t的酷狼硬盘,带一个centos的虚拟机应该还没啥问题
创建一个Centos 8的虚拟机,交换机选择桥接模式,分配了30G的空间作为系统盘,打算随后挂载数据盘。
1.系统环境设置
首先设置系统环境
1.1 固定ip
使用ip addr
命令获取到网卡接口名称为eth0
# 设置ip地址
nmcli connection modify eth0 ipv4.address 192.168.1.113
# 设置网关地址
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
# 设置DNS地址
nmcli connection modify eth0 ipv4.dns "8.8.8.8 8.8.4.4"
# 重新启动网络
nmcli connection down eth0 && nmcli connection up eth0
随后使用新ip即可连接网络。
1.2 换源
由于centos 8已经停止支持,所以需要更换一下软件源
# 备份原文件
mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*repo /etc/yum.repos.d/backup
# 下载阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
# 清理缓存
yum clean all && yum makecache
测试可以正常使用。
2.设置数据盘
将虚拟机关机,随后在Hyper-V的“虚拟机设置/IDE控制器”中,新建一块硬盘驱动器。
新建一块“VHDX”格式的虚拟硬盘,类型选择扩展
,大小先设置为512GB,名字设置成data.vhdx
并修改存储路径。
随后启动虚拟机,使用lsblk
确定硬盘是否添加成功
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─cl-root 253:0 0 26G 0 lvm /
└─cl-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 512G 0 disk
sr0 11:0 1 1024M 0 rom
可以看到,系统已经成功识别了一个512G的硬盘,并将其命名为“sdb”。
2.1 格式化数据盘并挂载
注意:以下命令均建立在root权限上:
使用 fdisk
创建一个新的分区:
fdisk /dev/sdb
随后:
g
创建一个新的GPT分区表
n
创建新分区
分区号 (1-128, 默认 1): 按回车选择默认
第一个扇区 (2048-1073741790, 默认 2048):按回车选择默认
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-1073741790, 默认 1073741790):按回车选择默认
选择默认即可
w
保存更改并退出
创建一个物理卷(Physical volume)
pvcreate /dev/sdb1
创建一个卷组
vgcreate vgroup1 /dev/sdb1
创建逻辑卷
lvcreate -l 100%FREE -n mylv vgroup1
将逻辑卷格式化为ext4
mkfs.ext4 /dev/vgroup1/mylv
创建一个挂载点目录
mkdir /mnt/iscsidata
挂载目录
mount /dev/vgroup1/mylv /mnt/iscsidata
随后设置开机自动挂载此目录
echo '/dev/vgroup1/mylv /mnt/iscsidata ext4 defaults 0 0' | tee -a /etc/fstab
3.配置iscsi服务
3.1 安装软件包
yum install targetcli -y
systemctl start target
systemctl enable target
同时为文件夹设置权限,防止出现奇奇怪怪的问题
chmod -R 0755 /mnt/iscsidata
3.2 配置iSCSI
# 卸载之前可能挂载在 /mnt/iscsidata 上的文件系统,确保无冲突
umount /mnt/iscsidata
# 进入targetcli环境
targetcli
# 创建一个存储对象,关联到 LVM 逻辑卷 /dev/vgroup1/mylv
cd /backstores/block
create mylvmbackstore /dev/vgroup1/mylv
# 切换到 iSCSI 目录,创建一个新的 iSCSI Target,名称为 iqn.2024-01.cn.foxhank:mytarget
# 这里的名称可以自行设置,格式为iqn.yyyy-mm.reverse.domain.name:identifier
# yyyy-mm 表示年份和月份,用于确保名称的唯一性;
# reverse.domain.name 是反向域名格式,比如com.example;
# 最后的 identifier 是自定义部分,用来区分不同的目标。
cd /iscsi
create iqn.2024-01.cn.foxhank:mytarget
# 进入新创建的 iSCSI Target 的 TPG1下的 LUNs 子目录
cd iqn.2024-01.cn.foxhank:mytarget/tpg1/luns
# 在当前 TPG 中创建一个 LUN ,将之前创建的 backstore 'mylvmbackstore' 关联到此 LUN
create /backstores/block/mylvmbackstore
# 保存配置并退出
exit
结果如下:
[root@bogon ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> cd /backstores/block
/backstores/block> create mylvmbackstore /dev/vgroup1/mylv
Created block storage object mylvmbackstore using /dev/vgroup1/mylv.
> /iscsi create iqn.2024-01.cn.foxhank:mytarget
Created target iqn.2024-01.cn.foxhank:mytarget.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi/iqn.20...get/tpg1/luns> create /backstores/block/mylvmbackstore
Created LUN 0.
/iscsi/iqn.20...get/tpg1/luns> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json
至此,iscsi设备已经配置完毕。
3.3 设置授权
虽然现在已经配置完毕,但是使用iSCSI发起程序直接连接,会提示“授权失败”。
观察/var/log/messages日志文件,显示
Jan 15 16:40:17 bogon kernel: iSCSI Initiator Node: iqn.1991-05.com.microsoft:honor-magicbook14 is not authorized to access iSCSI target portal group: 1.
Jan 15 16:40:17 bogon kernel: iSCSI Login negotiation failed.
问题出在没有授权上。
本机名为iqn.1991-05.com.microsoft:honor-magicbook14
,所以需要对本机进行授权
# 进入命令行
cd targetcli
# 进入到目标的TPG 1
cd /iscsi/iqn.2024-01.cn.foxhank:mytarget/tpg1/acls/
# 创建新的ACL授权发起程序访问
create iqn.1991-05.com.microsoft:honor-magicbook14
# 保存配置并退出
saveconfig
exit
然后在Windows系统中打开iSCSI发起程序(开始/Windows工具/iSCSI发起程序),目标栏中输入服务器ip地址,随后点击“快速链接”。
若成功,状态就变成“已连接”
随后进入计算机管理/磁盘管理中,就可以看到一块新磁盘
初始化此硬盘,新建一个简单卷并指定盘符,随后就可使用此块硬盘了。
由于我的服务端存在瓶颈,速度不是很快,但也能接受,拿来存一些冷数据还是很好的