[程序员] 一个系统如何保证 log 的高可用跟鲁棒性?

之前一阵在研究一些系统设计题。
对于数据库,突然断电的解决办法大多都是读 raw log 重做。也就是 log 是整个系统安全的基石。
但似乎从来没见到讨论如何保证 写 log 可用 跟 log 不丢失(磁盘损坏 etc )。
我尝试找过很多材料,基本都没有讨论,遂很迷茫,求大佬解释下。

或者换个角度,这个 log 要不要放在三个不同机房的机器上(是的话如何保证写高可用,不是的话怎么容灾)?每台机器是不是要组个 raid (什么样的 raid 比较推荐)?某台机器突然坏了(断电,磁盘出错)怎么办?
再如果 log 是跟数据库的机器在一台电脑上,怎么保证分布式下的数据库的 log 们都一样呢?