Оно считает использованное место и считает свободное в разрешённом размере (а не сколько на диске осталось), как разницу между разрешённым и занятым.
Если filewalkers завершились успешно - они обновляют БД (из которой информация отображается на вашей dashboard), для каждого сателлита по-отдельности.
Проверять их статус можно так:
Мы берём предоставленное место, считаем занятое (только storage/blobs
, storage/trash
) и вычитаем из предоставленного, отображая свободное место в разрешённом для использования.
Например, вы разрешили использовать 7ТБ из 8ТБ, мы возьмём 7ТБ (проверим, не превышает ли это размер диска, основываясь на (возможно устаревших) данных по использованию из БД, после этого либо примем предложенный вариант, либо установим минимальный размер из предложенного и реального размера диска), потом запустим подсчёт занятого и обновим БД. На dashboard в качестве свободного будет отображаться разница между 7ТБ и использованием из БД.
Каждый раз, когда клиенты загружают данные на ваш диск, удаляют их или скачивают, мы обновляем БД. Поэтому если у вас нет проблем с БД (database is locked
, database is malformed
, file is not a database
, и т.д.), и нет чего-то, что использует место на этом диске тоже (chia например), то теоретически подсчёт на старте не нужен - данные из БД должны совпадать с реальностью.
Однако если другие обходчики (gc-filewalker
, retain
, piece:trash
, collector
) падают до завершения своей работы, БД не будет обновлена и данные “разъедутся”. На этот случай как раз используется обходчик на старте (used-space-filewalker
).