硬碟管理原理

unRaid系统会要求使用者要先配置硬碟,才能使用各个功能(如VM,共享资料夹…等)
今天先深入了解原理,了解後方可按照自己安排不同形式的硬碟管理
我们开始吧~


unRaid总共有三种硬碟模式:

  • Array (硬碟阵列)

unRaid,顾名思义就「不是RAID」
当然Array也就不是常见的RAID喔
而是一种资料池(pool)的结构,会把所有的硬碟打成同一个空间

“当然往後配置share folder也可以选择包含或排除哪些硬碟,我们後面实作~”

  • Parity (校验)

https://ithelp.ithome.com.tw/upload/images/20210915/20117399hikVrRRylT.png
(来源:https://reurl.cc/a9OR5Q)

工作原理是当有资料存入时,会对每个资料碟的同个区域做XOR计算,最後把结果都存入校验碟里

XOR计算规则是只要是奇数个1,计算值就为1;反之偶数个1,计算值就为0

举例来说:
正常硬碟资料如下图

Storage Storage Storage Storage Storage Storage Storage Parity
1 0 1 1 0 1 0 0
0 0 0 1 1 1 0 1

现在有个硬碟坏了 (X,Y表示)

Storage Storage Storage Storage Storage Storage Storage Parity
1 0 1 1 X 1 0 0
0 0 0 1 Y 1 0 1

X,Y 回推,得0,1

这有点像RAID 5,但RAID 5是把校验码分散在各个硬碟里
容错性则跟RAID5差不多,都是保证其中一颗硬碟坏掉可被修复

  • 优点
    RAID 5是「真的」阵列,麻烦点是不仅硬碟大小要相同、假如坏了其中一颗硬碟,一定必须重建阵列才可恢复资料
    而Parity的方式坏了其中一颗,其他硬碟仍可继续工作 (校验碟突然挂点也不影响)
    还有储存区硬碟大小型号皆可不同,只要比校验碟小就可以了
  • 缺点
    假如校验碟突然挂点,就等於失去保护硬碟的作用了
    并且很多使用者对Parity功能诟病就是写入速度;读不会影响,但写入大概是RAID5的3倍以上吧(包含写入时间+校验盘校验所有硬碟的时间)

但小雨觉得天下绝对没有两全其美的事情,Parity以容错性和方便性来讲,个人使用已足够

  • Cache (快取)

顾名思义就是加快存取资料的速度,能解决原硬碟读写太慢的问题

而unRaid Cache功能就是为了解决Parity读写太慢的问题,机制是以SSD暂时取代原本资料池
让使用时先写入Cache区域,等使用者离峰时在把资料『搬移』至原本资料池。

与浏览器快取不同的是:Cache 碟是利用离峰的时间,再慢慢把资料搬回原位

Mover机制

为了避免资料正在读写又执行Mover产生错误,unRaid Mover 建立了一些机制:

  • Mover 启动时,档正在被读写,则该档不会启动搬移,只能等下次 (隔天同一时间)
  • Cache根目录下以 . 开头的资料夹 (也就是temp文件),mover 不会搬移这些文件
  • Cache根目录下的档案 (系统控制文件),mover 不会搬移这些文件

(Mover详细调整我们後面再来实作~)


<<:  Day 1 介绍测试框架 RSpec

>>:  远程控制的方法

[Day25] Array methods 阵列操作方法(3)

直接进入 Array methods 实作练习主题。 push() 新增元素至原阵列末端,可一次新增...

Day 10:Python基本介绍03 | List、Tuple

各位早安阿~ 不知不觉间已经来到铁人赛第十天,也就是过完1/3了呢,想想还真是快。只不过今天就开学了...

day 1 - 魔鬼藏在细节里

前言 程序写了一阵子之後,工程师就会发展出自己习惯的模式,小到命名方式,大到系统架构,而在我们团队中...

Day14-Kubernetes 那些事 - Deployment 与 ReplicaSet(二)

前言 昨天的文章介绍了 Deployment 以及 ReplicaSet 的基本介绍後,接下来要介绍...

从 JavaScript 角度学 Python(24) - 继承

前言 前一篇已经提前预告接下来将会讲继承了,所以这一篇当然就是会介绍继承啦~(废话) 继承的概念 继...