This guide covers how to safely upgrade Lotus when running a storage provider.
The are two types of upgrades:
- The upgrade in-place is the default procedure and just updates the software
- The upgrade with reset removes all the data and starts from scratch.
Cross-check your config file
All upgrade types require you to double-check that your configuration files are up-to-date. You can do this by exporting the default configuration files from Lotus and comparing them to your configuration files.
To export the default configuration files from Lotus, run:
lotus-miner config default
[API] # Binding address for the Lotus API # # type: string # env var: LOTUS_API_LISTENADDRESS #ListenAddress = "/ip4/127.0.0.1/tcp/2345/http" ...
If you would prefer to have Lotus export the default configuration to a file, run:
lotus-miner config default >> ~/default-lotus-miner-configuration.toml
Once you have an updated default configuration file from the new version, compare it with your configuration file and make sure that you’re not missing any sections. You can use the
diff command to produce a list of changes that would need to be made to the your configuration file, to make it match the updated default configuration file.
If you keep the same formatting as the default configuration file it should be fairly easy to spot difference and new sections using this command:
diff -y -W 200 your-config.toml default-lotus-miner-configuration.toml
vertical bar sign indcates that there is a difference in that line between your configuration file, and the default configuration file.
#ListenAddress = "/ip4/127.0.0.1/tcp/4567/http" | #ListenAddress = "/ip4/127.0.0.1/tcp/2345/http"
greater-than-sign indicates that your configuration file is missing some lines that are included in the updated default configuration file.
> # env var: LOTUS_STORAGE_ALLOWPROVEREPLICAUPDATE2 > #AllowProveReplicaUpdate2 = true >
You can also check the Lotus release notes for details on what new sections have been added.
- Safely shutdown your
lotus-mineras explained here.
- Shutdown any seal workers
- Shutdown your Lotus Node (
lotus daemon stopor
systemctl stop lotus-daemon)
- Pull the new version and rebuild. For more information read the Lotus installation guide again:
export RUSTFLAGS="-C target-cpu=native -g" export FFI_BUILD_FROM_SOURCE=1 git pull git checkout <tag_or_branch> git submodule update make clean make all make install
- Start the Lotus daemon and wait for it to finish syncing:
lotus daemon # or when using systemctl systemctl start lotus-daemon
Wait for it to finish syncing
lotus sync wait
- Start your
Upgrade with reset
- Backing up your Lotus wallets
- You may want to backup your Lotus Node and Miner configurations as well.
Once you are ready, stop everything and delete the data folders (or rename them):
# Assuming you are using the default data folders rm -rf ~/.lotus rm -rf ~/.lotusminer rm -rf ~/.lotusworker
After that Lotus applications will start from scratch.