[P1]-iSCSI 部署-将NAS空间变为本地磁盘,并拥有与实体硬盘所有常用功能

本指南包括所需软件的安装步骤。这个指南涵盖了从安装必要的软件包到配置 iSCSI Target 并在客户端挂载使用的基本流程

前言:

[!NOTE]

为解决电脑空间不足且程序、游戏无法安装到smb共享的网络硬盘的问题,可通过iSCSI协议挂载NAS存储空间,使电脑将其识别为本地硬盘,实际使用上与物理硬盘一致

1. 安装必要的软件

服务端配置(Linux 系统)

  • 安装 targetcli 和相关工具

    • 对于基于 Red Hat 的系统(如 CentOS、RHEL、Fedora):

      sudo yum install targetcli
      
    • 对于基于 Debian 的系统(如 Ubuntu):

      sudo apt-get update
      sudo apt-get install targetcli-fb
      
  • 安装 ntfs-3g 工具(用于挂载 NTFS 文件系统):

    • 对于基于 Red Hat 的系统:

      sudo yum install ntfs-3g
      
    • 对于基于 Debian 的系统:

      sudo apt-get install ntfs-3g
      
  • 安装 lsofpsmisc(用于查找和终止占用文件系统的进程):

    • 对于基于 Red Hat 的系统:

      sudo yum install lsof psmisc
      
    • 对于基于 Debian 的系统:

      sudo apt-get install lsof psmisc
      

2. 创建后端存储

  • 进入 targetcli shell:

    sudo targetcli
    
  • 创建文件IO存储对象

    (以/home/iscsi_disk.img 路径下的img镜像为例,大小为2GB):

    /> cd /backstores/fileio
    /backstores/fileio> create file_or_dev=/home/iscsi_disk.img name=my_iscsi_disk size=2G
    

3. 配置 iSCSI Target

  • 创建一个新的 iSCSI Target

    (使用合适的 IQN,例如iqn.2025-02.com.example:server.target0)#名字而已,随意

    /> cd /iscsi
    /iscsi> create iqn.2025-02.com.example:server.target0
    
  • 进入新创建的 Target 的 TPG:

    /iscsi> cd iqn.2025-02.com.example:server.target0/tpg1
    
  • 添加 LUN

    (将之前创建的文件IO存储对象添加为 LUN):

    /iscsi/iqn.20...rget0/tpg1> luns/ create /backstores/fileio/my_iscsi_disk
    
  • 配置访问控制(ACL)

    (根据需要设置客户端IQN):Windows的ISCSI客户端中"配置"页面查看

请添加图片描述

/iscsi/iqn.20...rget0/tpg1> acls/ create iqn.1991-05.com.microsoft:desktop-tcn6g45(换成自己的)
  • 禁用认证(如果适用):

    /iscsi/iqn.20...rget0/tpg1> set attribute authentication=0
    
  • 启用 TPG

    (通常默认已启用):

    /iscsi/iqn.20...rget0/tpg1> enable
    
  • 保存配置:

    /> cd /
    /> saveconfig
    /> exit
    

[!IMPORTANT]

请确保防火墙开放 3260 端口

  • 配置防火墙规则以允许3260开放

    sudo firewall-cmd --zone=public --add-port=3260/tcp --permanent
    sudo firewall-cmd --reload
    

[!NOTE]

(万不得已的情况下请使用此方法) 彻底关闭防火墙(请勿在生产环境中使用此命令 ,适用于CentOS 7 或 RHEL 7 及其衍生版本)
  1. 停止 firewalld 服务

    sudo systemctl stop firewalld
    
  2. 禁用 firewalld 服务,使其不会在系统启动时自动启动

    sudo systemctl disable firewalld
    
  • 重新加载 LIO 服务配置
  1. 重启 LIO 服务: 如果需要应用新的配置或者重启 LIO 服务,可以使用以下命令:

    sudo systemctl restart target
    
  2. 开机自启动 LIO 服务: 使用下面的命令确保 target 服务会在系统启动时自动运行:

    sudo systemctl enable target
    
  3. 检查 LIO 服务状态: 若要查看 target 服务的状态,可以使用:

    sudo systemctl status target
    

4. 在客户端(如 Windows 11)挂载 iSCSI Target

5.服务端查看通过iSCSI挂载到Windows 的磁盘上放入的文件

使用 parted 查看分区信息
sudo parted /home/iscsi_disk.img unit s print

命令输出如下:

[root@learn home]# sudo parted /home/iscsi_disk.img unit s print

Model:  (file)
Disk /home/iscsi_disk.img: 4194304s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End       Size      File system  Name                          标志
 1      34s     32767s    32734s                 Microsoft reserved partition  msftres
 2      32768s  4190207s  4157440s  ntfs         Basic data partition

[root@learn home]#

根据提供的 parted 输出,/home/iscsi_disk.img 文件包含两个分区:

  1. Microsoft reserved partition(微软保留分区),从第34个扇区开始,到第32767个扇区结束。
  2. Basic data partition(基本数据分区),从第32768个扇区开始,到第4190207个扇区结束,文件系统类型为 NTFS。

为了在服务端查看第二个分区(即 NTFS 分区)中的文件内容,我们需要计算正确的偏移量,并使用该偏移量挂载这个分区。

确认分区偏移量

确保使用的偏移量是正确的。根据 parted 的输出,第二个分区(NTFS 分区)从第 32768 扇区开始,每个扇区大小为 512 字节。因此,偏移量应为:

偏移量 = 32768 * 512 = 16777216 字节

我们可以再次确认分区表和偏移量是否正确:

sudo parted /home/iscsi_disk.img unit s print
  • 使用 losetup 并检查设备

首先,使用 losetup.img 文件关联到一个循环设备,并列出所有循环设备以确认是否正确关联:

sudo losetup -P -f --show /home/iscsi_disk.img

这个命令会自动找到并分配一个空闲的循环设备,并且 -P 参数会自动扫描分区表并创建相应的设备节点(如 /dev/loop0p1, /dev/loop0p2 等)。

然后,列出所有循环设备:

lsblk

应该能看到类似 /dev/loop0p1/dev/loop0p2 这样的设备节点。其中 /dev/loop0p2 应该对应于的 NTFS 分区。

[!IMPORTANT]

NTFS 分区有时候会处于不安全的状态。具体来说,Windows 可能没有完全关闭该分区(例如通过快速启动或休眠功能),这导致了文件系统元数据仍然保存在 Windows 缓存中。因此,Linux 系统会拒绝以读写模式挂载该分区。所以要使用只读模式挂载

尝试只读挂载 (方法二选一)

如果你只是想查看文件而不需要修改它们,可以尝试以只读模式挂载:

sudo mount -o ro,loop,offset=16777216 /home/iscsi_disk.img /mnt
  • 或者直接挂载已识别的分区:
sudo mount -t ntfs-3g -o ro /dev/loop0p2 /mnt
  • 完成后的清理工作:

    sudo umount /mnt
    sudo losetup -d /dev/loop0
    

6. 解决挂载点忙的问题

如果遇到挂载点忙的问题,可以使用以下命令查找并终止占用该挂载点的进程:

  • 查找占用 /mnt 的进程:

    sudo fuser -m /mnt
    sudo lsof /mnt
    
  • 终止相关进程:

    sudo kill -9 PID
    

    将PID替换为你找到的实际进程ID。

7.总结

[!NOTE]

以上步骤详细描述了如何在 Linux 服务器上安装必要的软件、配置 iSCSI Target、以及如何在客户端挂载和使用该 Target。同时也包含了如何在服务端查看通过 iSCSI 挂载的卷中的文件。每个环境可能有其特定的需求或限制,请根据实际情况调整上述步骤; 如果有任何问题或需要进一步的帮助,请询问我们

邮箱:dutyc.studio@outlook.com 作者Github

<think>好的,用户想知道如何通过iSCSI将群晖NAS的磁盘挂载到本地系统,以扩展存储空间。首先,我需要回忆一下iSCSI的基本概念和工作原理。iSCSI是一种基于IP网络的存储协议,允许将远程存储设备映射为本地磁盘使用。群晖NAS支持iSCSI功能,所以应该可以通过配置实现。 接下来,我需要考虑具体的步骤。通常,配置iSCSI需要两个主要部分:在NAS上创建iSCSI Target,在客户端(本地系统)上使用iSCSI Initiator连接这个Target。用户可能对这两个步骤不太熟悉,需要详细说明。 然后,需要参考用户提供的引用内容,特别是引用[4]中的例子,里面提到了使用iscsiadm命令发现存储设备和登录存储。这可能适用于Linux系统,而如果是Windows用户,步骤会有所不同。因此,在回答中需要区分不同操作系统的配置方法。 另外,用户提到的是群晖NAS,所以需要具体说明如何在群晖的DSM界面中创建iSCSI Target。可能包括进入存储管理器,创建LUN,设置名称、大小等参数。同时,需要注意Thick Provisioning和Thin Provisioning的区别,以及是否需要启用CHAP认证,这部分可能需要简要解释以帮助用户选择。 在客户端配置部分,需要分别指导Windows和Linux用户。例如,Windows下使用iSCSI Initiator工具,输入目标地址,然后初始化和格式化磁盘。Linux下则使用iscsiadm命令,挂载后可能需要分区和创建文件系统。 还需要提醒用户注意事项,比如网络稳定性、性能影响以及备份的重要性。引用[3]提到网络可能成为瓶颈,但10G光纤可以解决,所以如果用户网络环境不佳,可能会影响性能,这一点需要指出。 最后,生成相关问题,帮助用户深入理解iSCSI的应用场景、其他协议的区别以及优化方法,这样能够提供更全面的帮助。同时,确保回答结构清晰,步骤明确,引用相关的资料,比如群晖的最佳实践和配置实例,以增强可信度。</think>### 分步指南:通过iSCSI挂载群晖NAS存储到本地系统 #### 一、iSCSI技术原理 iSCSI(Internet Small Computer System Interface)是一种基于IP网络的存储协议,可将远程存储设备映射为本地磁盘。其优势包括: - 通过标准网络协议(TCP/IP)实现存储扩展[^1] - 支持块级存储访问,性能接近本地磁盘[^3] - 可突破物理距离限制实现远程存储[^4] #### 二、群晖NAS端配置(以DS220+为例) 1. **创建iSCSI Target** - 登录DSM → 存储管理器 → iSCSI LUN - 选择「创建」→「新建iSCSI LUN」 - 设置参数: ``` LUN名称:Local_Storage 容量:根据需求设置(如10TB) 空间分配:建议选择Thick Provisioning(立即分配空间) ``` - 确认启用CHAP认证(可选增强安全性) 2. **网络配置建议** - 使用独立网口配置iSCSI专用网络(推荐10GbE网卡) - 在「控制面板」→「网络」中设置静态IP - 启用Jumbo Frame(MTU=9000)提升传输效率[^3] $$ \text{理论带宽计算:} \quad \text{1GbE网络} = 125MB/s \quad \text{10GbE网络} = 1250MB/s $$ #### 三、客户端配置(以Windows/Linux为例) **Windows系统:** 1. 打开「iSCSI发起程序」 2. 输入NAS的IP地址 → 发现门户 3. 在「目标」选项卡选择创建的LUN → 连接 4. 磁盘管理器中初始化新磁盘: ```powershell Initialize-Disk -Number <磁盘编号> -PartitionStyle GPT New-Partition -DiskNumber <磁盘编号> -UseMaximumSize Format-Volume -DriveLetter X -FileSystem NTFS ``` **Linux系统(Ubuntu示例):** ```bash # 安装客户端工具 sudo apt install open-iscsi # 发现目标 sudo iscsiadm -m discovery -t sendtargets -p NAS_IP # 连接目标 sudo iscsiadm -m node -T iqn.2000-01.com.synology:Local_Storage -l # 分区格式化 sudo fdisk /dev/sdb # 创建新分区 sudo mkfs.ext4 /dev/sdb1 sudo mount /dev/sdb1 /mnt/nas_storage ``` #### 四、验证优化 1. 执行速度测试: ```bash # Linux dd if=/dev/zero of=/mnt/nas_storage/testfile bs=1G count=5 # Windows diskspd.exe -c5G -b4K -t2 -o2 -r -w0 X:\testfile ``` 2. 建议启用巨帧(需交换机支持) 3. 通过MPIO实现多路径冗余(需多网卡支持) #### 注意事项 1. 网络稳定性直接影响存储可靠性 2. 建议将iSCSI流量其他网络流量隔离 3. 定期执行`iscsiadm -m session -R`刷新连接 4. 重要数据仍需实施备份策略[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值