2025年samba共享服务有什么用(samba共享服务什么意思)

samba共享服务有什么用(samba共享服务什么意思)能搞定 linux 的人 居然会觉得 win 的共享难用 1 给你的 Windows 开多个一 SMB 共享专用的账号 2 给要共享的文件夹配置这个账号的访问权限 一般情况下只有系统相关的文件夹才需要手动分配权限 像是 d 盘的文件夹不需要 桌面的文件需要 3 打开网络共享设置 选择需密码访问 4 右键文件夹到属性共享栏 要在高级共享里配置访问权限 以后需要共享其他文件夹 只需要右键属性

大家好,我是讯享网,很高兴认识大家。



能搞定linux的人,居然会觉得win的共享难用?????????

1.给你的Windows开多个一SMB共享专用的账号

2.给要共享的文件夹配置这个账号的访问权限(一般情况下只有系统相关的文件夹才需要手动分配权限,像是d盘的文件夹不需要,桌面的文件需要)

3.打开网络共享设置,选择需密码访问

4.右键文件夹到属性共享栏,要在高级共享里配置访问权限。

以后需要共享其他文件夹,只需要右键属性,把共享权限打开,非常方便,有UI界面操作和已共享的图标显示,非常方便管理。

你都会配置Linux的人了,多用户操作应该知道吧,不要什么都用你Windows初始的管理员账户操作。Linux也有访问权限配置,Windows里也同样要配置的(你用Linux只有一个root账号硬莽SMB共享的另说,我不认同这种共享的安全性)。另外SMB有不同版本,为兼容老旧设备连接的,可能需要手动开一下SMB1.0兼容一下。(win10默认关闭了SMB1.0)


为什么开多一个Windows账号,很简单,你共享的文件肯定要控制好的,上密码是必须的,多个账户可以控制哪些文件夹能被远程访问,而不是没密码那种一连上家里WiFi就能把你电脑搬空;也不是登录默认帐号后什么文件夹都显示出来,文件夹翻找半天。

其实这就是部攻防史,Windows的SMB被病毒攻击了无数次了,所以微软不断的调整策略让SMB只能被可信的设备连过来(说白了就是最好是符合条件的Windows)。

其实SMB的确是很薄弱的一环,搞得运营商都默认封掉SMB的端口……

如果真的只存多媒体资料,不如考虑媒体流或者媒体服务器,只提供流媒体访问协议……安全得多……

说不重视用户体验的肯定没用过Windows98之前的系统。直接打开SMB(文件与打印机共享服务),网上邻居里面全是你局域网的电脑,进去直接C$想干啥干啥,啥都不用配置。

世界上还有比SMB方便、高效的文件共享?右键 -> 属性 -> 共享 -> 共享 -> 共享,点五下就完事儿了。

但是方便是有前提的,这个前提就是安全。

系统当然无法实际了解你的环境是否安全,你需要通过行动告诉它:

  1. 你处于专用网络中。
  2. 你共享的账户设置了密码
  3. 你没有使用SMB 1.0

如果你设置了SMB却无法使用,想想是违背了哪条。当然你也能完全禁止这些限制,但你最好清楚自己在干什么。

不会用是你的问题,不是功能的问题,功能是死的,技术性能和特性是发布是即确定的,如果说设计带宽超万兆,你自己只有几百兆,你首先得质疑自己的问题,而不是质疑功能

——————

俺不理解

我就没见过比SMB更好用的东西

起码在内网环境下如此

速度方面,起码我内网千兆是够用了,万兆用户自然有更好的选择,兼容度,说实话,很多有问题的是客户端,而不是smb本身,比如说某些APP只支持1.0协议,速度慢或者压根连不上,smb本身就是个攻击防守产物,起码现阶段的3.0,安全性和功能性已经满足它最基本的「共享与管理」的初衷

这玩意能干嘛?对我来说就两点

1.内网共享文件

2.访问要具备账户性,且权限可控

还有一点是例外话,就是最好不要弄个什么软件出来再安装

起码这2+1的条件,在Windows和Windows之间没有更简单通用的办法了,你说我想拷个十来个G的文件给室友,懒得用U盘,我俩捣鼓个局域网软件?用传?还是用那时快时慢的「共享」?

5秒钟设置一个共享文件夹拉倒

我自己的家用需求很简单,低功耗+文件共享和非本地访问,我也懒得折腾Linux,工控机直接套个Windows10配向日葵,平时配合wol唤醒,设置好管理员和访客账户,共享文件夹的时候花1分钟分配权限不就完事了么,这东西为什么都在这说难用?我用了三四年了,挺好用的,还有说连不上连不上的,起码我w对w用了四五年,十几台电脑,没有说内网访问失败的,电视/移动端有连不上的,不过多数都是客户端只支持1.0或者自身就有问题的


讯享网

我的投影用的是当贝播放器最新版(旧版本1.0协议,连接永远提示超时)

安卓和iOS用的都是FE文件管理器Pro(新版不要钱的叫猫头鹰文件)

至于Windows我只用网络发现

反正我在学校用的是这个,家里组的文件管理器也是这个,前前后后用过不下十几台电脑,我个人的手机也有七八台覆盖各种品牌,iPad,iPhone,都能连上去,没出现过乱七八糟的情况,我不知道你们为什么觉得smb不好配置问题多,这东西你可以说简陋,但是了解Windows下的基本权限结构,这东西根本不存在配置好了用不了,那只能说你配置的过程一定有问题,要么文件权限实际上不在这个账户下,要么容器权限有问题,最常见的两个,一个是网络一开始确认防火墙的时候,你选了公用网络,公用网络本身就是最大屏蔽为了安全性的,你自己不看字不选专用网络,这是用户的先导错误,怎么能算东西不好用呢?而且几乎所有的smb教程最开始就会提到检查网络是否为家庭/专用,网络发现也是在资源管理器里默认会提示你已经关闭,点一下就打开的,其次就是guest和空密码账户,这本来就是合理的,访客账户和没有密码的账户本身就应该受限或者拒绝设置

与其说smb难用,不如说你们压根没搞懂smb在Windows下最基本的逻辑,你们觉得Linux配置容易,原因就在于三方软件本身就校验了相关设置,而且本身系统环境就不设防火墙的几个过滤端口,与其说难用,不如说在Windows和Linux上的smb,你们都是什么也不懂,只是Linux的「循规蹈矩」的配置模式让你们觉得更好用,这也是为什么其他几个回答反问为什么你连Linux配置smb都搞明白了,Windows却搞不明白,他们没说明白不妨我说明白,因为你们对于smb,其实两个平台都没搞明白,Linux的教程配置是死的,所以看上去更容易配置

——

毕竟最开始写回答的是手机,懒得放图,毕竟理论速度这种东西放不放没什么实际意义,结果评论区「也就50M/s,是我故意不放图这种话都说出来了」

50M/s,50M/s就400M的速度,连千兆理论的一半都跑不到,为什么你不先质疑是不是你自己的问题?

这是机械盘,连续读取本身就有点弱,但是跑个7、800M的速度毫无问题,而且千兆内网实际的有效带宽在860~950M上下

随便截一张就是90M/s,这还和硬盘有关系,固态位置的文件100M/s问题不大

所以我把同样的文件放到固态上,这是我垃圾铠侠的缓存固态

105M/s,实打实的840M的速度,算上无线折损、千兆路由器自身、手机软件写入性能、手机系统文件结构和文件系统,这个速度在手机端已经算得上跑满千兆了

无论是「89MB/s」还是「103MB/s」,哪一个都不是「只有50M/s」吧?

我还特地又去看了一下微软的文档和其他论坛的测试,超千兆环境的测试虽然不多,但是只要能测万兆测试的,大部分跑到800M/S以上问题都不大,7G上下的带宽

1000M内网理论极限也就110MB/s,网上各路测试跑个100~110MB/s都可以看成跑满

这就说明SMB协议本身的上限显然不是千兆,也不可能因为SMB成为内网传输速度的瓶颈,所以我非常奇怪,你这「50M/s」的说法,究竟想说什么?想说SMB垃圾,只能提供50M/S的速度么?

我还特地去试了PC对PC,两者通过网线连接小米AX3000

源文件机械盘 通过SMB→固态 111MB/s平均速度

源文件固态盘 通过SMB→机械 98MB/s平均速度

smb最大的问题是很多工具不好好支持他的新版本,只支持个smb1.0,速度慢才500k,安全性低,windows都默认不开启了。windows默认的访问权限管理还不如nas提供的smb,人家还能不让你看到没权限访问的文件夹。

我用cx文件管理器,访问smb3.0速度很快

看视频用nplayer mxplayer自带的网络访问能力,拖进度条很快,nplayer支持的协议很多,mx player就只支持smb

点名批评es文件管理器,默认只支持smb1.0,vip解锁也才支持2.0

对安卓app来说,要兼容3.0也就是升级下smbj库的事情,结果都不支持

总的来说smb不弱,但是很多app只是兼容级别的,谈不上支持,这时候反而webdav更加强大,只要支持的,速度就没啥大问题,而且走http,不怕限制。

是你还没理解windows文件共享的实质,本质上是用户权限+NTFS权限,所以不要点共享,要点高级共享设置。

给本地新建个用户,专门做共享,比如一个叫share的用户,share默认是user组,开启共享后属于everyone,默认有读取权限,然后到安全选项卡里检查,无误以后就可以了。如果需要写入权限,则需要两个权限全部有写入权限,如果还要修改,则需要用户权限为完全控制,NTFS权限至少为修改。

很简单的。永远只给最低需求的权限,不要一个administrator走天下。

smb的端口,在公网是被全球封禁的。

因为这玩意儿搞瘫过全球的互联网。

当年动不动上不去网,电信回复也只能是等等吧。。。

注:SMB的端口使用445,137,138,139端口。

作为做RWKV的人,时常会听到一种恶魔的低语:“加一点attention,加一点attention,一定涨点”。

我觉得对于架构,杂交是有优势的,就如生物学里学过的“杂种优势”,能够合理的搭配“性状”,使得新物种更容易适应任务。

但还是不甘心啊,还是想追求纯粹的RNN,这个执念就像追求狗的品种要纯血一样,一旦杂交就感觉不值钱了。

归根结底,这个共享技术是Windows商业解决方案下放的产物。商业方案一般会配的有维护专员,所以共享有一大股子运维的味道在里面,你得配置好了才用得舒坦。

你看Windows对个人用户粗犷的应对和对企业盗版零容忍的态度就知道人家主要还是从企业手上挣钱,自然是对企业负责到底。个人用户不出钱,自然得不到优先照顾。不要钱给你用企业级OS,还要什么自行车?


Windows想的是这么一个状态:

既然你要共享文件,那两台电脑必须有你的账户名和相同的密码以证明俩是一个人。才能访问私有共享文件。

那如果不一样呢?guest和everyone权限,请。

更何况还有个微软账号的史山,你用Microsoft账户创建的账户,本地账户的行为很迷,比如rdp就连不上。

所以你账户对不上,对面的共享就点不进去,而且微软并没有给你机会让你手输凭据,就很迷。

一般来说除了懒政,可能的原因就是防呆免责,你设everyone出问题是你咎由自取,你要会添加凭据那默认你对网络安全账户权限管理有了解。

如果你用手机等别的平台,老老实实输入SMB和账密凭据,就没那么多幺蛾子。

以及很多人一直没意识到的一个问题:Windows是个多用户系统。以及另外一个问题,很多人连这玩意叫SMB都不知道。

开启 SMB 协议

  1. 打开「控制面板」窗口,在「类别」查看方式下单击「程序」

2. 打开「程序」窗口,单击「启用或关闭 windows 功能」

3. 打开「windows 功能」窗口,勾选 SMB 直通

4. 勾选「远程差分压缩 API 支持」


最新版文章链接:

加速 SMB 协议,让 PC 变身小型 NAS

SMB/CIFS是使用最广泛的局域网共享协议,从Windows系统到手机上的各种文件管理器都能很好的支持它,如果只需要实现最基本的局域网文件共享有SMB就够了。但注意,SMB不是互联网传输文件的方式,不要把你的SMB服务向互联网开放。

Linux上的SMB服务端实现是samba,OMV系统已经内置了samba并提供了界面便于设置。

  • 创建并挂载文件系统
  • 用户与用户组
  • 创建共享文件夹并设置权限
  • 启用SMB共享并在Windows上映射为驱动器
  • 兼容性与性能问题

如果没有使用过类Unix系统,很容易忽视“挂载”,务必注意。

1.在储存器-磁盘页检查要使用的数据盘是否已被识别

Linux可以通过软件支持Windows系统的NTFS格式,但这并不适合长期使用,不要作死。

3.挂载!挂载!挂载!一定要确认挂载上了才能算完事


为了权限管理,需要创建用户和用户组。Debian安装时创建的管理员用户或你自己通过命令行创建的用户是没有用的,因为他们缺少相应的samba权限等,请用OMV界面重新创建。

添加一个NAS-LANUser用户组,创建一个属于这个用户组的测试账户

此外系统会给自动添加一个users用户组,作为用户可以通过账号密码登陆网页控制台,但是只能修改自己的密码。


在访问权限管理-共享文件夹处添加一个新的共享文件夹,默认会在硬盘下创建一个同名文件夹,也可自行更改为其它路径。权限暂时不用修改。

然后在ACL选项中为新建的共享账号添加权限


在服务-SMB/CIFS中将共享文件夹添加进去

别忘了在设置页启用SMB服务!

在诊断-仪表盘检查一下SMB/CIFS服务是否运行。然后用Windows电脑连接它。

连接的地址可以使用主机名也可以使用IP,两种方式皆可。

\主机名.域名\共享文件夹名
\IP地址\共享文件夹名</code>

讯享网

弹出的网络凭据对话框,输入的是在NAS上创建的共享用户的用户名及密码,不是本机用户名和密码。

映射成功后在里面新建任意一个文件,并删除,测试权限设置是否正确。

注意,这里删除文件默认没有回收站!


性能由于Linux系统上的samba是逆向SMB协议的成果,效率远低于Windows自带的SMB服务端,而且是单核心王者型程序。
根据我的测试在主频只有2.1GHz的平台上,即使使用samba共享内存盘,运行4K深队列多线程测试,也只能达到10K IOPS(换算为40MB/s)左右的速度,Q1T1则只有2K IOPS(换算为8MB/s)左右。
配合内存和SSD分层缓存,可以超过本地纯机械硬盘的使用体验,但赶不上本地SSD的速度。

映射为网络驱动器之后,理论上可以被视为本地硬盘一样使用,包括安装软件和游戏等,我已经在我的NAS上安装了不少游戏。但是由于Windows系统上软件的蜜汁兼容性,总有一些打死不兼容的情况,或是只兼容使用网络名(即\IP地址\共享文件夹名\)访问而不认映射驱动器盘符的奇葩。
所以smb的主要用途是用来存储数据,而不适合安装应用程序。


NAS DIY交流群:

jq..com/? (二维码自动识别)

如果我问你,千兆网络的传输速度极限是多少?或许你会说,最大就是125MByte/s了。这差不多就是理论极限。

实际上的传输速度是远远达不到125MB/s,因为IP包有报头,SMB协议也有报头,这些东西需要占用一些传输带宽。我的samba最多能达到110MB/s的极限速度。

那么,题头的图中,155M/s的传输速度是怎么回事?


介绍这个传输速度之前,我要介绍一下我的网络构成。

我的系统中将NAS上的两个共享目录映射成为Z盘和Y盘。平时将临时文件放在Z盘中,整理时将文件从Z盘移动到Y盘。

网上邻居共享软件samba是使用微软的SMB协议,至今SMB已经发展到3.1.1版本。

不同版本的Windows所支持的SMB协议如下图。

最初我使用FreeBSD11.0版本时,采用的是samba 3.7版本,这个samba版本只支持SMB1.0协议。所以将文件从Z盘移动到Y盘时,采取的方法如下图:

也就是说,客户端将Z盘的数据先传输到本地,然后再传输回去放回到Y盘中。因为客户机和samba服务器的网络带宽只有1000M,所以传输速度跳不出来125MB/s的理论值。

聪明的你看出来问题所在,需要移动的数据和要移动到的地方都在服务器上,为何要从客户端绕一圈呢?如果能直接在服务器上进行移动,那么速度不就快了么?

是的,在SMB2.0开始,支持一种叫做Server-Side Copy的请求指令,具体可以见这里:

[MS-SMB2]: Handling a Server-Side Data Copy Request

就是将服务器端的拷贝直接在服务器内部消化,具体见下图:

通过这个做法,拷贝速度大大提高,不再取决于客户端和服务器之间的网络速度,而是服务器内部的读取和写入速度了。

在我的情况下,10盘RAIDZ2的读取+写入就是155MB/s

这个功能在samba 4.1版本开始就已经支持。

所以还在用3.x版本samba的你,还不赶紧升级?


如果你喜欢今后能多看到类似的文章,请看完之后点赞收藏分享,这样子我就可以有动力多写一些啦~

根据使用的方式来看,可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。ftp的客户可以是任意平台,samba是专门针对windows客户,而NFS则是面向linux/unix用户的。下面是三种服务器的对比情况:

各个服务器的配置

NFS服务器:

NFS是SUN Microsystem公司开发的网络文件系统,它是一种基于远程过程调用(RPC)的分布式文件系统架构。与Samba相比较,NFS的数据吞吐能力更强。

1、用命令 # rpm –qa | grep nfs检查软件包NFS是否安装 ,如果输出没有输出,表明没有被安装,请自行安装之。

2、 配置NFS服务器。用任何文本编辑器配置文件/etc/exports,来确定需要给客户共享的目录。它的基本格式为Directory Host(options) # comments ,这3个字段/列要在一行,directory与host(options)之间要有间隙,# comments 可有可无。主机选项主要是给与挂接用户什么样的权限。目录directory表示要共享出去的目录,值得注意的是,在启用NFS服务以前,系统管理员应该仔细一些,比如不小心共享了根目录/,并且给与用户读写权限,这是十分糟糕的问题。因此,尽可能少的共享目录和赋予较小的访问权限。主机名host是一个很灵活的项目,可以是单个的主机名称(由/etc/hosts得到),主机ip地址,由域名服务器解析的主机名称,IP网络—网络号和子网掩码中间用 “/”连接,NIC等。下面列举一个例子。

/data/skyboy skyboy(rw) #把目录/data/skyboy共享给主机skyboy,并且主机对目录#/home/skyboy有读写权限

/tmp 192.168.222.129(ro) #主机192.168.222.129对目录/tmp具备只读共#享权限

/media/cdrom 192.168.222.0/255.255.255.0(ro) #整个网络有读取挂接在NFS #服务器上的光驱光盘的读取权限

3、启用NFS服务。分两步:首先启用portmap,然后启用NFS服务。#service portmap start; #注意老版本使用的的方式

# service nfs start。其中portmap的功能是启用远程过程调用,有时启用NFS不能成功,不妨检查一下portmap服务是否启动(# ps aux | grep portmap)。

4、在客户端挂接NFS共享出来的目录。先在客户端创建一个挂接点,如 # mkdir /mnt/nfs ,而后使用命令把nfs服务器共享出来的目录挂接上,以第2步那个共享为例,我们挂接目录 /tmp , # mount –t nfs 192.168.222.129:/tmp /mnt/nfs //假定nfs服务器的ip地址是192.168.222.129。

5、访问NFS共享资源。接上步,改变文件目录 # cd/mnt/nfs就方便地实现了对nfs服务器目录/tmp的远程访问。

6、卸载NFS文件系统。在客户端执行命令 # umount/mnt/nfs 就卸下了第4步挂接的NFS文件系统。

Samba服务器

这个世界既非只有linux/unix,也不是由microsoft windows 独霸天下的格局。也许出于linux/unix与windows既竞争又共存的事实,人们开发了 linux给windows用户提供文件共享的工具Samba,这应该算得上linux的开放精神吧!

1、检查是否安装samba软件包。# rpm –qa | grep smb ,如果没有则自行安装samba。

2、修改配置文件/etc/samba/smb.conf。早期的linux版本的配置文件smb.conf的安全选项“security=share”,这个默认值是个安全隐患,不过现在流行的linux版本的安全选项的默认值是“security=user”。如果只想用户对他的目录拥有只读权限,就把选项“writeable=yes”改成“read only=yes”。其他的选项根据自己的要求更改即可。对于一般的应用而言,基本上不用修改这个文件。

3、添加系统账户。由于smb的访问是使用系统账号进行的,因此添加账号是必不可少的。这个比较简单,用命令 # useradd sery , # passwd sery,就可以依次添加若干系统账号。

4、建立Samba用户密码文件。虽然samba的用户是系统用户,但出于安全考虑,samba用户的密码并非创建系统用户时设定的用户密码。为了生成smb所需的密码,应该进行下面的操作:

# smbpasswd -a skyboy //为系统用户设置smb口令

5、启用Samba服务器。# service smb start

6、windows客户端访问 Samba服务器共享目录。在windows环境下,右键点击“网上邻居”图标,然后左击“搜索计算机”,把Samba服务器的IP地址填写在“计算机名”搜索栏,点击立即搜索。找到后双击图标,然后输入在Samba服务器上预先设定的用户名和密码,就能合法访问Samba服务器设定的共享资源。为了方便使用,可以把Samba服务器提供的共享目录映射成本地驱动器。

7、其他。上述配置的samba服务器,用户的访问共享目录是系统账号的主目录。要想把共享目录设置到其他位置,修改Samba 的配置文件/etc/samba/smb.conf文件即可。

FTP服务器

在linux 环境下,有三个主要的FTP服务器:vsftpd、proftpd和wu-ftpd。因为安全方面的原因,vsftpd目前已经牢牢的占据了主导地位。从字面上我们就可以理解vsftpd所具备的主要特征—very secure(非常安全之ftp)。资料表明:1、使用ASCII方式下载文件,在1G以太网上的下载速度可以达到86M/s。2、vsftpd可以支持 15000个并发用户的访问。

1、检查是否安装vsftp包。# rpm –qa | grep vsftpd。如果没有则安装它。

2、 修改配置文件。Vsftpd的配置文件为/etc/vsftpd/vsftpd.conf,如果不打算提供匿名访问的话,需要修改配置文件 /etc/vsftpd/vsftpd.conf的项“anonymous_enable=Yes”为“anonymous_enable=No”。

3、启用vsftpd服务。#service vsftpdstart。

4、客户端连接访问。可以是专用的ftp客户端工具,也可以使用浏览器。用工具访问vsftpd服务器的速度要比用浏览器快很多。

5、vsftpd服务器的用户。Vsftpd服务器支持三种类型的拥护:本地用户(拥有系统账号)、虚拟用户(guest)、匿名账号;系统管理员应该根据安全需求来确定vsftpd服务器的用户访问策略

更多技术分享,记得关注哦

推荐linux入门资料,linux内核,Git入门到精通教程个人介绍有获取方式

linux内核资料

Git 入门到精通

按照惯例要BB一下~

本篇是比较简单的教程,没什么坑点,制作使用也非常得快

先谈一下NAS服务器的概念

世界知名知识库是这么说的:

NAS系统和传统的文件存储服务或直接存储设备(DAS)不同的地方,在于NAS设备上面的操作系统和软件只提供了数据存储、数据访问、以及相关的管理功能,并得以使得设备连上网络才进行远程访问;此外,NAS设备也提供了不只一种文件传输协议。NAS系统通常有一个以上的硬盘,而且和传统的文件服务器一样,通常会把它们组成RAID来提供服务,让数据更不会丢失;有了NAS以后,网络上的其他服务器就可以不必再兼任文件服务器的功能。NAS的型式很多样化,可以是一个大量生产的嵌入式设备,也可以在一般的电脑上运行NAS的软件。
NAS用的是以文件为单位的通信协议,例如像是NFS(在UNIX系统上很常见)或是SMB(常用于Windows系统)。人们都很清楚它们的运作模式,相对之下,存储区域网络(SAN)用的则是以区块为单位的通信协议、通常是透过SCSI再转为光纤通道或是iSCSI。还有其他各种不同的SAN通信协议,像是ATA over Ethernet和HyperSCSI等。

看不懂没关系,反正你可以这么理解,

“这是一块能随时连上的硬盘”

或者换个说法

“这是一个你自己建的百度云,你也可以叫XX云”

没错,功能就是可以随时随地放你想放的东西,也能随时随地拿下来用,并且完全免费,速度取决于你家里WiFi的速度,(你在外面的时候就取决你的手机4G速度啦,当然壕可以考虑5G连接)

其实很多电子设备都可以变身成为NAS服务器,你的电脑、你的手机都可以作为NAS使用,当然也有很多专业级别的设备,可以更快更强地执行文件存储传输功能

可是你买了树莓派啊,你怎么可以浪费掉它的功能呢???

省电、低功耗、稳定,为什么不选它???

不过其实把这一篇放在这里,也是为了后面的其他软件使用需要,修改文件也会更加方便一些,并且有时候树莓派下载受到GFW影响贼慢,可以考虑电脑下好再拉进去,一样可以正常使用。(我就只是强行加了点意义)

之前有介绍过使用我们伟大Linux系统的应用市场(镜像源)来下载东西,这次也一样,只需要简单一个指令,就能完成这些操作

打开树莓派运行终端(ssh同学同理)

讯享网sudo apt-get install samba sudo apt-get install sambclient

也可以补充两个配合用的软件,我后面应该是不太会负责人地介绍了,但是可以自己琢磨一下功能

sudo apt-get install netatalk
sudo apt-get install avahi-daemon

运行后会弹出一个窗口,别问,点是

讯享网好吧,埋个坑,这里DHCP涉及到了网络协议的事情,跟你的路由也有大量相关话题可以讲,之后补 

然后我们设置一个密码,方便我们在之后使用的时候验证通过

sudo touch /etc/samba/smbpasswd sudo smbpasswd -a pi
touch就是新建一个文件的意思啦,空格后面就是我们的samba密码路径
smbpasswd -a pi 中 -a的意思就是让我们能够建一个用户叫做pi,其他更多知识点会在后面补充一下
讯享网mkdir /home/pi/smbshare

mkdir 就是创建目录的意思,后面的路径当然你可以自命名,你叫XX云也是可以的

接着要给这个文件赋予权限,不然修改读写执行就不能用了,会很不方便,所以也要记得改

sudo chmod 777 /home/pi/smbshare
mkdir 和 chmod 都是Linux常用的指令,后面会不断地出现,并且使用起来也很棒
权限777是啥?这个讲起来又是一堆东西,详情我会写一个Linux权限集,方便理解和使用

然后修改一下一个文本,让路径可用

讯享网sudo nano /etc/samba/smb.conf 
[share] path = /home/pi/smbshare public = yes writable = yes valid users = pi create mask = 0644 force create mode = 0644 directory mask = 0755 force directory mode = 0755 available = yes

最后确认一下链接情况 输入下面的命令行,看到自己命名(sharename)的文件夹出现即可

讯享网smbclient -L //localhost/share

接着我们在各个设备上链接起来

成功映射到电脑


有上面这个符号就表示映射成功啦
现在两边都互相修改和协同,对的,现在就是一台nasberrypi,可以放你任何想放的东西,并直接抽取下来使用

先选finder&gt;前往&gt;链接到服务器

接着输入树莓派的地址,记得前面要加上smb
选择文件夹,之前我们已经做了一个文件夹出来,可以选择它
输入账号密码,记得是你树莓派的账号密码哦
完美呈现,试试传输吧

这里就偷懒录成视频啦

ios实现连接区域网共享服务器https://www.zhihu.com/video/
已共享位置出现了树莓派的ip地址就算成功啦

安卓的话看机型来分辨,不过这里建议大家下载一款软件

es文件浏览器

打开后选择区域网

点击新建

在服务器一行输入ip地址

填入树莓派设置好的账号密码,也是可以顺利实现的

samba其实只是一款能够协助我们实现进行文件共享的软件,当然还有非常多的软件也可以实现,这里推荐samba是因为简单易懂,好操作一些

当然,如果延伸出来的话,你也是可以从公网,即你在外面的时候连接不到自己wifi的时候,来接入树莓派的共享服务盘,这里需要加入外网的端口映射,即把这个窗打开面对互联网世界,这里我之后再统一出一篇,因为几乎很多软件都可以附加外网访问功能,从而实现随时随地,人在外头机器却在家里帮你工作。

那么文件共享究竟给我们带来多少的思考空间呢?

当你女朋友突然想开某部电影的时候,或者你需要下载一部3a大作的时候,需要耗费的下载时间是非常长,这个时候如果能够预先进行下载是非常方便的,下载完成直接拉取过来,即可使用。相对你网络实时浏览,共享服务器的速度非常快,考虑的只是内存读写速度和Wi-Fi链接速度,而不再是你给网络运营商交了多少钱的问题

并且文件共享服务器也大大解放了你其他设备的磁盘占有空间,但你有几百G,甚至上T的文件无处安放时候,我推荐你存储在文件共享服务器里,每个设备都能随时调取到,并且还不会占用你工作设备的内存,其实也是非常优秀的替代方案。

并且,树莓派还能挂载硬盘,至于上限是多少我还没去了解过,不过一两个T是完全没有问题的。解放生产空间,也是一件很有意思的事情。

  1. 树莓派配套和安装-年轻人的第一台Linux、第一台arm架构、第一台远程服务器
  2. 树莓派启动配置–SSH & VNC
  3. 下载软件和一些Linux命令,帮助你变得更强
  4. Samba–搭建网内服务器,第一个讨好女票的成果
  5. 花生壳–不在家里?也能远程改改改
  6. Teamview–简单易上手,不需要复杂的内网穿透即可实现远程屏幕
  7. 如何让派下载外国软件更快一些 (建议修改版)
  8. 自启动命令,让树莓派不怕断电后崩溃
  9. 智能家居多平台联动方案,让HomeKit和米家,天猫精灵都能和谐共处
  10. VScode–年轻人的第一款软件编程器
  11. 接入家庭APP–HOMEKIT完成里程碑第一步
  12. 接入我的WiFi设备们
  13. 接入我的蓝牙设备们
  14. 写个自动化命令,更精确,更有效
  15. 安排安排,让整个家庭更智能,更容易管理
  16. 啊???你真的以为小米音箱触屏版值得买?我这个树莓派也可以做到这一切!!
  17. 等着挨打吧,自动下载视频,却连迅雷和百度都搞不定,女票怎么看剧??!!??
  18. 继续HA,改变从一点一滴做起

1.1.1-如何假装自己开始学编程了–树莓派上装Python

*外网访问,让家里的树莓派搭上互联网高速列车

*DHCP到底是个啥

*创建目录指令 mkdir

*linux系统下权限命令集和我该怎么用

[本文转载自我的博客:mine.me/archives/]

去年跟风买了矿难之后的星际蜗牛来当NAS,目前已经稳定运行很久了,在这里记录一下。

  • 星际蜗牛,265包邮(2019.03的价格),包括以下配置。(就这个价格来说,等于不要钱了。)
  • 主板+ J1900 CPU(单网口,千兆)
  • DDR3L内存4G(注意是笔记本用的内存条)
  • 杂牌固态硬盘16G
  • 机箱、电源
  • 4个盘位
  • 西部数据紫盘6TB * 3,单块盘980,硬盘好贵!
  • AC Arctic F8 PWM 8厘米机箱风扇+减速线
  • 超频三风扇调速器

我对于NAS的需求是:

  1. 大容量的安全的存储(主要是照片+视频)
  2. 24小时开机+下载

以上两点是必需的

以上两点是不是必要的需求,尤其是远程访问,还是有被黑的风险。

  1. Ubuntu,这个仅仅是个人喜好,换任何一个Linux应该都可以。
  2. SnapRAID,这是一个“软”RAID,是基于文件的RAID,比较轻量,相比RAID5来说,优点在于方便(不需要全盘RAID)安全,唯一的缺点是,这个不是实时的RAID,而是要定期sync的RAID。不过对于家庭用途来说,完全够用了——最坏情况,也只是损失了某一天新备份的内容。
  3. Aufs,这个是Ubuntu的kernel自带的,别的OS可能需要编kernel module。
    之所以需要aufs,是为了把多块硬盘的目录”合并“成一个目录,这样对于NAS来说,只要操作一个目录就可以了。aufs会负责根据配置把文件写入某块硬盘。
  4. smartmontools,这个是为了监控硬盘的状态,并发送邮件通知。
  5. hdparm,这个是为了在空闲的时候把硬盘spin down,省电。(当然,可能的负作用是影响硬盘寿命。。。)
  6. cron,定时跑一些脚本,完成定期做snapraid sync,scrub等工作。
  7. samba,方便共享,也方便别的设备备份数据。
  8. FolderSync,这个是Android上的软件,把手机里的照片备份到NAS上。
  9. aria2c,这个是著名的下载软件了,支持HTTP,BT,等等,配合nginx反向代理,方便远程管理。

以上的配置可以完美地解决我的需求1,2,而需求3放在以后再想,需求4可以用Wireguard完美解决。

(注:以下内容基本参考Setting up SnapRAID on Ubuntu to Create a Flexible Home Media Fileserver这篇文章,细节上有一些区别,比如说安装snapraid的方法、选用的聚合文件的方式)

sudo apt install software-properties-common sudo add-apt-repository ppa:tikhonov/snapraid sudo apt update sudo apt install snapraid 

给每一块硬盘分区(注意我只有3块硬盘,sdb, sdc, sdd)

讯享网# 下面用parted工具给/dev/sdb分区 parted -a optimal /dev/sdb GNU Parted 2.3 Using /dev/sdb Welcome to GNU Parted! Type ‘help’ to view a list of commands. (parted) mklabel gpt (parted) mkpart primary 1 -1 (parted) align-check alignment type(min/opt) [optimal]/minimal? optimal Partition number? 1 1 aligned (parted) quit # 下面和sgdisk工具备份/dev/sdb的分区情况,并应用到另外两块硬盘上 sgdisk –backup=table /dev/sdb sgdisk –load-backup=table /dev/sdc sgdisk –load-backup=table /dev/sdd 

格式化硬盘

# 数据盘预留2%的空间 mkfs.ext4 -m 2 -T largefile4 /dev/sdb1 mkfs.ext4 -m 2 -T largefile4 /dev/sdc1 # 校验盘使用全部的空间 mkfs.ext4 -m 0 -T largefile4 /dev/sdd1 

创建目录准备mount这些硬盘

讯享网mkdir -p /mnt/data/{disk1,disk2} mkdir -p /mnt/parity/parity1 

配置fstab,来自动mount

# 数据盘 /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number1&gt;-part1 /mnt/data/disk1 ext4 defaults 0 2 /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number2&gt;-part1 /mnt/data/disk2 ext4 defaults 0 2 # 校验盘 /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number3&gt;-part1 /mnt/parity/parity1 ext4 defaults 0 2 

配置snapraid

讯享网$ cat /etc/snapraid.conf parity /mnt/parity/parity1/snapraid.parity content /var/snapraid/snapraid.content # 这个目录是可选的 content /mnt/data/disk1/snapraid.content content /mnt/data/disk2/snapraid.content data d1 /mnt/data/disk1/ data d2 /mnt/data/disk2/ exclude *.unrecoverable exclude /tmp/ exclude /lost+found/ exclude *.bak exclude .AppleDouble exclude ._AppleDouble exclude .DS_Store exclude .Thumbs.db exclude .fseventsd exclude .Spotlight-V100 exclude .TemporaryItems exclude .Trashes exclude .AppleDB 

创建需要的目录,然后开始愉快的sync吧

mkdir -p /var/snapraid/ snapraid sync 

SnapRAID配置好了,现在如果在/mnt/data/disk[1|2]/目录里写数据,在snapraid sync之后,这些数据就会有额外的parity来保护,即使坏了一块盘,数据也能找回来。
接下来,要配置AUFS,把这两个目录合并成一个目录,方便使用。

之所以选用aufs,是因为Ubuntu默认支持它,并且性能还不错。

讯享网\( cat /etc/rc.local mount -t aufs -o br:/mnt/data/disk1<span class="o">=</span>rw:/mnt/data/disk2<span class="o">=</span>rw,sum,create<span class="o">=</span>mfs,udba<span class="o">=</span>reval none /mnt/storage </code></pre></div><p data-pid="INQ0ECyv">上面的命令把<code>/mnt/data/disk1</code>,<code>/mnt/data/disk2</code>这两个目录&#34;merge&#34;成<code>/mnt/storage</code>目录,以后所有的读写都在这个目录里操作就好了。</p><p data-pid="kEoE-vnx">其中:</p><ul><li data-pid="6NdF2wNh"><code>br</code>: 定义了两个目录作为branch,都是rw</li><li data-pid="fT9Wh4Tc"><code>sum</code>: 告诉df要显示所有的branch的block/inode的总和</li><li data-pid="NFQZvckb"><code>create=mfs</code>: 创建新文件的时候,选择free space最多的那个branch,这样两块硬盘的空间会比较均衡</li><li data-pid="B0SfVJKZ"><code>udba=reval</code>: 这个定义了aufs如何对待&#34;绕过aufs&#34;直接操作branch里的文件,一般来说我们尽量不直接去操作<code>/mnt/data/disk[1|2]</code>,只操作mount point <code>/mnt/storage</code>,就不会有问题。<br/>参考:</li></ul>advanced multi layered unification filesystem. version 4.15-<p data-pid="3HwNiHfo">假设配置好了SMTP服务,下面的smartd.conf配置会在硬盘出问题的时候发邮件通知。<br/>不过,smartd的配置有点复杂,下面的配置是抄来的,并不是特别了解它到底作了哪些测试。<br/>如果仅仅想测试能否收到邮件,用下面那行注释掉的配置,重启smartd,应该就能收到邮件了。<br/>参考:</p>Is smartd properly configured to send alerts by email?<div class="highlight"><pre><code class="language-bash">\) cat /etc/smartd.conf DEVICESCAN -S on -o on -a -I 194 -m &lt;my-email-address&gt; -s (S/https://www.zhihu.com/https://www.zhihu.com/topic//02|L/https://www.zhihu.com/6/03) -n standby,q # Enable below to test if email is sent or not #DEVICESCAN -M test -S on -o on -a -m &lt;my-email-address&gt;-s (S/https://www.zhihu.com/https://www.zhihu.com/topic//02|L/https://www.zhihu.com/6/03) 

enable smartd,让它开机自动启动

\( cat /etc/default/smartmontools <span class="c1"># uncomment to start smartd on system startup</span> <span class="nv">start_smartd</span><span class="o">=</span>yes <span class="c1"># uncomment to pass additional options to smartd on startup</span> <span class="nv">smartd_opts</span><span class="o">=</span><span class="s2">&#34;-q never -i 7200&#34;</span> </code></pre></div><p data-pid="uFyVVoyI">这个工具可以配置硬盘空闲时spin down。</p><div class="highlight"><pre><code class="language-bash">\) cat /etc/hdparm.conf quiet /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number1&gt; { 
讯享网<span class="nv">apm</span> <span class="o">=</span> <span class="m">127</span> <span class="nv">keep_features_over_reset</span> <span class="o">=</span> on <span class="nv">spindown_time</span> <span class="o">=</span> <span class="m">242</span> 
} /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number2&gt; {
<span class="nv">apm</span> <span class="o">=</span> <span class="m">127</span> <span class="nv">keep_features_over_reset</span> <span class="o">=</span> on <span class="nv">spindown_time</span> <span class="o">=</span> <span class="m">242</span> 
} /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-&lt;serial_number3&gt; {
讯享网<span class="nv">apm</span> <span class="o">=</span> <span class="m">127</span> <span class="nv">keep_features_over_reset</span> <span class="o">=</span> on <span class="nv">spindown_time</span> <span class="o">=</span> <span class="m">242</span> 
}

其中spindown_time = 242表示如果一块硬盘idle了1个小时之后,会把它spindown

上面介绍了,SnapRAID不是一个实时的RAID,所以可以配置crontab让它每天夜里做sync,然后每周做一次scrub,把结果通过邮件发到我的邮箱

MAILTO=“&lt;your-email-address&gt;” # SnapRAID sync every day at 02:00 and check temperatures 0 2 * * * /usr/bin/flock /tmp/snapraid.lock /usr/bin/snapraid sync; /home/mine/bin/cputemp.sh; /home/mine/bin/hddtemp.sh # SnapRAID scrub every Sunday at 02:30 30 2 * * 0 /usr/bin/flock /tmp/snapraid.lock /usr/bin/snapraid scrub 

其中,cputemp.sh和hddtemp.sh是两个check CPU/HDD温度的小脚本:

讯享网\( cat /home/mine/bin/cputemp.sh <span class="c1">#!/bin/sh</span> <span class="nb">echo</span> Mine NAS CPU Info. <span class="nb">echo</span> --------------------- <span class="nv">MHZ0</span><span class="o">=</span><span class="k">\)(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) TEMP0=\((</span>cat /sys/class/thermal/thermal_zone0/temp<span class="k">)</span> <span class="nv">MHZ1</span><span class="o">=</span><span class="k">\)(cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq) TEMP1=\((</span>cat /sys/class/thermal/thermal_zone1/temp<span class="k">)</span> <span class="nb">echo</span> Hardware: <span class="nb">echo</span> CPU0 Speed <span class="k">\)((\(MHZ0</span><span class="o">/</span><span class="m">1000</span><span class="k">))</span> Mhz <span class="s2">&#34;|&#34;</span> CPU Temp <span class="k">\)((\(TEMP0</span><span class="o">/</span><span class="m">1000</span><span class="k">))</span> C <span class="nb">echo</span> CPU1 Speed <span class="k">\)((\(MHZ1</span><span class="o">/</span><span class="m">1000</span><span class="k">))</span> Mhz <span class="s2">&#34;|&#34;</span> CPU Temp <span class="k">\)(($TEMP1/1000)) C $ cat /home/mine/bin/hddtemp.sh #!/bin/sh echo Mine NAS HDD Info. echo ——————— /usr/sbin/hddtemp /dev/sd[a-d] 

通过samba,把NAS上的文件共享出去,方便小米盒子之类的播放视频,也方便用手机来备份照片。

首先,创建两个不同的帐户,一个用来写(备份照片,文件等),一个用来读。

sudo adduser –home /mnt/storage/ –no-create-home –shell /usr/sbin/nologin –ingroup sambashare nas # 这个是用来写的帐户,把它添加到sambashare这个group里 sudo smbpasswd -a nas # 设置密码 sudo adduser –no-create-home –disabled-password –disabled-login ent #这个是用来读的帐户 sudo smbpasswd -a ent # 设置密码 

配置samba的config,这里创建了3个共享:

  • 一个是用来备份数据的,只要在@sambashare这个group里就都有写权限;
  • 一个是专门用来共享/mnt/storage/Videos/这个目录,主要是给盒子播放视频用的;
  • 还有一个是用来共享/mnt/storage/aria2Download/目录,这个目录是给aria2下载用的,方便共享下载完,还没有整理的视频。
讯享网$ cat /etc/samba/smb.conf [NAS_Home] comment = Home_NAS path = /mnt/storage/ browseable = yes read only = no wide links = yes valid users = @sambashare @sadmin [Videos] comment = NAS_Videos path = /mnt/storage/Videos/ browseable = yes read only = yes wide links = yes valid users = ent [Aria2Downloads] comment = Aria2Downloads path = /mnt/storage/aria2Download/ browseable = yes read only = yes wide links = yes valid users = ent 

aria2c是一个支持多数协议的下载软件(不支持电驴),并且支持RPC方便远程管理。
它自己的配置这里就不贴了,网上到处都能找到。
为了方便远程管理下载,比如说,贴一个link给NAS,让它下载东西,可以用webui-aria2这个webui,配合nginx来使用。

server { 
讯享网<span class="kn">listen</span> <span class="mi">80</span> <span class="s">default_server</span><span class="p">;</span>
<span class="kn">listen</span> <span class="s">[::]:80</span> <span class="s">default_server</span><span class="p">;</span>
<span class="kn">root</span> <span class="s">/var/www/html/webui-aria2-master/docs</span><span class="p">;</span>
<span class="kn">index</span> <span class="s">index.html</span> <span class="s">index.htm</span><span class="p">;</span>
<span class="kn">location</span> <span class="s">/</span> <span class="p">{</span>
    <span class="kn">try_files</span> <span class="nv">$uri</span> <span class="nv">$uri/</span> <span class="s">/index.html</span><span class="p">;</span>
<span class="p">}</span>
}

上面这个最简单的配置在80端口上enable了aria2的webui。
如果放到公网上,建议换个端口,并且enable https证书。
比如说,我的网络环境里,网络的出口是树莓派,NAS只接在内网里,所以在树莓派的nginx配置里,要有类似这样的配置

server { 
讯享网<span class="kn">listen</span> <span class="s">&lt;custom-port&gt;</span> <span class="s">server_name</span> <span class="s">&lt;your</span> <span class="s">server</span> <span class="s">name&gt;</span> <span class="s">ssl</span> <span class="no">on</span><span class="p">;</span> <span class="kn">ssl_certificate</span> <span class="s">&lt;your</span> <span class="s">crt&gt;</span> <span class="s">ssl_certificate_key</span> <span class="s">&lt;your</span> <span class="s">key&gt;</span> <span class="s">...</span> <span class="s">proxy_set_header</span> <span class="s">Host</span> <span class="nv">$host</span><span class="p">;</span> <span class="kn">proxy_set_header</span> <span class="s">X-Real-IP</span> <span class="nv">$remote_addr</span><span class="p">;</span> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-For</span> <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Proto</span> <span class="nv">$scheme</span><span class="p">;</span> <span class="kn">location</span> <span class="s">/jsonrpc/</span> <span class="p">{</span> <span class="kn">proxy_pass</span> <span class="s">http://192.168.1.90:6800/jsonrpc</span><span class="p">;</span> <span class="c1"># aria2c的rpc端口 
}
<span class="kn">location</span> <span class="s">/</span> <span class="p">{</span> <span class="kn">proxy_pass</span> <span class="s">http://192.168.1.90/</span><span class="p">;</span> <span class="c1"># aria2-webui的网页端口 
} }

这样访问树莓派的特定的端口,就可以在外面通过HTTPS来访问到NAS上的aria2了。

参考的文章里提到他最终用了MergerFS来作union fs,这个一开始也试了。
因为是用户态的文件系统,使用起来是很方便,/etc/fstab里加上下面的配置就行。

讯享网# Mergerfs /mnt/data/* /mnt/storage fuse.mergerfs defaults,allow_other,use_ino,category.create=lfs,moveonenospc=true,minfreespace=20G,fsname=DiskPool 0 0 

之前的所有配置,只是在NAS上用了Samba,然后配置一些备份工具(如FolderSync)来作备份,太过简单,所以也想找一些开源的私有云来尝试一下。
找了一圈,决定试用ownCloud,一方面是开源,另一方面,支持docker,所以用起来也很方便。
参考owncloud的github就可以很方便的使用了。

然而——配合ownCloud的手机app,用起来很不方便:

  • 没有导入已有图片的功能(或者说这个功能太难找?)所以硬盘里已有的照片没办法轻松的导入进去;
  • 手机上预览图片,竟然是要下载的本地的!?(这还cloud啥啊。。。)

相比起来,还是FolderSync的同步功能要好用多了,完美地完成了备份照片的功能,只缺少了图片管理的功能——这个功能以后再慢慢找开源软件来搞定吧。

Nginx默认不支持WebDAV,需要编译才行,有点麻烦。幸好,我们有docker,并且找到了可用的dockerfile(虽然有bug)。
我fork了一份,把明显的错误改正之后,放在了github.com/mine/d

用docker跑起来之后,测试的过程中发现了一些没解决的问题:

  1. 虽然用curl测试没问题,但是通过FolderSync的WebDAV来跑,总是有奇怪的错误,也许和FolderSync发的WebDAV请求有关。但是FolderSync不开源,所以也不知道具体的情况。
  2. 即使用FolderSync没问题,这个配置用的用户名、密码是放在HTTP请求里的,每次请求都会带;虽然跑在https里,但安全性总是觉得不够。。。

所以对于WebDAV也就浅尝辄止了。

Ubuntu 20.04.1 LTS
ntfs 格式硬盘
j2850 小主机

linux 硬盘最好使用ext4格式,能省去很多烦恼。

由于我使用的是ntfs格式硬盘,搭建samba时,第一个坑就是linux挂载ntfs格式硬盘的速度问题。linux一般挂载ntfs格式 都是使用的ntfs-3g ,挂在后发现读写速度奇慢,千兆环境下samba传输只有不到40m/s。linux使用 dd 测试硬盘速度也是同样不到40m/s,说明不是网络问题。后将硬盘连接至windows上,读写速度均正常维持在100m/s左右,说明不是硬盘问题。那么最大的可能就是挂载格式的问题。

后经查找得知,ntfs-3g效率很差,可以使用另一个商用 ntfs 驱动,叫做Paragon_NTFS_for_Linux_driver,速度碾压自带的ntfs-3g,个人可以免费使用部分功能,商用需要购买。官网可以下载源码编译,操作也很简单。

驱动安装后,挂载硬盘时 使用如下代码

讯享网mount -t ufsd /dev/sba1 https://www.zhihu.com/topic//tmp -o umask=000

其中 ufsd 就是上面编译好的驱动,用于取代原来的ntfs-3g。

同时由于ntfs文件本身不带权限,所以挂载时要标明,防止出现权限问题, -o中umask表示挂载硬盘权限,000代表最高权限777。权限设置不对也会影响速度。

挂载可能出现失败的情况,问题大概率是 Paragon 文档中描述的 dirty flag 问题,使用linux中的ntfxfix 进行修复即可。详细可以参考网站的用户手册pdf。

paragon-ntfs-linux-professional官网

挂载失败处理

如上设置完成后,samba写入速度达到100m/s,但读取速度只有50,dd测试硬盘读取速度在100+,所以此时问题不出现在硬盘和挂载上。

后经查找,网友博客中指出将 samba配置文件 /etc/samba/smb.conf 中 加入一行

aio read size = 0

表示,读取时不使用异步io。修改后重启samba服务,读取速度也达到100+。至此linux搭建的samba服务,算是达到了正常的速度。

samba配置文件参考:smb.conf

上面提到的网友博客中表示,树莓派4拥有千兆网口和usb3.0,外接移动硬盘搭建samba能够达到100m/s,即可以跑满千兆网。由此看来树莓派4的性能还是不错的。所以有需要小型nas的朋友也可以考虑树莓派,体积小巧又美观。

小米电视的 高清播放器 ,原本可以连接samba服务器播放视频。但是其采用的samba协议为samba v1,新版的samba已经默认不开启旧协议,所以samba配置好后,发现电视无法连接,但是电脑可以连接。为了支持电视连接,需要手动开启,修改/etc/samba/smb.conf,添加一行

讯享网min protocol = NT1

表示支持的最小协议版本,v1写NT1,v2写SMB2, v3写SMB3。此处修改成 NT1,重启服务后,电视即可连接。

同样参考samba配置文件:smb.conf,在其中 server max protocol (G) 中有协议的详情。

树莓派挂了块3.5的硬盘做下载机和局域网影音共享,性能和耗电量都好于群晖Nas,特别是多盘位做raid保护的机型,群晖就不用24小时开机了,有需要的时候可以直接用树莓派通过网卡唤醒。

换了电视后对片源的质量有了更高的要求,文件超过20G后,即使使用wifi6路由器,电视网卡支持800m+的传输速率,smb已经满足不了需求了,播放杜比视界版本的文件ftp也很卡,目前三个共享协议都尝试过了,分享一下搭建的过程。

应该是兼容性最好的协议了,通吃各种系统,很多移动端的播放器也都支持
sudo apt-get update
讯享网sudo apt-get install samba sudo apt-get install samba-common-bin
sudo vim /etc/samba/smb.conf
讯享网min receivefile size = 16384 write cache size = 
[Public] comment = Public Storage # 共享文件夹描述 path = /你的共享目录 # 共享文件夹目录 read only = no # 不只读 create mask = 0777 # 创建文件的权限 directory mask = 0777 # 创建文件夹的权限 guest ok = yes # guest访问,无需密码 browseable = yes # 可见

不需要密码到此搭建就结束了,可以直接跳到”重启服务”那步即可

讯享网[pt] 

共享段备注

comment = pt folder

共享文件夹路径,必填

path = /你的共享目录

是否只读

read only = no

允许匿名访问

guest ok = no

是否出现在网络发现中

browseable = yes

可以访问的用户,这个用户和本地的用户不同

valid users = 你的用户名
sudo smbpasswd -a pi
讯享网sudo samba restart #或 sudo systemctl restart smbd

附上日志存放的目录,有问题方便排查

cd /var/log/samba/
比较古老的协议,但在kodi播放器下,传输明显速度优于smb
讯享网sudo useradd -m -s /bin/bash ftper sudo passwd ftper
sudo ln -s /你的共享目录 /home/ftper/你的共享目录
讯享网sudo apt-get install vsftpd
sudo vim /etc/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022
讯享网sudo service vsftpd start
速度和ftp没有明显区别,但kodi下播放杜比视界视频时,只有webdav可以流畅播放
wget https://github.com/hacdias/webdav/releases/linux-armv7-webdav.tar.gz
讯享网tar -zxvf linux-armv7-webdav.tar.gz sudo cp webdav /usr/bin/
cd /etc/systemd/system sudo vim webdav.service
讯享网[Unit] Description=WebDAV server After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/webdav –config /etc/webdav/config.yaml Restart=on-failure [Install] WantedBy=multi-user.target
cd /etc/webdav/ sudo vim config.yaml
讯享网# Server related settings address: 0.0.0.0 port: 21234 auth: true tls: false cert: cert.pem key: key.pem 

Default user settings (will be merged)

scope: . modify: true rules: [] users:
  • username: admin password: admin #这里为共享目录 scope: /你的共享目录
systemctl enable webdav systemctl start webdav
讯享网systemctl status webdav

不报错的话直接输入

http://你的ip地址:21234

就可以正常访问

根据自身实际使用情况(SONY电视 + 电视版KODI播放器 + 树莓派4 + 千兆有线网络/WIFI6 5G模式传输 + 4K 原生60帧片源/杜比视界片源)和体验来说,个人总结如下表:

协议类型 速度 兼容性 Kodi
smb 较快 传输性能较差
ftp 较好 可播放70G视频文件
webdav 最理想的模式

总体来说smb协议的兼容性最好,windows/mac/linux均可支持,各个厂商的电视、盒子和各个手机端的播放器均支持smb协议传输,ftp和webdav原生支持的较少。

理论上三者速度相差并不大,这里测试的环境是KODI播放器,没深入了解过KODI读取文件的方式,但大视频文件一定不能用smb协议,杜比视界视频文件一定要用webdav,咨询过KODI其中的一位开发者,他表示webdav可以开启多通道读取文件的模式,有利于文件更快的传输,但并不代表所有播放器的表现都一致。

  1. 想要兼容性好首选smb
  2. 如果播放器用的KODI,不用折腾,首选webdav

对应原文: fraee.com/2021/05/15/rp

Samba 文件共享服务

1987年,微软公司和英特尔公司共同制定了SMB(server Messages Block)协议用来解决局域网内的文件或打印机等的资源共享问题。但是这时后还是解决不了跨系统之间的文件共享。直到1991年,在读大学的Tridgwell 基于SMB协议开发能够解决Linux系统和windows系统之间的文件的问题——也就是SMBServer服务测序。后来被命名为samba(根据一个拉丁舞名字)。如今,samba服务测序成为了在Linux和windows系统之间共享文件的**选择

上面的是samba的来源介绍,那么什么是samba呢?

关于这个问题,可以从以下几点来理解:

1、samba是一组软件包,是Linux支持SMB/CIFS协议(也称S/C)

2、samba可以在几乎所有的类UNIX平台上运行。

1、使Linux主机成为Windows网络的一份子,与Windows网络相互分享资源

2、使Linux主机可以使用Windows体统共享的文件和打印机

3、使Linux主机成为文件服务器或打印服务器,为Linux 、Windows客户端提供文件共享服务和远程打印服务

1、smb服务:管理SAMBA服务器共享什么目录、文件、打印机

2、nmb服务:管理群组和netbios name解析

以上是基本理论,接下来,实操开始

首先,准备两台虚拟机,一个做为server,另外一个作为client(至于虚拟机的基本配置啊,什么之类的,我就不讲解了吧,都会吧)

server上

准备好后,我们要在server端开始创建两个用户,注意这两个用户是系统无法登录用户

讯享网[root@server ~]# useradd -s /bin/nologin user01 [root@server ~]# useradd -s /bin/nologin user02

我们做这个服务是为了能够实现文件共享,为此,我们还要准备一个共享的文件 /share,并且设置其文件权限为777

[root@server ~]# mkdir /share [root@server ~]# chmod -R 777 /share/

现在就在server上通过yum来安装samba服务测序

讯享网[root@server ~]# yum -y install samba

创建samba账号,用我们最开始创建的user01和user02用户,密码设置为(注意我这里的号表示的是注释的意思:在这里是输入密码。原本这里是交互式输入密码,我这里输入的是)

[root@server ~]# smbpasswd -a user01 New SMB password:  Retype new SMB password:  Added user user01.

也可以用

讯享网[root@server ~]# pdbedit -a -u user02 new password:  retype new password: 

接下来就是写配置文件了

先进入到samba的配置文件中

[root@client ~]# vim /etc/samba/smb.conf

将下面一段写入配置文件的最后面

讯享网[myshare] 
comment = public document path = /share public = no browseable = Yes writable = Yes</code></pre></div><p data-pid="4Ga1M-Np">记得重启一下smb服务</p><div class="highlight"><pre><code class="language-text">[root@server ~]# systemctl restart smb</code></pre></div><p data-pid="uLWPh_cZ">让后我们还有去将firewalld防火墙和seLinux也要配置,因为默认情况下的话,防火墙是不允许samba服务进行的。所以我们出现了两个设置防火墙的选项:</p><p data-pid="4FYsaMFW">1、暴力选项:直接关闭防火墙</p><div class="highlight"><pre><code class="language-text">[root@client ~]# systemctl stop firewalld</code></pre></div><p data-pid="CJV06aB-">2、妥协选项:开启防火 ,设置允许samba服务</p><div class="highlight"><pre><code class="language-text">[root@client ~]# firewall-cmd --add-service=samba --permanent 
success [root@server ~]# firewall-cmd –reload success

但是有一点要要注意了,防火墙是同意了,seLinux可没有允许啊,为此,我们还要去设置selinux安全上下文。

讯享网[root@server ~]# chcon -R -t samba_share_t /share

到这里基本上是够了,但是如果需要samba服务程序访问普通用户家目录或者是共享用户的家目录,我们需要打开sebool设置,

[root@server ~]# setsebool -P samba_enable_home_dirs on

至于这个我们要怎么知道,嘿嘿,我们可以通过getsebool 命令筛选出有关samba服务程序相关的SELinux域策略,但是还是需要策略的名称(经验)选择出正确的策略开启就行了

讯享网[root@server ~]# getsebool -a | grep samba samba_create_home_dirs –&gt; off samba_domain_controller –&gt; off samba_enable_home_dirs –&gt; on 我们本次实操开启这个就行了,基本上也就只要要开启这个 samba_export_all_ro –&gt; off samba_export_all_rw –&gt; off samba_load_libgfapi –&gt; off samba_portmapper –&gt; off samba_run_unconfined –&gt; off samba_share_fusefs –&gt; off samba_share_nfs –&gt; off sanlock_use_samba –&gt; off tmpreaper_use_samba –&gt; off use_samba_home_dirs –&gt; off virt_use_samba –&gt; off

Windows客户端上

现在我们在主机上输入\192.168.147.11然后在输入网络凭据,也就是我们一开始设置的samba用户和密码(图这里是输错了)

就可以看到我们共享的文件夹啦

注:可以使用 net use * /del 命令清除网络连接缓存,用来排除上次连接的影响

Linux客户端上

在Linux客户端上我们是需要安装samba-client 和 cifs-utils 软件包

[root@client ~]# yum -y install samba-client cifs-utils

接下来才可以进行连接测试

讯享网[root@client ~]# smbclient -L 192.168.147.11 -U user01 Enter SAMBA\user01‘s password: 输入密码 Sharename Type Comment 
   
     
   
print\( Disk Printer Drivers myshare Disk public document IPC\) IPC IPC Service (Samba 4.11.2) user01 Disk Home Directories SMB1 disabled – no workgroup available

这时后我们会发现myshare在其中显示着

我们可以进入myshare里面来进行操作

[root@client ~]# smbclient //192.168.147.11/myshare -U user01 Enter SAMBA\user01’s password: Try “help” to get a list of possible commands. smb: &gt; 

进入到里面我们可以创建一个目录(这个还是要根据我们之前在server上samba配置文件所给的权限)

讯享网smb: &gt; mkdir test_share

我们可以到server上看是否创建成功

[root@server ~]# ls -l /share/ total 0 drwxr-xr-x. 2 user01 user01 6 Nov 27 02:18 test_share

这里我们可以看到原本什么都没有的/share目录下出现了test_share目录,并且用户和用户组都是user01

或者我们可以将samba共享的目录挂在到客户端的本地目录下(我这次使用的临时挂载)

首先创建一个文件用来挂载

讯享网[root@client ~]# mkdir /usershare

现在将server上的共享文件挂载到我们client的本地的目录/usershare下,注意要加一个cifs

[root@client ~]# mount -t cifs //192.168.147.11/myshare /usershare/ -o username=user01 Password for user01@//192.168.147.11/myshare: [root@client ~]# ls -l /usershare/ total 0 drwxr-xr-x. 2 root root 0 Nov 27 02:18 test_share

ok,以上便是关于samba文件共享的一些小操作啦

小讯
上一篇 2025-05-14 18:23
下一篇 2025-04-25 19:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/155537.html