One of docker node has gone offline with strange reason

В этой ветке буду задавать вопросы по восстановлению ноды StorjD1.3

Я проделал все пункты из моего “мануала”, bandwidth.db, но теперь в логе вижу такую ошибку:

PS C:\Users\Storj D1> docker logs --tail 50 storagenodeD1.3
Error: No such container: storagenodeD1.3
PS C:\Users\Storj D1> docker run -d --restart unless-stopped --stop-timeout 300 -p 192.168.1.66:28971:28967/tcp -p 192.168.1.66:28971:28967/udp -p 127.0.0.1:14004:14002 -e WALLET=“0x8675290882f594227d9b69d1fc434bf54b2b5e6f” -e EMAIL="7437493@gmail.com" -e ADDRESS=“185.228.112.179:28971” -e STORAGE=“16.3TB” --mount type=bind,source=“F:\Identity\storagenode D1.3”,destination=/app/identity --mount type=bind,source=“F:\StorjD1.3”,destination=/app/config --name storagenodeD1.3 storjlabs/storagenode:latest
52af743c9d9b8cc6ccbe4a31c22b26c80c47498412026baf2b227fdc7b9a06f8
PS C:\Users\Storj D1>
PS C:\Users\Storj D1> docker logs --tail 50 storagenodeD1.3
15700K … … … … … 93% 18.3M 0s
15750K … … … … … 93% 18.9M 0s
15800K … … … … … 94% 9.68M 0s
15850K … … … … … 94% 11.6M 0s
15900K … … … … … 94% 8.40M 0s
15950K … … … … … 95% 4.87M 0s
16000K … … … … … 95% 17.5M 0s
16050K … … … … … 95% 2.68M 0s
16100K … … … … … 96% 2.66M 0s
16150K … … … … … 96% 18.8M 0s
16200K … … … … … 96% 19.0M 0s
16250K … … … … … 96% 15.1M 0s
16300K … … … … … 97% 9.62M 0s
16350K … … … … … 97% 7.82M 0s
16400K … … … … … 97% 15.0M 0s
16450K … … … … … 98% 6.43M 0s
16500K … … … … … 98% 5.04M 0s
16550K … … … … … 98% 7.67M 0s
16600K … … … … … 99% 21.7M 0s
16650K … … … … … 99% 7.12M 0s
16700K … … … … … 99% 13.5M 0s
16750K … … … … … 99% 21.7M 0s
16800K … … 100% 15.1M=4.0s

2023-04-28 21:29:20 (4.11 MB/s) - ‘/tmp/storagenode.zip’ saved [17217020/17217020]

2023-04-28 21:29:21,773 INFO Set uid to user 0 succeeded
2023-04-28 21:29:21,807 INFO RPC interface ‘supervisor’ initialized
2023-04-28 21:29:21,808 INFO supervisord started with pid 1
2023-04-28 21:29:22,812 INFO spawned: ‘processes-exit-eventlistener’ with pid 51
2023-04-28 21:29:22,818 INFO spawned: ‘storagenode’ with pid 52
2023-04-28 21:29:22,831 INFO spawned: ‘storagenode-updater’ with pid 53
2023-04-28T21:29:23.041Z INFO Configuration loaded {“Process”: “storagenode-updater”, “Location”: “/app/config/config.yaml”}
2023-04-28T21:29:23.042Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “contact.external-address”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “storage.allocated-disk-space”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “console.address”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “operator.email”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “healthcheck.enabled”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “server.private-address”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “storage.allocated-bandwidth”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “operator.wallet”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “healthcheck.details”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “server.address”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file key {“Process”: “storagenode-updater”, “Key”: “operator.wallet-features”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.caller”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.development”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.encoding”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.level”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.output”}
2023-04-28T21:29:23.052Z INFO Invalid configuration file value for key {“Process”: “storagenode-updater”, “Key”: “log.stack”}

И такую:
PS C:\Users\Storj D1> docker logs --tail 50 storagenodeD1.3

  •                           Type: TIMESTAMP
    
  •                           Nullable: false
    
  •                   ... // 12 elided lines
    
  •                   s"""
    
  •           ),
    
  •           (
    
  •                   s"""
    
  •                   Name: bandwidth_usage_rollups
    
  •                   Columns:
    
  •                           Name: action
    
  •                           Type: INTEGER
    
  •                           Nullable: false
    
  •                           Default: ""
    
  •                           Reference: nil
    
  •                           Name: amount
    
  •                           Type: BIGINT
    
  •                           Nullable: false
    
  •                           Default: ""
    
  •                           Reference: nil
    
  •                           Name: interval_start
    
  •                           Type: TIMESTAMP
    
  •                           Nullable: false
    
  •                   ... // 12 elided lines
    
  •                   s"""
    
  •           ),
    
  •   },
    
  •   Tables: nil,
    
  •   Indexes: []*dbschema.Index{
    
  •           s`Index<Table: bandwidth_usage, Name: idx_bandwidth_usage_created, Columns: created_at, Unique: false, Partial: "">`,
    
  •           s`Index<Table: bandwidth_usage, Name: idx_bandwidth_usage_satellite, Columns: satellite_id, Unique: false, Partial: "">`,
    
  •   },
    
  •   Indexes:   nil,
      Sequences: nil,
    

    }

      storj.io/storj/storagenode/storagenodedb.(*DB).preflight:413
      storj.io/storj/storagenode/storagenodedb.(*DB).Preflight:360
      main.cmdRun:110
      main.newRunCmd.func1:32
      storj.io/private/process.cleanup.func1.4:399
      storj.io/private/process.cleanup.func1:417
      github.com/spf13/cobra.(*Command).execute:852
      github.com/spf13/cobra.(*Command).ExecuteC:960
      github.com/spf13/cobra.(*Command).Execute:897
      storj.io/private/process.ExecWithCustomOptions:113
      storj.io/private/process.ExecWithCustomConfigAndLogger:79
      main.main:26
      runtime.main:250
    

2023-04-28 21:32:17,318 INFO stopped: storagenode (exit status 1)
2023-04-28 21:32:17,320 INFO stopped: processes-exit-eventlistener (terminated by SIGTERM)

Что-то с этим можно сделать?

Еще дополнительные вопрос:

Запуск Докера сильно грузит процессор и память. Процессор часто работает на 100%. Памяти 8Гб, иногда до 90% занято.

Процессы которые грузят Vmmem, системны прерывания и др.
Я читал посты на форуме и в интернете, как это отключить, но при отключении перестает работать докер. Подозреваю, что причиной падения 4-х нод стал какой-то перегруз системы.

После того, как я восстановлю, что смогу, я хочу перейти с винды на Ubuntu, развернуть докер там и подключить ноды к нему, это же ведь должно снизить нагрузку на железо? Насколько я понимаю, никаких виртуалок не нужно будет поднимать и все будет работать с меньшим количеством ресурсов и надежнее. Я правильно размышляю? Буду очень благодарен, если подскажите ссылку на установку такой конфигурации.

Железо сейчас такое:


Это жизнеспособно с Ubuntu и 4 нодами или нужно железо помощнее?

С уважением,
Александр

что-то остановило узел, это похоже на результат работы команды

docker stop storagenode3

остальные ошибки - результат остановки узла.

видимо исходная БД была пустая, проверьте:

ls d:/StorjD1.1/storage/bandwidth.db.bak

если не пустая, то можно попробовать выгрузить данные, но на этот раз заменив все обратные слэши на прямые (я уже забыл про эту особенность sqlite3):

  1. восстановить бэкап
cp d:/StorjD1.1/storage/bandwidth.db.bak d:/StorjD1.1/storage/bandwidth.db
  1. Открываем БД для выгрузки
c:\sqlite\sqlite3.exe d:/StorjD1.1/storage/bandwidth.db
  1. выгрузка
.mode insert
.output D:/StorjD1.1/dump_all.sql
.dump
.exit
  1. обработка
Get-Content d:/StorjD1.1/dump_all.sql | Select-String -NotMatch TRANSACTION | Select-String -NotMatch ROLLBACK | Select-String -NotMatch COMMIT | Set-Content -Encoding utf8 d:/StorjD1.1/dump_all_notrans.sql
  1. удаляем повреждённую БД
rm d:/StorjD1.1/storage/bandwidth.db
  1. Создаём новую и загружаем данные
c:\sqlite\sqlite3.exe d:/StorjD1.1/storage/bandwidth.db ".read d:/StorjD1.1/dump_all_notrans.sql"
  1. проверяем
ls d:/StorjD1.1/storage/bandwidth.db

Если снова 0, значит данные либо не выгрузились, либо исходная БД пустая.
Судя по ошибке

Эта БД больше не распознаётся как БД, и если копии нет, то придётся пересоздать эту БД.

  1. Удаляете повреждённую БД
rm d:/StorjD1.1/storage/bandwidth.db
  1. Переносите все БД в другую папку
mkdir d:/StorjD1.1/db-backup
mv d:/StorjD1.1/storage/*.db d:/StorjD1.1/db-backup/
  1. Запускаете узел обычной полной командой docker run
  2. Все БД будут пересозданы
  3. Останавливаете и удаляете контейнер
  4. Перезаписываете новые БД (кроме ранее повреждённой) вашими старыми БД
cp d:/StorjD1.1/db-backup/*.db d:/StorjD1.1/storage/
  1. Запускаете контейнер.

эта тоже повреждена. Нужно её либо перевыгрузить, либо пересоздать.

В первом кусочке лога ошибок не увидел.
Информационные сообщения не являются ошибкой, мешающей работе узла.

и подобные просто сообщения, storagenode-updater использует тот же config.yaml, что и узел, но он не знает многих опций оттуда и жалуется. Можно игнорировать, потому что INFO.

А вот это

хвост какой-то ошибки связанной с некорректной структурой какой-то из БД. Нужно отыскать начало этой ошибки, чтобы понять, какой.
Искать можно по database

docker logs storagenodeD1.3 2>&1 | sls "database"

но судя по контексту, это опять БД bandwidth.db.
Такого рода ошибки проще исправить пересоздав эту БД (инструкция была выше).

Это началось после одного из обновлений WSL2, они снова там что-то сломали.
Мне пришлось урезать аппетиты WSL2, чтобы не выедал все ресурсы (даже если они ему не нужны, он их выгребает, пока не кончатся): How to configure memory limits in WSL2 - Willem's Fizzy Logic

да, но есть проблема - ваши диски отформатированы в NTFS и вы использовали современную Windows 10. Свежие версии Windows 10/11 используют расширенные функции NTFS такие как сжатие и дедупликация. Вам необходимо будет отключить их для этих дисков прежде, чем использовать в Linux.
В Linux NTFS чужеродная система, поэтому расширенные функции не поддерживаются из коробки (хотя их можно включить, но потребуется сборка из исходников), и в принципе она работает в разы медленнее и постоянно возникают ошибки, которые исправлять надо в Windows, и памяти и процессора используется гораздо больше. Так что выигрыша при использовании NTFS в Linux вы не увидите, скорее станет только хуже.
Самым лучшим вариантом было бы сделать бэкап данных и отформатировать диск в ext4, затем восстановить данные. При использовании ext4 результат будет намного лучше.

В этой ветке буду задавать вопросы по восстановлению ноды StorjD1.2. Ноды D1.1, D1.3 и D1.4 я восстановил, Алексей, огромное спасибо за помощь! Осталось еще 1.

Лог ноды до восстановления:
PS C:\Users\Storj D1>
docker logs --tail 20 storagenodeD1.2
2023-04-30T12:15:04.949Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “ICES6ZTCFTNAU3YQALFSDGDBDJTKWEO2J5O3O3ERLKQ2EYV5CZSA”}
2023-04-30T12:15:05.148Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “TH2OMXAQCFPFPROUC2FD32W3Y53NI26FUCOLBYKNBB2PNIX7PLCQ”}
2023-04-30T12:15:05.388Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “D644HREHKPJP5ZMTOWCQICNTBHP2E65K6W4K6RFODK55CTQIDTPA”}
2023-04-30T12:15:05.738Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “POUUMBMGSNIWQMZ77UYJVL7BHSCURGMC3JHVKJ6ACYU6FD42FNWQ”}
2023-04-30T12:15:05.911Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “DD3SK6ERWPCJDYJD3DRFI4VAF4TDYIYUKJTN4U5NQIJ3CZ5AIW3A”}
2023-04-30T12:15:06.111Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “YE4UNCS7C5YZSG2EYVWQDGALBZE57G4RH4CDYNFUBLGPGAWQGFHQ”}
2023-04-30T12:15:06.304Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “WVHTBU4TROBXZAOBVVIT7LBC7SZBOTQ2RSVSTNIRPHTSDASO64KQ”}
2023-04-30T12:15:06.681Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “3UJ2HSVJSPGF5JE4NYQWWUR4M4QDEVCTCUHGRKPCLMWVVUUP7D4Q”}
2023-04-30T12:15:06.816Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “JNKMWU52N2EHVD6EWN5RCMYAEESWCPHZAW3L5VHNBJUTU2IRS5IQ”}
2023-04-30T12:15:06.972Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “RJOKAAJLFFRHHOSRDJZUZ6D4MFR4LCE7BRVWWQCYJ67S7NV6DXBA”}
2023-04-30T12:15:07.304Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “73OMPPIIJSSQLBF4W2CZMO3VXDPH7SL4OTNLRTJ2B6WOWNOWFGDA”}
2023-04-30T12:15:07.497Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “6K66DMCVUXEC6YQ43RVZMTZCM2ZQ4RONTXB2JDTX3G5X5HEKTHWQ”}
2023-04-30T12:15:07.748Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “AODTJKDYVDKXNRUK5P3XD7Z26IYCXIWZ5ZXILQ5FZNN7XKADE4KA”}
2023-04-30T12:15:07.929Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “J4CR5LFEDIX6726JMXYM3YIWKBBB66RAF7372JKVPJNGQIE6HSIQ”}
2023-04-30T12:15:08.130Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “JUFWXN6NPMDQP54BA3TMEADZFUKCMMNSFOKGAP4DDGUZKPG62CJQ”}
2023-04-30T12:15:08.298Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “5PX4AXG27TVNJKM547JNQNGEDSV7GUF6Q2INI7UBFZRN3QSSFWQA”}
2023-04-30T12:15:08.486Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “HDMRC4SMMDJ7LJX5IN4JDSZ76Q2IQP6KHKRHJTCH2ZWSR3GJZPIA”}
2023-04-30T12:15:08.648Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “GLI5YAOC5WI5Z6H66DPPVBTI4B26TLB5NPBXM4FFUEY3L6AIKTKQ”}
2023-04-30T12:15:09.027Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “T5K3RTSM3SA74XJYUNS46FRVJGSNED3T2HPWPVN4GWT7MIOAOIEA”}
2023-04-30T12:15:09.487Z INFO collector deleted expired piece {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “Piece ID”: “YHKFGDILS3A43JXCI3WDXPRQ7FPKEDHEVTL6RO3WUCEU4W7PMS5A”}
PS C:\Users\Storj D1>
Установить sqlite3 v3.25.2 or later
Создать папку C:\sqlite

Создал и установил

Остановить ноду в докере
Остановил

PS C:\Windows\system32>
Get-ChildItem E:\StorjD1.2\storage*.db -File | %{$.Name + " " + $(C:\sqlite\sqlite3.exe $.FullName “PRAGMA integrity_check;”)}
Ответ:
bandwidth.db *** in database main *** Main freelist: size is 310 but should be 309 On tree page 2 cell 54: 2nd reference to page 2570 On tree page 2 cell 53: Rowid 344982 out of order row 51233 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51234 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51235 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51236 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51237 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51238 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51239 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51240 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51241 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51242 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51243 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51244 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51245 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51246 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51247 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51248 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51249 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51250 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51251 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51252 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51253 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51254 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51255 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51256 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51257 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51258 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51259 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51260 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51261 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51262 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51263 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51264 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51265 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51266 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51267 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51268 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51269 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51270 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51271 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51272 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51273 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51274 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51275 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51276 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51277 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51278 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51279 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51280 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51281 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51282 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51283 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51284 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51285 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51286 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51287 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51288 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51289 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 row 51290 missing from index sqlite_autoindex_bandwidth_usage_rollups_1 wrong # of entries in index sqlite_autoindex_bandwidth_usage_rollups_1 row 3323 missing from index idx_bandwidth_usage_created row 3323 missing from index idx_bandwidth_usage_satellite row 3324 missing from index idx_bandwidth_usage_created row 3324 missing from index idx_bandwidth_usage_satellite row 3325 missing from index idx_bandwidth_usage_created row 3325 missing from index idx_bandwidth_usage_satellite row 3326 missing from index idx_bandwidth_usage_created row 3326 missing from index idx_bandwidth_usage_satellite wrong # of entries in index idx_bandwidth_usage_created wrong # of entries in index idx_bandwidth_usage_satellite
heldamount.db ok
info.db ok
notifications.db ok
orders.db ok
pieceinfo.db ok
piece_expiration.db ok
piece_spaced_used.db ok
pricing.db ok
reputation.db ok
satellites.db ok
secret.db ok
storage_usage.db ok
used_serial.db ok

///////Создаю бак
cp E:\StorjD1.2\storage\bandwidth.db E:\StorjD1.2\storage\bandwidth.db.bak

///////Открываю базу данных
c:\sqlite\sqlite3.exe D:\StorjD1.1\storage\bandwidth.db

Затем внутри Sqlite выгружаю из нее данные:
.mode insert
.output E:\StorjD1.2\dump_all.sql
.dump
.exit

Что-то делаю этой командой:
Get-Content E:\StorjD1.2dump_all.sql | Select-String -NotMatch TRANSACTION | Select-String -NotMatch ROLLBACK | Select-String -NotMatch COMMIT | Set-Content -Encoding utf8 E:\StorjD1.2\dump_all_notrans.sql
Почему-то файл называется так StorjD1.2dump_all.sql и находится в корне. Наверное, где-то не прочитался \

Удаляю базу данных:
rm E:\StorjD1.2\storage\bandwidth.db

c:\sqlite\sqlite3.exe E:\StorjD1.2\storage\bandwidth.db “.read E:/StorjD1.2/dump_all_notrans.sql”
Слэш между StorjD1.1\dump_all_notrans.sql почему-то не читается системой. Заменил его на обратный слэш / и заработало

ls E:\StorjD1.2/storage/bandwidth.db

На всякий случай сделал это тоже:
Эта БД больше не распознаётся как БД, и если копии нет, то придётся пересоздать эту БД.

Удаляете повреждённую БД
rm e:/StorjD1.2/storage/bandwidth.db
Переносите все БД в другую папку
mkdir e:/StorjD1.2/db-backup
mv e:/StorjD1.2/storage/.db e:/StorjD1.2/db-backup/
Запускаете узел обычной полной командой docker run
Все БД будут пересозданы
Останавливаете и удаляете контейнер
Перезаписываете новые БД (кроме ранее повреждённой) вашими старыми БД
cp e:/StorjD1.2/db-backup/
.db e:/StorjD1.2/storage/
Запускаете контейнер.

Лог после выполненных всех команд
PS C:\Users\Storj D1> docker logs --tail 20 storagenodeD1.2
2023-04-30T15:52:25.221Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “attempts”: 6, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:27.089Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”, “attempts”: 6, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:28.004Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “attempts”: 6, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:28.637Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”, “attempts”: 6, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:30.261Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6”, “attempts”: 6, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:48.585Z INFO pieces:trash emptying trash started {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”}
2023-04-30T15:52:57.335Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12rfG3sh9NCWiX3ivPjq2HtdLmbqCrvHVEzJubnzFzosMuawymB”, “attempts”: 7, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:57.561Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “attempts”: 7, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:52:59.538Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”, “attempts”: 7, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:53:00.903Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “attempts”: 7, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:53:01.311Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”, “attempts”: 7, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:53:03.215Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6”, “attempts”: 7, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:53:29.263Z INFO pieces:trash emptying trash started {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”}
2023-04-30T15:53:46.524Z INFO pieces:trash emptying trash started {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”}
2023-04-30T15:54:01.714Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12rfG3sh9NCWiX3ivPjq2HtdLmbqCrvHVEzJubnzFzosMuawymB”, “attempts”: 8, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:54:01.855Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “attempts”: 8, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:54:03.973Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”, “attempts”: 8, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:54:05.792Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “attempts”: 8, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: EOF\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:149\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:54:06.102Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”, “attempts”: 8, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-04-30T15:54:08.133Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6”, “attempts”: 8, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:143\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:102\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}

Дэшборд выглядит так:


И так:

Bandwidth.db после восстановления имеет странный размер, только 32кб
image

Что с этим нужно сделать?

С уважением,
Александр

Еще дополнительные вопросы:

  1. Статут Suspension это очень плохо? Вероятно, это связано с длительным периодом offline. Если нода будет дальше работать нормально, он вернется к 100%?


    Нода имеет нулевой Ingress, это из-за статуса suspension?
    image

  2. Есть ли возможность развернуть пост в виде дерева? Не очень удобно скролить все от начала до конца

  3. Размер bandwidth.db сильно отличается у каждой ноды, есть 1.8Мб, а есть 37Мб. Причем это не зависит от объема хранящейся информации. Это сильно влияет на время восстановления. Почему так происходит?

  4. У меня есть несколько дисков по 18Тб. С точки зрения надежности сохранения данных, как лучше поступить, сделать 1 ноду на все 18Тб или поделить диск на 4-5 отдельных нод? В винде, это наверное точно не стоит делать, потому, что увеличится количество виртуалок и докер умрет, а в Ubuntu?

  5. У меня есть дисковое пространство и я могу забэкапить ноду, для переноса ее на диск отформатированный под Линукс. Это нужно делать robocopy на диск с файловой системой Ext3, так-же, как при переносе ноды с одного диска NTFS на другой NTFS?

  6. Есть предпочтения какую Ubuntu и какой Docker ставить для переноса на нее нод из винды?

С уважением,
Александр

это делается только в случае, если выгрузка/загрузка не помогла (размер ноль), ну или вы не хотите тратить время на восстановление. Это два взаимоисключающих метода, они не применяются одновременно, либо один, либо другой, но не оба вместе.

ваш узел оффлайн (недоступен снаружи), проверьте правило проброса портов TCP+UDP на роутере, наличие правил в брандмауэре для обоих портов - для TCP и UDP, что внешний адрес ADDRESS указывает на правильный внешний адрес и порт.

Да, это плохо и это не связано с оффлайн. Это означает, что узел доступен (онлайн), отвечает на запросы аудита, но возвращает ошибку вместо запрошенного кусочка для проверки.
Поищите в логе, почему GET_AUDIT и/или GET_REPAIR завершаются ошибкой и какой.
После того, как узел начнёт проходить аудиты, suspension score будет восстанавливаться с каждым успешным аудитом.
Ingress будет ноль, пока оценка online score не поднимется выше 60%, до тех пор никакого входящего трафика. Online score восстанавливается гораздо медленнее, узел должен быть следующие 30 дней онлайн для полного восстановления этой оценки. Каждый downtime требует дополнительных 30 дней онлайн для полного восстановления.

можно кликнуть на ссылку


и тогда вы увидите только ответы на пост. Другой вариант - я могу разделить ваш топик на раздельные для каждого узла.

у них и разное использование bandwidth, на какие-то чаще заливают и чаще скачивают, у каких-то - реже и меньше. Плюс возраст узла.

иметь множество узлов на одном диске запрещено Node Operator Terms & Conditions, но и смысла ноль. Все узлы в одной подсети /24 публичных IP рассматриваются как один узел для загрузок от клиентов и как разные для скачиваний, аудитов, исходящего траффика восстановления и проверок онлайн. То есть объём данных может быть тот же или меньше (денег столько же или меньше), но диск будет изнашиваться быстрее из-за постоянного случайного параллельного доступа в разные сектора несколькими процессами, ну и несколько узлов на одном диске будут мешать друг другу, то есть проигрывать такие узлы будут чаще, а значит - меньше данных.
Так что один диск - один узел.

во-первых, диск должен быть отформатирован в ext4, копирование можно делать и robocopy и rsync, но Linux с этим диском должен быть запущен. Для robocopy вам придётся настроить на Linux samba, чтобы сделать диск доступным по сети, для rsync вы можете использовать wsl2, а на Linux нужно настроить ssh сервер (но это придётся сделать всё равно для удобства). См. How do I migrate my node to a new device? - Storj Docs
Можно ещё попробовать смонтировать диск в wsl2, отформатировать его в ext4 и копировать прямо там с помощью rsync локально. Можно и robocopy из Windows, используя сетевой путь типа \\wsl$\Ubuntu20.04\mnt\new-disk\ в качестве назначения (/mnt/new-disk - точка монтирования нового диска).

Ubuntu лучше LTS, docker ставить по инструкции от docker, не использовать snap версию (уж лучше старую из apt, чем свежую из snap, со старым docker тоже будет работать).

1 Like

Алексей спасибо!
Все подробно и по делу. Есть некоторые вопросы по мигрированию на Linux, но я сформулирую и задам их позже, когда приступлю к этому процессу.

Все упавшие ноды восстановил, статус suspended видимо был получен до их падения и сейчас восстановился до 100% на всех нодах. Записал понятные для меня мануалы по восстановлению, чтоб если подобное случиться опять, меньше задавать вопросов и быстрее починить.

С уважением,
Александр

1 Like