本文最后更新于 2025-09-28,文章内容可能已经过时。

一、FreeNAS 虚拟机安装与配置

1.1 新建虚拟机

VMware 配置要求:

  • 操作系统类型:FreeBSD 12 64位

  • 处理器:2核心

  • 内存:8GB

  • 硬盘1:20GB(系统盘,SCSI控制器)

  • 硬盘2:20GB × 3(数据盘,SATA控制器)

  • 硬盘3:15GB(缓存盘,SCSI控制器)

  • 注意: I/O控制器选择 LSI Logic SAS 可以解决硬盘不识别的问题,但是可能会遇到系统安装引导无法创建的问题

1.2 安装 FreeNAS 系统

# 启动安装界面后选择:
1. Install/Upgrade
2. 选择系统磁盘(da0)
# 注意需要使用space键进行选择,Enter确认
3. 确认安装
4. 设置root密码
5. 选择启动方式(BIOS或UEFI)

安装完成需要弹出安装介质

1.3 初始配置

安装完成后,控制台显示管理IP地址(如192.168.140.149)
在浏览器中输入:https://IP地址 进入Web管理界面

二、iSCSI 块存储配置

2.1 创建存储池

Web界面操作:

  1. Storage → Pools → ADD

  2. 名称:FreeNAS

  3. 选择3块20GB SATA硬盘加入到数据VDev 15GB SCIS硬盘加入到缓存Vdev

  4. 创建池

2.2 创建数据集和ZVOL

Web界面操作:

创建数据集:

  1. Storage → Pools → 点击FreeNAS池 → Add DATASET

  2. 名称:iSCSI

创建Zvol:

  1. Storage → Pools → 点击FreeNAS池 → Add ZVOL

  2. 名称:iSCSI

  3. 大小:5GB

2.3 配置iSCSI服务

在配置服务之前需要在服务一栏中打开对应服务并设置自启

Web界面操作:

2.3.1 全局配置

  • Services → iSCSI → 配置

  • Base Name:iqn.2005-10.org.freenas.ctl

2.3.2 Portals配置

  • Portals → ADD

  • IP地址:0.0.0.0,端口:3260

2.3.3 Initiators配置

  • Initiators → ADD

  • Initiators:ALL

2.3.4 Authorized Access

  • 如需认证可配置CHAP用户

2.3.5 Targets配置

  • Targets → ADD

  • Target Name:iqn.2005-10.org.freenas.ctl:iscsi

2.3.6 Extents配置

  • Extents → ADD

  • 名称:iscsi-extent

  • 类型:Device

  • 设备:zvol/FreeNAS/iscsi/zvol0

2.3.7 Associated Targets

  • 关联Target和Extent

2.3.8 启动iSCSI服务

  • Services → iSCSI → 启动

三、CentOS 客户端配置

3.1 换源并安装客户端

# 备份原有源
cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup/

# 下载阿里云源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 安装iSCSI客户端
yum install -y iscsi-initiator-utils nfs-utils

# 配置initiator名称
echo "InitiatorName=iqn.2022-10.com.example:centos-client" > /etc/iscsi/initiatorname.iscsi

# 重启服务
systemctl restart iscsid
systemctl enable iscsid

3.2 连接iSCSI目标

# 发现目标
iscsiadm -m discovery -t sendtargets -p 192.168.140.149:3260

# 查看发现的目标
iscsiadm -m node

# 登录目标
iscsiadm -m node -l

# 查看新磁盘
lsblk
# 应看到新磁盘 sdb

3.3 分区格式化并挂载

# 分区
fdisk /dev/sdb
# 在fdisk中:n → p → 1 → 回车 → 回车 → w

# 格式化
mkfs.xfs /dev/sdb1

# 创建挂载点
mkdir -p /mnt/public

# 挂载
mount /dev/sdb1 /mnt/public

# 验证
df -h /mnt/public

3.4 测试iSCSI功能

# 创建测试文件
echo "iSCSI Test File" > /mnt/public/test-iscsi.txt

# 查看文件
ls -la /mnt/public/

# 设置开机自动挂载
echo "/dev/sdb1 /mnt/public xfs defaults,_netdev 0 0" >> /etc/fstab

3.5 服务端验证

可以在服务端shell中对共享文件进行查询,但是从理论来说我们之前设置的iSCSI是在块设备级别工作的,不是文件级别,所以从服务端不应该能够看到对应文件,书上对应步骤存在,如下。

  1. shell界面

  2. 进入到对应数据集目录下 /mnt/FreeNAS/iscsi

  3. 查看当前目录文件

四、NFS 文件共享配置

4.1 FreeNAS端NFS配置

Web界面操作:

4.1.1 创建NFS数据集

4.1.2 配置NFS共享

  • Sharing → Unix Shares (NFS) → ADD

  • Path:/mnt/FreeNAS/nfs

  • Authorized Networks:192.168.140.0/24

  • Mapall User:root

  • Mapall Group:wheel

4.1.3 启动NFS服务

  • Services → NFS → 启动

4.2 CentOS客户端NFS配置

# 安装NFS客户端(如果未安装)
yum install -y nfs-utils

# 查看可用的NFS共享
showmount -e 192.168.140.149

# 创建挂载点
mkdir -p /mnt/freenas-nfs

# 挂载NFS共享
mount -t nfs 192.168.140.149:/mnt/FreeNAS/nfs /mnt/freenas-nfs

# 测试NFS功能
touch /mnt/freenas-nfs/test-nfs.txt
echo "NFS Test" > /mnt/freenas-nfs/test-nfs.txt

# 设置开机自动挂载
echo "192.168.140.149:/mnt/FreeNAS/nfs /mnt/freenas-nfs nfs defaults,_netdev 0 0" >> /etc/fstab

4.3 服务端验证

  1. shell界面

  2. 进入到对应数据集目录下 /mnt/FreeNAS/NFS

  3. 查看当前目录文件

五、WebDAV 配置

5.1 FreeNAS端WebDAV配置

Web界面操作:

5.1.1 创建WebDAV数据集

# 创建专门用于WebDAV的数据集
zfs create FreeNAS/webdav

5.1.2 配置WebDAV共享

  • Sharing → WebDAV Shares → ADD

  • Path:/mnt/FreeNAS/webdav

  • Name:webdav

  • Permission:Read/Write

  • Change User & Group:root

5.1.3 配置WebDAV服务

  • Services → WebDAV → 配置

  • 协议:HTTP(端口8080)或HTTPS(端口8081)

  • 认证类型:BASIC

  • 启动WebDAV服务

5.2 客户端访问WebDAV

5.2.1 浏览器访问

http://192.168.140.149:8080/
或
http://192.168.140.149:8080/webdav

5.2.2 登录

5.2.3 进入页面

六、验证与测试

6.1 服务状态检查

FreeNAS端检查:

# 检查iSCSI服务
service iscsi_target status

# 检查NFS服务
service nfsd status

# 检查WebDAV服务
service apache24 status

# 检查存储池状态
zpool status
zfs list

6.2 客户端验证

CentOS端验证命令:

# 检查iSCSI连接
iscsiadm -m session

# 检查挂载点
df -h | grep -E '(public|freenas)'

# 检查NFS挂载
mount | grep nfs

# 测试文件操作
echo "综合测试" > /mnt/public/final-test.txt
cp /mnt/public/final-test.txt /mnt/freenas-nfs/

6.3 故障排查命令

# 查看系统日志
tail -f /var/log/messages

# 检查网络连接
ping 192.168.140.149
telnet 192.168.140.149 3260    # iSCSI端口
telnet 192.168.140.149 2049    # NFS端口
telnet 192.168.140.149 8080    # WebDAV端口

# 检查防火墙
systemctl status firewalld