---
# System prepended metadata

title: LEC 14 Reliability
tags: [course, systems]

---

###### tags: `systems` `course`
# LEC 14 Reliability

Slide URL: http://web.mit.edu/6.033/www/lec/s17-partial.pdf

## 今回の話
- どうやって、フォールトトレラント(fault-tolerant)なシステムをつくるか
- ディスク障害の対処の話

## どうすれば信頼性のあるシステムを構築できるか
1. あり得るすべての障害を特定し、対処しなければいけないものを決定する
    - ソフトウェアの問題か
    - ハードウェアの問題か
    - 設計の問題か
    - 運用の問題か
    - 環境の問題か
3. 障害を検知できるようにする
4. 障害に対処する（回復する）
    - 何もしない
    - fail-fast
    - fail-stop
    - ...

:::warning
- **システムの各構成要素はいつも信頼できない**という前提でシステムを組み上げる必要がある
- 信頼性とシンプルさはトレードオフの関係にある
:::

## システムの成功はどうやって計測すればいいのか (信頼性の定量化)
計測できるものは色々あるが、よく注目するのは可用性(avilability)。
では、可用性はどのように定量化するのか

### AFR: Annualized Failure Rate
- 年間故障率
```
AFR = 1 - exp(-年間稼働時間/MTBF)
```

### MTTF, MTTR, MTBF
- MTTF: mean time to failure, 平均故障時間
- MTTR: mean time to repair, 平均復旧時間
- MTBF: mean time between failures, 平均故障間隔

```
     正常       障害       正常       障害
|-----------|xxxxxxxx|-----------|xxxxxxxx|----...
            \- MTTR-/ \-- MTTF --/
            \------- MTBF -------/
```

## レプリケーションによる可用性
- 冗長化
    - 冗長化の1手段がレプリケーション
- LEC 14 では単一マシンのディスク障害に対して、レプリケーションによる冗長化で対処し、可用性を確保する方法を説明

## RAID
### RAID 1: mirroring
- 同じ内容のディスクをもう1つ用意する
- 2N個のディスクが必要
- 1個のディスクの障害から復帰可能

### RAID 4: dedicated parity disk
- 全てのディスクの特定セクタのxorをパリティ用ディスクの対応するセクタに保存する
    - `P[0] = D1[0] xor D2[0] xor D3[0] xor D4[0]` 的なイメージ
- N+1個のディスクが必要
    - データ用N個、パリティ用1個
- read が高速になることがある（1つのファイルが複数ディスクに分割されて保存される場合）
- write はパリティ用ディスクにアクセスが集中するため遅くなる
- 1個のディスクの障害から復帰可能

### RAID 5: spread out the parity
- パリティ用ディスクを設けるのではなく、パリティを各ディスクに分散させる
    - `D1[0] = D2[0] xor D3[0] xor D4[0]`
    - `D2[1] = D1[1] xor D3[1] xor D4[1]`
    - `D3[2] = D1[2] xor D2[2] xor D4[2]`
    - 的なイメージ
- N+1個のディスクが必要
- read が高速になることがある（1つのファイルが複数ディスクに分割されて保存される場合）
- パリティ用ディスクが存在せず、writeを並列実行できる
- 1個のディスクの障害から復帰可能

## その他の参考文献
- RAIDについて｜データ復旧: https://www.rescue-center.jp/explanation/raid/type.html
- Fail-Fast: https://en.wikipedia.org/wiki/Fail-fast
- Fail-Stop: https://en.wikipedia.org/wiki/Fail-stop
- design - Fail Fast: https://www.martinfowler.com/ieeeSoftware/failFast.pdf
- 【MTBFとMTTRとMTTF】基本情報技術者試験に出る用語解説【紛らわしい用語たち】: https://ita-san.blogspot.com/2020/11/mtbfmttrmttf.html
- 「HDDが壊れる」まで（後編）: https://eetimes.itmedia.co.jp/ee/articles/1208/09/news005.html