新手教程:Unraid阵列与缓存池详解
新手教程:Unraid阵列与缓存池详解
在Unraid系统中,阵列(Array)和缓存池(User Defined Pool)是两个核心组件。阵列提供数据冗余和存储扩展能力,而缓存池则通过高速存储设备提升写入性能。本文将详细介绍这两个组件的特点、区别以及它们在Unraid系统中的应用。
1、什么是阵列(Array)
阵列是指由多个物理硬盘组成的存储池,它将多个硬盘合并成一个逻辑存储池,并可以提供数据冗余能力。在初始化Unraid的时候,你可以看到如下图的阵列配置(磁盘阵列设备列表):
组建好阵列之后,用户就可以通过创建用户共享来使用存储池了。
在Unraid 6.X版本中,用户必须创建并启动阵列之后,才可以使用诸如Docker和虚拟化等核心功能。但从2025年开始,在7.X版本中,阵列不再是必选项,用户无需创建阵列的情况下也可以正常使用其他的功能。
总的来说,Unraid的阵列具有以下特点:
- 容错性:通过在阵列中使用校验盘(Parity)存储冗余校验信息,即使其中一个硬盘出现故障,也可以恢复数据。
- 扩展性:Unraid允许在阵列中添加或移除硬盘,以扩展或缩小存储容量。
- 异构性:阵列可以由不同容量和型号的硬盘组成。
- 文件系统独立:阵列中的每一块存储盘都可以拥有自己独立的文件系统。
2、什么是缓存池(User-defined pool)
Unraid的阵列虽然具备多种优点,但写入速度较慢。为了解决这个问题,Unraid引入了缓存盘的概念,由缓存盘组成的存储池就叫做缓存池。
缓存盘是一个单独的设备,用于临时接收数据,然后再在系统空闲时将数据移动到主存储阵列中。这样可以提高写入速度,尤其是在网络传输速度较快的情况下。
在Unraid 6.9.0之前,缓存池有且只能有一个,并且名称固定为cache;在Unraid 6.9.0及之后,用户可以创建多个存储池,并且这些池的名称可以自定义。
简单来说,缓存池相当于是阵列存储池的“文件中转站”——当往阵列中写入文件时,会先写入到缓存池中,然后再借由Unraid的定时文件转移功能Mover,将缓存池的文件转移到阵列存储池中。
缓存池既可以使用固态硬盘来组建,也可以使用机械硬盘来组建。缓存池与阵列最大的一个不同之处在于,缓存池能够组RAID模式,而阵列是不行的。
3、阵列和缓存池之间的关系
在Unraid 6.X版本中,阵列是Unraid的“根”,你可以不用缓存,但你不能不使用阵列。但从6.12版本开始,由于Unraid开始支持ZFS文件系统,因此我们完全可以将阵列与缓存的主从关系颠倒过来——以缓存为主(将主要的存储空间放到ZFS缓存池中),阵列为辅(给到小容量的硬盘存放一些静态数据)。
例如,假设你有:
- 3 x 16T机械硬盘
- 2 x NVME 1T固态
- 1 x 4T和1 x 2T硬盘
传统的存储规划是将所有机械硬盘都放到阵列中,然后将固态硬盘来作为缓存盘使用。但从6.12版本开始,你可以将3块16T的硬盘组成一个Raid1模式的ZFS缓存池,可用空间为2 x 16 = 32T。
总之,由于缓存池的自定义性比较高,你完全可以根据实际的需要去配置缓存池,并且与阵列的主从关系也可以根据实际情况来转换。
4、总结
- 在6.X版本,Unraid的阵列是系统存储的“根”,必须要有存储设备给到阵列去使用(最少一个)。
- 缓存池的出现是为了解决Unraid读写慢的问题,是为阵列服务的。
- 阵列与缓存最大的不同在于,缓存池可以组RAID模式。
- 从6.12开始Unraid支持ZFS文件系统,因此用户完全可以利用缓存池组建ZFS阵列来作为主要的存储空间使用。