Я сохраняю файлы в своей бухгалтерской книге с помощью Fabric 1.1 и leveldb. Как и ожидалось, это приводит к быстрому нехватке места в док-контейнерах одноранговых узлов. Я думал, что переход на CouchDB решит проблему (оно переносит проблему в контейнер CouchDB, но я могу справиться с этим), но, к моему удивлению, я проверил, что использование CouchDB действительно сохраняет данные в контейнеры CouchDB, но он также сохраняет данные внутри сверстников!. Например, загрузка файла размером 1,3 МБ в мое приложение, настроенное на использование CouchDB, также создает «блочный файл» размером /var/hyperledger/production/ledgersData/chains/chains/mychannel
размером 1,3 МБ внутри вовлеченных одноранговых узлов. Как это может быть? Можно ли отключить это поведение и сохранять данные только в диван-контейнерах? (или смонтированные тома для этих контейнеров), исправлена ли эта ошибка в более новых версиях ткани? Если это невозможно, как я могу настроить более крупные одноранговые узлы?
Я знаю, что могу изменить решение для хеш-вложений, сохранить только ссылки на эти хэши в моей книге и хранить данные во внешнем хранилище данных, но я работаю над проектом с этим требованием, и изменить подход невозможно.
Спасибо.
У однорангового узла есть как реестр на основе файлов («блокчейн»), так и база данных состояний, которая хранит/кеширует последнее известное значение для любого заданного ключа.
Состояние может храниться либо в goleveldb, либо в CouchDB. Реестр всегда хранится в файловой системе однорангового узла. (Обратите внимание, что файлы данных goleveldb также хранятся в одноранговой файловой системе).
Местоположение устанавливается с помощью peer.fileSystemPath
в core.yaml
, а значение по умолчанию — /var/hyperledger/production
. Вы также можете смонтировать внешний том для этого, если хотите хранить файлы на хосте, а не внутри файловой системы контейнера.
Большое спасибо. Смонтировал тома за пределами одноранговых узлов с помощью docker-compose, и теперь у меня есть данные моей бухгалтерской книги за пределами однорангового узла. Круто!. Еще один вопрос: так что леджер всегда хранится с помощью golevel?