将一台闲置的服务器或性能强劲的计算机转变为功能强大的网络附加存储(NAS),是提升数据管理效率和家庭/办公网络体验的绝佳方式,CentOS 以其卓越的稳定性和企业级特性,成为构建自制 NAS 系统的理想操作系统,本教程将引导您在 CentOS 系统上,一步步搭建一个基础但功能完备的 NAS。
准备工作
在开始之前,请确保您已具备以下条件:
- 一台已安装 CentOS 7/8 Stream 系统的计算机。
- 至少一块专用于存储数据的硬盘(假设为
/dev/sdb
)。 - 稳定的网络连接。
- 具有
sudo
权限的用户账户。
磁盘识别、分区与挂载
这是构建 NAS 的基石,我们需要将数据盘正确地接入系统。
识别新硬盘:
使用lsblk
命令查看系统已识别的磁盘,您应该能看到系统盘(如/dev/sda
)和您准备的数据盘(如/dev/sdb
)。lsblk
创建分区:
我们使用fdisk
工具对/dev/sdb
进行分区。sudo fdisk /dev/sdb
在
fdisk
交互界面中,依次输入以下指令:n
:创建新分区。p
:选择主分区类型。1
:分区编号。- 按两次回车:使用默认的起始和结束扇区,将整个磁盘划为一个区。
w
:保存并退出。
格式化分区:
CentOS 默认推荐使用 XFS 文件系统,它对大文件处理和高并发读写性能优异。sudo mkfs.xfs /dev/sdb1
挂载与开机自动挂载:
创建挂载点,并将分区挂载上去,为了确保重启后挂载依然有效,需要编辑/etc/fstab
文件。# 创建挂载目录 sudo mkdir /data # 临时挂载 sudo mount /dev/sdb1 /data # 获取分区 UUID,用于 fstab 配置,更稳定 sudo blkid /dev/sdb1 # 编辑 fstab 文件 sudo vi /etc/fstab
在
fstab
文件末尾添加一行(请将UUID="your-uuid"
替换为上一步获取的实际 UUID):UUID="your-uuid" /data xfs defaults 0 0
保存并退出后,执行
sudo mount -a
验证配置无误。
配置 Samba 服务(用于 Windows/macOS 访问)
Samba 是实现跨平台文件共享的标准协议。
安装 Samba:
sudo yum install -y samba samba-common
配置共享目录:
备份并编辑主配置文件/etc/samba/smb.conf
。sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak sudo vi /etc/samba/smb.conf
在文件末尾添加以下共享定义:
[NAS_Data] comment = My CentOS NAS Share path = /data browseable = yes writable = yes guest ok = no valid users = @smbusers
创建 Samba 用户:
Samba 用户需要是系统已存在的用户,我们先创建一个系统用户,再为其设置 Samba 密码。sudo useradd smbuser sudo smbpasswd -a smbuser
根据提示设置 Samba 访问密码。
启动服务并配置防火墙:
# 启动并设置开机自启 sudo systemctl enable smb nmb sudo systemctl start smb nmb # 放行防火墙端口 sudo firewall-cmd --permanent --add-service=samba sudo firewall-cmd --reload
您可以在 Windows 或 macOS 的网络中找到您的 CentOS NAS,并使用
smbuser
账户登录访问。
配置 NFS 服务(用于 Linux 访问)
NFS 为 Linux 客户端提供了更高效、原生的文件共享方式。
安装 NFS 工具:
sudo yum install -y nfs-utils
配置导出目录:
编辑/etc/exports
文件,定义哪些目录可以被哪些客户端以何种权限访问。sudo vi /etc/exports
添加以下行,允许
168.1.0/24
网段内的所有客户端读写访问/data
目录:/data 192.168.1.0/24(rw,sync,no_subtree_check)
启动服务并配置防火墙:
# 使配置生效 sudo exportfs -a # 启动并设置开机自启 sudo systemctl enable nfs-server sudo systemctl start nfs-server # 放行防火墙 sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --reload
在 Linux 客户端上,您可以使用
mount -t nfs <server-ip>:/data /mnt/nas
命令来挂载此 NFS 共享。
相关问答FAQs
问题1:为什么我无法从 Windows 访问 Samba 共享,提示权限不足或找不到网络路径?
解答:这是一个常见问题,通常由以下几个原因导致:
- 防火墙:确保 CentOS 的防火墙已放行 Samba 服务(
firewall-cmd --list-all
查看)。 - SELinux:CentOS 的 SELinux 安全机制可能会阻止访问,可以临时关闭测试(
setenforce 0
),若成功,则需正确设置 SELinux 上下文,如sudo setsebool -P samba_export_all_rw on
。 - 用户权限:确保您在 Samba 配置中指定的
valid users
存在,并且已通过smbpasswd -a
设置了密码。 - 网络连通性:使用
ping
命令确保客户端与 CentOS 服务器之间网络通畅。
问题2:Samba 和 NFS 我应该选择哪个?它们有什么区别?
解答:选择哪个取决于您的客户端环境和使用场景,下表清晰地对比了两者:
特性 | Samba (SMB/CIFS) | NFS (Network File System) |
---|---|---|
适用平台 | 跨平台,完美支持 Windows, macOS, Linux | 主要为 Unix/Linux 系统设计,Windows 支持需额外配置 |
性能 | 在混合环境中性能良好,纯 Linux 环境下略逊于 NFS | 在 Linux-to-Linux 环境中性能更高,延迟更低 |
配置复杂度 | 配置相对直观,用户管理集成在 Samba 中 | 配置简洁,但客户端和服务器端的 UID/GID 需要统一 |
推荐场景 | 家庭或办公室混合环境(Windows/Mac 用户多) | 数据中心、服务器集群、纯 Linux 开发/运维环境 |
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复