MAD*_*ppy 41 git zfs btrfs data-integrity
我读到 ZFS 和 Btrfs 使用校验和来防止数据降级,并且我读到 Git 通过对每次提交的所有内容进行散列来实现完整性。
我打算在带有 Btrfs RAID 1 的 Linux NAS 上使用 Git 服务器进行存储,但是如果 Git 具有完整性,我想这不是必需的(至少如果我想要防止数据降级的话,则不需要)。
问题: 那么 Git 的完整性虽然在每次提交时对所有内容进行散列,但是否可以防止或帮助防止位腐烂?
hea*_*vyd 62
Git 的散列仅在创建提交时发生,然后散列用于识别提交。这绝不能确保文件的完整性。Git 存储库可能会损坏并丢失数据。事实上,git 有一个内置命令来检测这种丢失,git fsck,但正如文档所说,你有责任从备份中恢复任何损坏的数据。
Jon*_*fer 16
取决于你所说的“防止”是什么意思。
(首先,bit-rot 是一个有多种定义的术语。这个问题不是关于由于缺乏维护而导致代码无法运行的问题。)
如果你的意思是“防止”它可能会检测到位衰减的损坏,是的,那会起作用。它将但是不能帮助解决腐败:哈希只提供错误检测,而不是修正。
这通常是“完整性”的含义:检测未经授权/意外数据操纵的可能性,而不是防止或纠正它的可能性。
您通常仍然需要 RAID1 和备份(可能使用 ZFS 快照或类似方式实现,我不熟悉 RAID1 + 快照上的 ZFS 语义),原因如下:
如果磁盘发生致命故障,您需要一个 RAID1(或最近的备份)来恢复您的数据;没有纠错可以纠正整个磁盘故障,除非它有数据的完整副本 (RAID1)。对于短暂的停机时间,您基本上必须有 RAID1。
如果您不小心删除了部分或整个存储库,则需要备份(RAID1 不会保护您,因为它会立即反映对所有设备的更改)
但是,本身只有两个磁盘的块级 RAID1(例如通过 LVM 或类似的)不会保护您免受数据的静默衰减:RAID 控制器无法知道两个磁盘中的哪一个保存了正确的数据。为此,您需要其他信息,例如文件校验和。这就是ZSF和BTRFS校验进来:他们可以使用(这是不是说他们是在这些情况下使用,我不知道ZFS的btrfs或如何处理事情出现)来区分这两个盘的持有正确的数据。
| 归档时间: |
|
| 查看次数: |
8069 次 |
| 最近记录: |