NAS专栏:
- 基于PVE平台的TrueNAS_Scale+NextCloud的实践总结(一)
- 基于PVE平台的TrueNAS_Scale+NextCloud的实践总结(二)
- 基于PVE平台的TrueNAS_Scale+NextCloud的实践总结(三)
前言
虚拟化平台搭建好了,现在开始创建一台trues的虚拟机。TruesNAS 是之前选择的系统,其中Enterprise 是付费版,Scale是要使用的系统。
功能概览:
路线图
下载
网盘目录里存放了从官网下载的系统镜像,可以直接下载百度网盘 提取码: 1gtj 。
安装
该部分很简单,在PVE创建虚拟机的时候选择镜像,基本按照默认选择安装即可。
配置
访问登录地址http://ip
登录后就会看到Dashboard
本地化设置在 系统设置-》常规-》本地化—》选择语言和时区
网络设置
网络-》接口,点击
取消勾选DHCP,添加新的IP,然后应用
注意点击应用后要点击测试更改,然后在60s内使用新的IP访问,否则修改无效。
根据自己需要填写DNS和网关。需要注意的是NetBIOS-NS需要勾选,否则部分设备无法发现,比如小米摄像头。
Docker源
1 | {"data-root": "/mnt/free/ix-applications/docker", "exec-opts": ["native.cgroupdriver=cgroupfs"], "iptables": false, "bridge": "none"} |
存储设置
TrueNAS存储顺序为内存->缓存存储池->数据存储池。
一个存储池可以由多个Vdev组成,而Vdev可以有多种类型。
Vdev类型
Vdev有以下六种类型:
参考:Creating Pools | (truenas.com)
1、Data
基础Vdev,用于存储数据,一个存储池至少有一个Data Vdev。
可以在一个池里添加多个Data Vdev,多个Data Vdev可以组成相关阵列,而一个Data Vdev又可以由多块硬盘组成的阵列构成。
2、Cache
ZFS L2ARC读取缓存可与快速设备一起使用以加速读取操作。相当于二级缓存,保存从内存里面调出的数据,下次直接从固态硬盘中调出。建议64G内存以上的用户使用此Vdev,不要超过内存的5倍。推荐用固态硬盘当缓存Vdev,容量不需太大,64G存最好不要超过300G容量,多了反而会增加内存的消耗。
How Does L2ARC Work?
当系统收到读请求时,ZFS使用ARC (RAM)来处理这些请求。当ARC满了,并且有L2ARC驱动器分配给ZFS池时,ZFS使用L2ARC来处理从ARC溢出的读请求。这减少了使用较慢的硬盘驱动器,从而提高了系统性能。
更多内容可查看官方说明:L2ARC | (truenas.com)
3、Log
ZFS日志设备,提高同步写速度,日志设备的最小大小与池中每个设备的最小大小 (64 MB) 相同。可能存储在日志设备中的相关的数据量相对较小。提交日志事务(系统调用)时将释放日志块。日志设备的最大大小应大约为物理内存大小的 1/2,因为这是可存储的最大潜在相关的数据量。例如,如果系统的物理内存为 16 GB,请考虑 8 GB 的最大日志设备大小。
ZFS intent log(ZIL)通常被称为日志,其主要目的是数据完整性。ZIL的存在是为了跟踪正在进行的同步写操作。如果系统崩溃或断电,ZIL可以重放操作。当您在电源故障时丢失一个标准的系统缓存时,一个ZIL在系统重新启动时仍然存在。
ZFS数据池使用一个存储在磁盘上的ZIL来记录同步写入,然后再刷新到存储中的最终位置。这意味着同步写操作以存储池的速度进行,并且必须写入存储池两次或两次以上(取决于磁盘冗余)。
更多内容可查看官方说明:SLOG Devices | (truenas.com)
4、Hot Spare
热备盘是指当主用磁盘故障时,预留插入Data vdev的磁盘。热备盘用于临时替换故障驱动器,以防止出现更大的池和数据丢失的情况。 当新硬盘替换故障硬盘时,热备盘恢复为非激活状态,重新作为热备盘使用。 当故障驱动器仅从池中分离时,临时热备盘将被提升为Data vdev的成员,不再作为热备盘可用。
5、Metadata
用于创建Fusion Pools的特殊分配类,以提高元数据和小块 i/o 性能。
6、Dedup
Dedup vde用于存储ZFS池中的重复删除数据。需要为每X TiB的通用存储分配X GiB。例如,1 GiB的Dedup vdev容量对应1 TiB的Data vdev可用容量。
根据特定的池用例,添加到vdev中的磁盘以不同的布局排列。不支持将多个具有不同布局的vdev添加到池中。当需要不同的vdev布局时,创建一个新的池。例如,pool1中有一个镜像布局的数据vdev,新创建一个poo2,将raid-z布局的vdev添加到pool2中。
RAID介绍
条带:与RAID0类似,不过可以不同大小的硬盘组
镜像:与RAID1类似,磁盘镜像,至少需要两个磁盘。
RAIDZ1:与RAID5类似,一重奇偶校验,至少需要三块磁盘;可以坏一块硬盘不丢数据。容量和速度为N-1(N为硬盘数量)
RAIDZ2:与RAID6类似,双重奇偶校验,至少需要四个磁盘;可以坏2块硬盘不丢数据。容量和速度为N-2(N为硬盘数量)
RAIDZ3:ZFS特有的,三重奇偶校验,至少需要5个磁盘;可以坏3块盘不丢数据。容量和速度为N-3(N为硬盘数量)
创建新的池,选择磁盘,此处磁盘已经使用,所以显示为空。
下面是使用了一段时间后的情况
SMB服务
首先需要创建用户,我这里是给摄像头使用的
该部分需要注意主目录的位置,可以输入后自动创建并使用,其他保持默认即可。
下一步需要启动服务
对于小米摄像头来说需要启动SMB1。
输入账号密码,很完美。
NextCloud
选择应用-》nextcloud
账号密码和IP都可以自定义,也可以不修改
添加两个环境变量PHP_UPLOAD_LIMIT
和PHP_MEMORY_LIMIT
,为了之后上传大文件
存储这块建议使用host模式,自定义存储路径
其余项目使用默认设置即可,保存后系统会自动部署。
当此处展示为ACTIVE,点击Web Portal即可
添加缓存
修改config.php文件
1 | 'memcache.distributed' => '\OC\Memcache\Redis', |
开启上传不限速
1 | docker exec --user www-data CONTAINER_ID php occ config:app:set files max_chunk_size --value 0 |
可能遇到的问题
- 镜像下载不下来
- 修改docker为国内源
- 上传大文件提示服务器错误
- 添加参数
- PHP_UPLOAD_LIMIT=16G
- PHP_MEMORY_LIMIT=16G
- LimitRequestBody 0 添加至html目录下的.htaccess文件
- 添加参数
- 为Nextcloud手动添加文件-使后台上传的文件在Nextcloud中显示
- sudo -u www-data php occ files:scan –all
- 为Nextcloud添加其他目录
- 可以在应用添加扩展host挂载目录
总结
安装系统其实没什么难度,困难的是后续的应用配置。