All in one(五)NAS安装和基础设置
写在前面:
一般来说常见的会安在虚拟机里面的NAS系统有以下几个
Truenas SCALE:优势:免费,ZFS支持,权限管理等比较丰富,算是商业软件的免费版 劣势:ZFS你用得上的功能也许不多,但是增加了很多操作难度;偶尔会有不稳定的版本。
unraid:优势:软阵列,虚拟化支持,劣势:收费软件
Windows Server:优势,熟悉的界面和操作模式 劣势:系统开销大点,也是收费软件
黑XX:优势:用的人多所以解决方案比较好找,套件功能也比较完备,劣势:是盗版不建议
omv(open media vault):优势:轻量级简单易用 劣势:比较简陋,可能你会担心它的稳定性。
作为All in one中的数据储存部分,我们只关心系统的数据储存功能是否能做好,其他的工作由其他组件来干,所以对虚拟化的支持好不好并不是那么重要。综合考虑加上没事儿瞎折腾和尝试一下神奇的ZFS文件系统,本文最终选择的是介绍Truenas SCALE来安装。对应Truenas里面需要深入折腾的其实就是两个东西,一个是ZFS文件系统的模式,另外一个就是不同用户组和数据集的ACL问题。
如果你不想太折腾可以选择omv,该有的权限管理SMBnfs功能都有,安装模式跟下文差不多,只是虚拟机bios那里建议使用默认。我看了看omv7的界面其实也还是可以了。
黑XX网上各种各样教程也挺多了,这里就不提了。
TrueNAS SCALE是一个开源的NAS管理系统,基于OpenZFS文件系统,作为存储共享常用的文件共享协议都支持。同公司还有一个以前的项目叫FreeNAS,现在改名字叫做TrueNAS CORE,理论上SCALE的性能还是比他好的,所以我们本文用的是SCALE。Truenas最大问题有两个,一个是他用的ZFS文件系统,你会发现在写入文件的时候ZFS cache占用的内存比例比较高。第二个就是你在webui最多只能管理到数据集这个层面,没有黑XX的file station这种应用,只有后续自己安装file browser之类的工具来进行网页端管理文件或者就是根目录共享到你的管理电脑上直接Windows管理。
一、准备工作及安装
首先我们来到Truenas的下载网站,可以在右下角输入邮箱注册登录,也可以选择比如github账号登录。
https://www.truenas.com/download-truenas-scale/

登录后选择下载stable版本,不管是浏览器下载还是使用PVE的url下载速度都非常慢,如下图200k不到的速度,建议右键复制红框里绿色那个图标的链接去迅雷下载,然后再上传PVE


需要验证可以记一下下面红框的sha256验证和

官网要求的最低配置是内存8GB,最少两个各16GB的硬盘,其中一个为系统盘。
不过我们虚拟机内拿NAS来就是当个存储工具,其实虽然用的是ZFS文件系统可能不使用太多功能没有必要这么高的内存配置,但是我们先按照官网最低配置来,内存反正后期是可以调整的。
配置模式跟上篇配置iKuai和istoreos差不多,bios选uefi的,硬盘先给一个16G的装系统(TrueNAS不强行要求你一定要是SATA硬盘,所以我还是用的virtio block),记得生成虚拟机后把efi硬盘移除,整体确认页如下
图片移除efi硬盘后变成这样

完成后确认一下引导顺序,然后我们就可以启动了。然后我们就可以进入按回车的环节,首先是第一个,不按等一会儿也行

回车后稍等一会儿, 就能看见这个界面,再次选择第一个安装回车

目前我们只加了系统盘这一个硬盘,所以我们点击空格选择,然后回车确认

然后提示我们会完全格式化硬盘,再次确认

然后是选择webui的用户,他推荐是选admin而不是直接选root,按他推荐的来就是

然后就是输入密码,确认后回车开始安装,安装完成后会提示我们重启并移除安装媒体,还是回车。

然后就回到最开始的界面,因为我们还没有加硬盘,所以我们选择4关机。

关机后我们来到虚拟机的硬件页,由于我们整个All in one的存储都在NAS上面,所以个人建议直接直通SATA控制器给这台虚拟机,另外如果想要NAS独享一个网卡也可以再直通一个网卡作为主接口,另外一个在虚拟网桥上的虚拟接口作为All in one内部的其他虚拟机与NAS连接的通道。直通方法和上一章安装软路由直通网卡类似,选择对应pcie设备然后勾选pcie即可。例如像这样选择SATA控制器,还是挺明显的,选择后勾上pci-express即可


最终硬件栏变成这样,我这个上面一个是SATA控制器,下面一个是网卡。

由于我这个Truenas是新装的,所以我就添加两块64G的SATA虚拟SSD硬盘和再加一个虚拟网口作为演示。
硬件设置完毕后记得移除CD/DVD驱动器,然后再次启动。
二、配置Turenas
同样的这个界面可以点回车也可以等着自己跳过
图片启动后你会看见你的管理后台ip地址,如果说你PVE已经启用了接收ipv6路由广播的话还会看到ipv6地址,这个我们下一章会说。你可以去你的主路由看看哪个是物理网卡的ip以及将这两个网口绑定一个你喜欢的ip,然后任意一个都可以访问Truenas管理后台,对于PVE系统外的机器个人建议都访问物理网卡(如有)那一个地址。然后对于局域网固定IP设置的问题个人建议都统一到主路由上去设置,各个机器只用开启dhcp就好了,免得产生冲突。如果路由器上调整了局域网固定IP记得重启一次turenas虚拟机更新IP

Truenas的设置非常的丰富,当然这是好听的说法,难听的就是复杂,先挑几个基础的出来说说,把系统跑起来。
1.修改语言和时区
浏览器输入ip地址访问后台,用户名我们刚才选择的是admin,密码就是你输入的密码,就可以进入了。进入后先是仪表盘,我们先进入设置把中文开了。进入system settings-general

然后在localization点击settings就可以换语言和时区了,时区建议自己手动输入Asia/Shanghai,不然要翻很久

保存后就可以看到界面变成中文了。
2.添加储存池
点击菜单栏的存储,点击创建池,然后会显示你的未分配磁盘在右下角
这里先说一下Truenas的存储是基于ZFS系统的。大家好像都说ZFS文件系统牛逼,但是具体牛逼在哪儿我也不太清楚。这里只是简单说说ZFS文件系统的存储是基于池(pool)-虚拟设备(vdev、virtual device)-数据集(dataset)三个层级来的,一个池作为最大的集合可以包含一个或者多个vdev,一个vdev内可以有一个或者多个物理盘,然后这些物理盘可以组成条带、镜像、RAIDZx,dRAIDx等多种数据存储模式,和普通的硬件层面的raid有一些区别。然后数据集就是最终呈现出来的文件系统,可以理解为文件夹。如果说一个池里面有多个vdev,那么建立的数据集存放在哪个vdev里面是由系统平衡负载分配的。Truenas的存储池当中至少要有一个数据vdev,其他的像什么日志、热备份之类的看你需求可选。
raid是什么后面单独写一篇来详细说吧,这里先简单说一下。现在存储尤其是多盘存储为了充分利用每块硬盘的读写带宽,就将数据条带化存储在多个硬盘上,这些读写速率就会成倍的提高。但是这种模式如果坏了一个盘那么所有数据就都不完整了(因为都是打散存放在多个硬盘上的,坏了就缺了一截数据),然后就有了通过存两份数据或者存一个校验的数据如果有盘坏了就重建坏掉的数据的模式。以上就是基础的raid0,raid1和raid5的概况,但不重要,因为ZFS文件系统和这个又不完全一样,只是大致上差不多。
就家庭使用而言我更建议truenas使用单盘条带模式(其他系统的应该就叫basic模式)然后定期在其他盘或者其他介质备份你重要的数据,毕竟首先你的局域网速度也就接近机械硬盘读写瓶颈速度,公网访问速度更不用提,而且不管是镜像还是raid还是zfs的这些raid都可能在重建的时候又有盘寄了导致重建不出来彻底歇菜。不过不管在什么条件下都不建议raid0或者zfs的宽度大于1的vdev模式,除非你清除的知道其中的风险。
首先我们先确认一下我们的磁盘

我这里有三块盘,一块16G的系统盘和2块我用来演示的64GB硬盘,点击每块磁盘可以手动运行smart测试

磁盘没有问题我们点击存储回到创建界面,点击创建池

简单了解一下之后我们来按照指引先输入名称,是否加密随意,但不建议储存池直接加密,这个就相当于全池加密了,万一出了问题就什么都看不到了,你点击加密系统也会不建议。
然后就是一定要有的数据vdev,其他的视你自己折腾的需要而定。例如我这儿选择存储池名字叫DATA0,然后简单解释一下下面这几个选择的意思。

布局,指的是磁盘存储信息的形式,有条带(stripe)、镜像(mirror)、RAIDZx(x代表校验盘数量)、dRAIDx(更大规模的分布式冗余阵列,适用于大型磁盘阵列降低重建时单盘负载,但是小文件可能会浪费空间)。
自动选择磁盘就是按照设定的大小系统自动挑磁盘来组成vdev,磁盘大小就是单盘的大小,勾选将磁盘大小视为最小的意思就是对于mirror,其存储空间=最小磁盘容量以及RAIDZx这种存储空间=(n-x)*最小磁盘容量的布局系统可以自动选择比你设定的磁盘大小大的盘,哪怕这样会造成存储空间浪费。
宽度指的是一个vdev里面的磁盘数量,条带最小为1,镜像最小为2,RAIDZx最小为2+x。
当然选择之后可以手动调整,将你需要的磁盘放进去,比如说我选的条带、宽度1、vdev数量1,他就自动把排序第一个的sda硬盘放进去了,但是我想要的是sdb那么我就需要点击手动选择把sdb拖进去,sda拖出来,当然手动选择是可以突破你的自动设置的,比如你只把sdb拖进去了那么就变成了宽度2.如果你点右上角添加然后把sdb拖进了下面那个条带里面,那就是变成了vdev数量2

创建逻辑确认后点击保存并查看-创建池-确认-继续就可以创建池了,然后后续可以在池中添加vdev扩展池的大小或者点右上角蓝色的创建池来创建新的池。
按照我的单盘条带逻辑,同时避免系统将我们的数据分配到我们不想存放的硬盘上,那么我们可以一个类型的盘建一个池,将你觉得重要的数据放在靠谱的盘建的池里面并且及时备份;不重要的数据放在便宜的比如二手盘上面,甚至可以多盘条带放飞自我释放性能。我这里作为演示就建立了DATA0和DATA1两个池。

如果现在设置错了有不想要的池就点击导出断开连接就行,没有删除数据的话可以通过导入池再连接回来(但是里面的vdev不能无损放进新的池或者已有的其他池,请做好数据备份工作)。
3.添加用户凭证
后续我们用于文件共享分类管理需要用到不同权限的用户,我们先来创建一个共享用户,例如我这里创建了一个share1的用户,输入密码,选择创建一个新的用户组不和admin以及系统用户组搅在一起,如果你后续用户组多了你需要他有其他用户组的功能也可以再附件组里面去选。这只是个用来共享的账户也不用设置主目录,其他命令行和sudo权限不用开启,要用我们也是用admin这个用户去整,只需要记得把最下面的samba认证开了就行

后续需要添加其它权限的用户以此类推。
4.创建数据集并共享
点击左侧数据集,然后右上角有两个选项,一个是添加Zvol(ZFS卷,类似于windows的一个盘新建卷),一个是添加数据集(类似于文件夹)。我们这里使用添加数据集
例如我这里添加了一个share数据集,要使用smb和nfs共享,所以预设那里选择多协议。如果你想要更多折腾,可以点开高级选项,主要可以配置的有数据集大小的配额,数据集加密,其他的不太需要更改,如果你对权限管理ACL有自己的需求和理解也可以更改,这里不去过多的展开讲

然后这里我们如果没有开启smb和nfs服务系统会提示我们开启并且开机自启动(webdav协议目前需要另外下载应用)

然后我们点击share数据集,可以看到右下角权限的所有者和组都是root,我们当然不想分享的时候把root密码和权限给出去,所以修改一下权限

选择我们刚才创建的share1用户以及自动创建的share1组并且勾选应用于用户和组,下面的递归应用权限也勾上让我们的权限管理作用于数据集内的左右目录和文件,免得跳回root用户所有去了,子数据集那个看你自己对于数据集结构的想法。其他用户的权限和群组用户的权限要看你后续的管理逻辑。所有权限信息确定后点击保存。(权限设置举例:你要XX部门所有人都能有读写执行这个数据集的权利,那么你需要给他们每个人都设置一个账号,然后放在一个用户群组里面,他们要用的数据集的群组权限都打开,然后让这个数据集属于这个部门的群组。)

接下来NFS的共享权限我们需要修改一下, 因为目前share数据集的读写执行只有share1用户可以做到(或者root),而且nfs共享不需要输入用户名和密码,他有一套用户映射的模式,默认应该是统一映射到匿名用户,那么也就是只有只读和执行的权限。所以我们需要修改一下用户映射,共享,选择编辑我们这个共享文件夹

打开后点击高级选项,找到mapall用户,下面选择share1

如果你觉得不安全,想要只有局域网内用户可以访问,在下面网络点击添加,增加你想要允许访问的IP或者网段,例如只允许192.168.1.10/24这台主机访问,或者192.168.1.0/24整个网段都可以访问等,网络里面可以添加多条许可。具体可以回忆一下局域网和CIDR的相关知识或者翻前面的网络基础知识篇。
然后我们来验证一下共享的情况
首先是SMB连接
打开windows的文件资源管理器,在最上面地址栏输入你NAS的ip(注意是回车上面那个斜杠),稍微等一会儿他就会让你输入用户名密码,就是刚才的share1用户的密码,是否记住凭据看你,确认后就可以看到我们刚才新建的share文件夹

假如说需要固定在文件资源管理器内作为一个网络硬盘方便访问的话,点击映射网络驱动器

然后输入你的NASipshare,如果你建的数据集不叫share你也可以改个名字,然后选择使用其他凭据连接,同样还是输入用户名密码选择记住即可

然后是NFS连接,我们用PVE来验证一下是否可用,真正要用起来是到后面部署docker那一篇再开始。在数据中心存储添加找到NFS


ID 就是你PVE里面显示的ID,例如我取个dump,服务器就是你NAS的ip,export就是你共享的数据集,他会自动搜索,内容就是PVE拿这个共享盘来存放什么,可以多选,比如说我们只拿来放备份文件确认后点击添加即可。然后我们就可以看到存储里面多了一行,内容可以随时双击修改。
接着回到windows的文件资源管理器尝试用SMB传输一个文件上去测试一下,因为我的PVE是千兆口,所以速度就只有100多M。也可以看出你要发挥多盘raid存储的读写能力,首先是需要升级各个网络设备的。

可以看到传输的时候主要是zfs缓存占用内存,我传这个6G的文件最大的内存占用可以到接近6G。
如果我将内存压缩到4G呢

写入速度到还是没有变,使用上没有什么问题,当然可能是我的测试不够多,特别是还没有用上ZFS的快照之类的功能,如果有条件还是尽量满足其8G内存的要求。
5.数据保护

主要有六个功能,数据清理是通过数据完整性然后通过校验盘(如有)来修复错误;快照则是对当前数据集的状态存储一个快照,相当于一个还原点方便在发生不想要的修改的时候回滚,云同步同步和复制就是字面意思,云同步支持webdav协议、ftp协议和一些国内不太常用的云存储,同步任务只有rsync和ssh两种模式,复制则是本地和远程ssh两种模式,需要折腾一下设置。最后一个就是检查硬盘健康度的smart测试,没啥好说的。
就我个人的建议,主要我们会使用的应该是快照和云同步这个功能,快照来保障数据有回滚的可能性,云同步来实现和通过alist挂载为webdav协议的网盘之间的同步,保障你可以放在云端的数据再备份一份。其他的如果是Linux系统之间特别是ZFS文件系统间的同步,用这个同步或者复制就挺好;如果是windows系统,我建议在windows端直接用freefilesync这个软件和你挂载的数据集通过SMB做同步备份更为方便。
6.应用
基本上来说是都是基于k8s的容器,容器建议后续直接跑在PVE的lxc里面。
其实本来是想直接安装一个file browser用的,但是吧就算是NAS系统内权限设置问题还是挺麻烦,想了想还不如PVE单独建一个虚拟机单独跑file browser的docker然后nfs直接挂载/mnt给他,映射为root权限然后限定单ip访问还简单一点。
简而言之整个过程就是插入硬盘——创建储存池——设置用户——创建数据集和权限——设置分享权限
其他的NAS系统也可以是类似的一个操作逻辑,就是实现两个目的,第一个是能存东西,第二个是能按照我们的需求共享出来。
下一个篇章我们先来说说公网访问和简单的nginx反向代理, 估计会用两篇文章来说。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

frag0
校验提示文案
hbsszh
校验提示文案
AI购物管家-电脑数码
校验提示文案
hbsszh
校验提示文案
AI购物管家-电脑数码
校验提示文案
frag0
校验提示文案