NFS配置_CentOS8_firewalld_win2016_群晖DSM_OMV_unraid
转载注明来源: 本文链接 来自osnosn的博客,写于 2021-04-09.
参考链接:
CentOS8, NFS-server
- 安装
yum install nfs-utils
,会自动安装rpcbind
。 - rpcbind会自动激活并启动,nfs-client也会自动激活和启动。
systemctl enable nfs-server
,systemctl start nfs-server
激活和启动 nfs服务。- 修改、配置
/etc/exports
文件。 exportfs -r
刷新,启用新配置。- 防火墙设置。或者干脆关闭防火墙。
firewall-cmd --add-service rpc-bind #允许 tcp+udp/111, rpcinfo用
firewall-cmd --add-service mountd #允许 tcp+udp/mountd端口, showmount用
firewall-cmd --add-service nfs #允许 tcp/nfs端口, 挂载nfs目录用
firewall-cmd --add-service nfs3 #允许 udp/nfs端口, 挂载nfs目录用
firewall-cmd --add-service rpc-bind --permanent
firewall-cmd --add-service mountd --permanent
firewall-cmd --add-service nfs --permanent
firewall-cmd --add-service nfs3 --permanent
# 或者只执行后四句,然后执行 firewall-cmd --reload
- 查看rpc的注册服务
rpcinfo -p IP
- 查看nfs的共享目录
showmount -e IP
- 挂载nfs目录
mount IP:/远端目录 /本地目录
- 官方文档:【4.11. Configuring the NFS server to run behind a firewall】,【4.14. Configuring an NFSv4-only server】
- 【如何在CentOS 8安装并配置NFS服务】,【centos8安装及配置nfs4和防火墙】
- 关于showmount -e信息泄露(CEE-1999-0554),centos8 已经废弃了tcp_wrappers,没有 hosts.allow/hosts.deny 了。
只能使用防火墙规则来解决了。- 或,
firewall-cmd --new-zone XXX
, 添加source ip,添加service=rpc-bind。 - 或,
firewall-cmd --new-ipset XXX
, 添加记录,然后用通过 rich-rule 使用这个ipset 开放111/tcp端口。
- 或,
CentOS7
- 官方文档:【8.6.3. Running NFS Behind a Firewall】,【8.6.7. Configuring an NFSv4-only Server】
- 【centos7 nfs固定端口】,【CentOS7下NFS服务安装及配置】
- 【Linux漏洞目标主机showmount -e信息泄露(CEE-1999-0554)】,【CVE-1999-0554 | 目标主机showmount -e信息泄露漏洞修复】
debian10
-
Client: 安装
apt install nfs-common
,会自动安装rpcbind
。 -
Server: 安装
apt install nfs-kernel-server
-
其他设置类似。
-
防火墙设置参考【Debian9.5 系统配置NFS配置说明】,把mountd、nlockmgr 的端口固定下来。
-
配置文件
/etc/default/nfs-kernel-server
可以设置mountd服务的固定端口,
RPCMOUNTDOPTS="--port 32767" #设置规定端口好为32767,重启服务生效
-
配置文件
/etc/modprobe.d/local.conf
可以设置nlockmgr服务的固定端口,这个local.conf文件没有需要自己创建,重启电脑生效
options lockd nlm_udpport=32768 nlm_tcpport=32768 #设置规定端口好为32768
options nfs callback_tcpport=32764
-
防火墙开放4个端口,
nft add rule inet filter input tcp dport { 111,nfs,32767,32768 } ct state { new, untracked } accept
nft add rule inet filter input udp dport { 111,nfs,32767,32768 } ct state { new, untracked } accept
-
-
关于
showmount -e
信息泄露。有 hosts.allow/hosts.deny, 设置 mountd 或 rpcbind 规则. 如 denymountd: ALL
, allowmountd: IP
即可。
群晖DSM, NFS设置
- 开启NFS。
控制面板
->文件服务
->启动NFS服务
-> 勾上v4.1的支持。
- 设置某个目录的nfs权限。
控制面板
->共享文件夹
-> 选择目录 ->编辑
->NFS权限
->新增
- 官方文档:【DSM-NFS 服务】
- 官方文档:【DSM-创建共享文件夹】, 如果是btrfs,可以启用透明压缩。
Windows server 2016
- 安装 NFS 服务
- 添加角色和功能
- 在
服务器角色
中,NFS服务
隐藏的很深。在文件和存储服务
->文件和iSCSI服务
->NFS服务器
- 在
功能
中,勾上NFS客户端
- 服务器不需要重启,就能完成安装。装完,直接就可以设置、使用。
- 设置NFS共享。
- 在选定的文件夹上点鼠标右键,选
属性
,找到NFS共享
选项卡,点管理NFS共享
。 - 添加允许共享的IP,在右下角的
权限
中。只能一个IP一个IP添加。不知道如何添加一个网段。 - NFS共享使用的字符集中,没有UTF8的选项。
- 在选定的文件夹上点鼠标右键,选
- 【Windows Server 2008 R2 添加且制成“NFS服务器”角色后与Unix客户端匿名访问常见问题】
win中有个命令Windows\System32\nfsfile.exe
与文件权限有关。 nfsfile.exe
使用不当,容易搞乱ntfs的文件权限。建议新建一个文件夹,来做测试。
另,Windows\System32\icacls.exe
或cacls.exe
是用来批量设置ntfs文件权限的命令。
OMV, OpenMediaVault
- 【OpenMediaVault 3.0.87数据分区文件系统从EXT4升级到BTRFS并启用压缩特性】
- 【Use space cache v2 by default #295】
- 【kdave/btrfs-progs】
- OMV-5.5.11, 改 btrfs 的默认挂载,启用透明压缩/硬盘压缩。(这个办法不好,请看官方文档中的办法)
- 修改
/usr/share/php/openmediavault/globals.inc
中,
\OMV\Environment::set("OMV_FSTAB_MNTOPS_BTRFS", "defaults,nofail");
改为,
\OMV\Environment::set("OMV_FSTAB_MNTOPS_BTRFS", "defaults,nofail,space_cache=v2,compress=lzo,autodefrag,commit=5,noatime");
- 重启服务
service openmediavault-engined restart
生效。或用monit restart omv-engined
- 今后,只要把磁盘格式化为 btrfs, 重新挂载后, 就会启用透明压缩。
- 如果 omv 升级/更新,会导致上面的修改丢失,影响新挂载的硬盘。除非重新修改。
- 已经挂载的 btrfs 文件系统的压缩参数,不会因为上述修改的丢失而丢失。
因为已挂载文件系统的参数,是写入/etc/fstab
中的,不会丢失。
- 修改
- OMV-5.5.11, btrfs 启用透明压缩/硬盘压缩。按官方文档的做法。
- 【openmediavault 5.x documentation】
【Filesystem Environmental Variables】,
【Custom Configuration】 - 修改 btrfs 的默认挂载参数。
omv-env set OMV_FSTAB_MNTOPS_BTRFS "defaults,nofail,space_cache=v2,compress-force=lzo,autodefrag,commit=5,noatime"
monit restart omv-engined
重启这个服务生效
- 【openmediavault 5.x documentation】
- 挂载参数说明:
- 目前btrfs支持lzo zlib两种算法。btrfs的压缩默认对不易压缩的文件直接存储。
加上-force后,强制压缩所有文件。如compress-force=lzo
- 如果是 TB 级的硬盘,建议用
space_cache=v2
。小硬盘无所谓。
写盘延时,如果想立即写盘commit=0
- 如果硬盘>2TB,挂载时用了
space_cache
,想启用space_cache=v2
。参考【btrfs-man5(5) manual page】
先umount
,再mount -o clear_cache,space_cache=v2 xxx xxx
就可以了。(7TB数据重建cache约需8分钟)
直接mount -o remount,clear_cache,space_cache=v2 xxx xxx
似乎不行。 - 已经挂载的文件系统,想修改挂载参数。但是不想在管理界面,把它们重新挂载一遍。那么去后台处理。
修改/etc/openmediavault/config.xml
中的挂载参数。
然后执行omv-salt deploy run fstab
更新 /etc/fstab 文件。
然后 reboot 整个 omv 生效。
- 目前btrfs支持lzo zlib两种算法。btrfs的压缩默认对不易压缩的文件直接存储。
- omv 挂载磁盘是通过 label 名称,不允许 label 中包含空格。
- 查看/修改 btrfs 的 label, 使用命令,
查看:btrfs filesystem label /dev/md127
; 这个命令要等6秒才输出,不知为什么。
修改:btrfs filesystem label /dev/md127 newlabel_name
;
- 查看/修改 btrfs 的 label, 使用命令,
- omv 的 NFS 共享,支持 nfs4.2 协议。
mount IP:/export/share local_dir
是 vers=3;mount IP:/share local_dir
是 vers=4.2;
- 关于
showmount -e
信息泄露。有 hosts.allow/hosts.deny, 设置 mountd 或 rpcbind 规则. 如 denymountd: ALL
, allowmountd: IP
即可。
OMV, OpenMediaVault 添加硬盘
- 硬盘插上之后。
omv的web管理界面,"存储器"-->"磁盘" 可以见到新插入硬盘的设备名称。比如: sdc, sdd - 如果硬盘来自 群晖。
因为硬盘已经被群晖分区/格式化过。omv可以直接识别。
管理界面,"存储器"-->"文件系统"。
能见到硬盘分区的文件系统。未挂载。
如果没见到,就添加,设备选 md开头的设备(可以在终端中用lsblk
确定)。文件系统格式,可以在终端用parted
命令来显示/确定。 - 如果是全新硬盘。
管理界面,"存储器"-->"文件系统" 不会有显示。
点击 "创建",选择 "设备"(别选错,否则一会格式化就丢数据了),填 "标签",选择 "文件系统"(btrfs支持透明压缩)。
然后系统提示,是否格式化,选 "是"。等待格式化完成。
就能见到硬盘分区的文件系统。未挂载。 - 格式化时指定space_cache=v2为默认参数(开发中的功能,目前还不能用)。
未来 mkfs.btrfs 将会支持 -R free-space-tree 这个参数。(目前还不可用)
可以考虑修改全局变量 OMV_MKFS_OPTIONS_BTRFS 把上述参数加进去。 - 选择你要挂载的文件系统 (群晖的数据分区,或者刚格式化的分区),点击 "挂载"。
- 如果用 btrfs。命令行,检查一下挂载参数是不是
space_cache=v2
,如果不是,
先umount
,再mount -o clear_cache,space_cache=v2 xxx xxx
就可以了。 - 另外,如果用 btrfs。支持子卷。
- 群晖 默认创建了一个子卷
@syno
,分区默认挂载在subvol=/@syno
上。 - omv 格式化的硬盘,没有创建子卷,默认挂载在 subvol=/ 上
如果想效仿。在挂载后。登陆后台,cd /srv/dev-disk-by-id......(新硬盘挂载的目录)
,然后执行两个命令。
btrfs subvolume create myvol_name
,
btrfs subvolume set-default myvol_name
然后,在 omv 的管理界面 "卸载" 再重新 "挂载"。
最后检查一下,挂载后,子卷中的子目录的 owner 和 mode,应该是drwxrwsr-x root users 目录
。
(子卷本身,如"/@syno",是 755。即drwxr-xr-x root root
)
如果不是,则chgrp users 目录
,chmod 2775 目录
。或者chmod 775 目录; chmod g+s 目录
。
不改正确的话,共享出去的目录,没有写权限。
- 群晖 默认创建了一个子卷
- 管理界面,"访问权限管理"-->"共享文件夹",点击 "添加"。
写 "名称",选 "设备" ..... 填好就 "保存"。 - 然后去配置 SMB/CIFS,NFS 或者 FTP。就行了。
- SMB,在管理界面,"服务"-->"SMB/CIFS"-->"共享"。添加共享目录。
- NFS,在管理界面,"服务"-->"NFS"-->"共享"。添加共享目录。
- FTP,在管理界面,"服务"-->"FTP"-->"共享"。添加共享目录。
点击查看 群晖 omv 硬盘分区表的不同
群晖 创建的硬盘的分区
fdisk: Device Start End Sectors Size Type /dev/sdc1 2048 4982527 4980480 2.4G Linux RAID /dev/sdc2 4982528 9176831 4194304 2G Linux RAID /dev/sdc3 9437184 15627848351 15618411168 7.3T Linux RAID parted: Number Start End Size File system Name Flags 1 1049kB 2551MB 2550MB ext4 raid 2 2551MB 4699MB 2147MB linux-swap(v1) raid 3 4832MB 8001GB 7997GB raid
omv 创建的分区
fdisk: Device Start End Sectors Size Type /dev/sdb1 2048 268435422 268433375 128G Linux filesystem parted: Number Start End Size File system Name Flags 1 1049kB 137GB 137GB btrfs
UnRAID
- 【UnRAID_6.9.1_配置_设置】
- 只支持vers=3,不支持NFS4。
haneWIN NFS
- 这是一个windows平台下的第三方nfs server,需要注册。https://www.hanewin.net/nfs-e.htm
- 在win10上,非常轻量,非常好用。支持 NFS2, NFS3 。还不支持 NFS4.
- 目前是 v1.2.59 (2021-6-10)
- 有两个版:安装版,可以作为系统服务随系统启动而启动。portable(便携绿色版),手工启动执行。
- 安装版,安装后,如果输入注册码后无法注册,或启动nfs服务显示“权限拒绝”,重启整个系统试试,通常能解决。
- 防火墙设置: windows防火墙 -> 允许应用通过防火墙 -> 允许其他应用 ,
添加C:\Program Files\nfsd\pmapd.exe
和C:\Program Files\nfsd\nfsd.exe
允许通过防火墙,即可。 - 设置共享目录:【见 NFS manual】
不加-range
参数,IP列表为,空格隔开的单个IP。
加上(勾上)-range
参数,IP列表中,每两个IP,解释为一个IP段。
比如192.168.1.5 192.168.1.30 10.1.1.1 10.1.1.20
则为两个IP段 "192.168.1.5-30","10.1.1.1-20" - 被共享的win目录,不要有“隐藏”属性,否则haneWIN NFS拒绝读写,导致访问共享时
Access deny
拒绝访问。 - 没有
showmount -e
信息泄露。因为可以配置,无权限的IP,不可见。
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/14638535.html 来自osnosn的博客.