基于PVE平台的TrueNAS_Scale+NextCloud的实践总结(三)

NAS专栏:

前言

虚拟化平台搭建好了,现在开始创建一台trues的虚拟机。TruesNAS 是之前选择的系统,其中Enterprise 是付费版,Scale是要使用的系统。

1669279439301.png

功能概览:

1669280893833.png

路线图

1669280910986.png

下载

1669281008839.png

下载链接

网盘目录里存放了从官网下载的系统镜像,可以直接下载百度网盘 提取码: 1gtj 。

安装

该部分很简单,在PVE创建虚拟机的时候选择镜像,基本按照默认选择安装即可。

配置

访问登录地址http://ip

1669281872868.png

登录后就会看到Dashboard

1669281972621.png

本地化设置在 系统设置-》常规-》本地化—》选择语言和时区

网络设置

网络-》接口,点击

1669282030229.png

取消勾选DHCP,添加新的IP,然后应用

1669282087934.png

注意点击应用后要点击测试更改,然后在60s内使用新的IP访问,否则修改无效。

1669282158314.png

根据自己需要填写DNS和网关。需要注意的是NetBIOS-NS需要勾选,否则部分设备无法发现,比如小米摄像头。

1669282252379.png

Docker源

1
2
3
4
5
6
7
8
9
10
{"data-root": "/mnt/free/ix-applications/docker", "exec-opts": ["native.cgroupdriver=cgroupfs"], "iptables": false, "bridge": "none"}

# 增加
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}

存储设置

TrueNAS存储顺序为内存->缓存存储池->数据存储池。

一个存储池可以由多个Vdev组成,而Vdev可以有多种类型。

1669604121682.png

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为硬盘数量)

创建新的池,选择磁盘,此处磁盘已经使用,所以显示为空。

1669282473343.png

下面是使用了一段时间后的情况

1669282672229.png

SMB服务

首先需要创建用户,我这里是给摄像头使用的

1669282731973.png

该部分需要注意主目录的位置,可以输入后自动创建并使用,其他保持默认即可。

1669282798780.png

下一步需要启动服务

1669282892634.png

对于小米摄像头来说需要启动SMB1。

1669282926386.png

输入账号密码,很完美。

1669283126821.png

NextCloud

选择应用-》nextcloud

1669284054845.png

账号密码和IP都可以自定义,也可以不修改

1669284154262.png

添加两个环境变量PHP_UPLOAD_LIMITPHP_MEMORY_LIMIT,为了之后上传大文件

1669284183021.png

存储这块建议使用host模式,自定义存储路径

1669284272303.png

其余项目使用默认设置即可,保存后系统会自动部署。

当此处展示为ACTIVE,点击Web Portal即可

1669284354369.png

添加缓存

修改config.php文件

1
2
3
4
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 192.168.31.82,
'port' => 6379,

开启上传不限速

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挂载目录

总结

安装系统其实没什么难度,困难的是后续的应用配置。

参考

------ 本文结束 ------

版权声明

Medivh's Notes by Medivh is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Medivh创作并维护的Medivh's Notes博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Medivh 博客( http://www.mknight.cn ),版权所有,侵权必究。