Я читал документ в файловой системе Google и не знаю, как он справляется с ошибками записи (а не с атомной записью) в репликах. Если он вернет успех, он будет ждать следующего момента, когда мастер получит обновленное состояние мира и обнаружит версию коррупции/устаревших блоков и удалит кусок. Я предполагаю, что мастер может проверить достоверность всех реплик всякий раз, когда клиенты запрашивают места реплики, чтобы клиент никогда не получал устаревшие/поврежденные данные. Это как это связано с ошибкой записи реплики?Как файловая система Google справляется с ошибками записи в репликах?
ответ
Недействительные куски можно разделить на две категории: устаревшая и поврежденная контрольная сумма. Они проверяются двумя разными способами.
Stale chunk. Версия chunk не обновляется. Мастер проверяет устаревшие куски во время регулярного пульса с помощью серверных блоков.
Поврежденная контрольная сумма. Поскольку расходящиеся реплики могут быть законными, реплики по GFS не гарантируются одинаковыми. Кроме того, для проверки производительности контрольная сумма выполняется независимо на самих серверах, а не на главном сервере.
Контрольная сумма может быть проверена в два этапа:
- Когда клиенты или другие серверы порций запрос фрагмента
- Когда серверы порций в течение периодов простоя, они сканирования и проверки неактивные куски, чтобы избежать повреждения куски считаются действительными репликами.
Если контрольная сумма повреждена, сервер блоков сообщает хозяину о проблеме. Мастер клонирует реплику с других серверных блоков с помощью здоровых реплик. После этого мастер указывает серверу, который сообщает о проблеме, чтобы удалить кусок.
На ваш вопрос, как GFS справляется с ошибкой записи реплики?
Если во время репликации возникла какая-либо ошибка, сообщение об ошибке мутации сообщается клиенту. Клиент должен обработать ошибку и повторить мутацию. Несогласованными кусками будет сбор мусора во время обычного сканирования на серверных серверах.