Metadata written infinitely #857

Open
opened 2024-08-20 11:47:43 +00:00 by Jad · 5 comments

With the following setup under podman, garage is writing to the metadata infinitely.

When garage is idle it starts writing to the metadata with avg 400MB/s and never stops.
Medatada for both instances is 56G (it should not write forever)
Logs are filled with when the writings starts:

garage-d1[5436]: 2024-08-17T09:12:05.718616Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.718786Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.719946Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.720071Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.721375Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.721695Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.722966Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.723250Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.724352Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.724607Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.725843Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.725991Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.727287Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.727359Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.728693Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.728721Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.730069Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.730130Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.731486Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.731558Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.732822Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.732938Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.734113Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.734358Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.735457Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.735902Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.736740Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.737449Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.738399Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.739044Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.739826Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.740562Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.741310Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.741959Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.742714Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.743451Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.744136Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.745054Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.745604Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.746605Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.747005Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.748095Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.748341Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.749639Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.749783Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.751102Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.751249Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.752903Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.752641Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.754315Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.754485Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.755939Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.755891Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.757215Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.757482Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.758564Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.759030Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.760049Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.760606Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.761481Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d1[5436]: 2024-08-17T09:12:05.762063Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
garage-d2[9155]: 2024-08-17T09:12:05.762891Z  INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0%
  • garage status
2024-08-17T17:10:53.778166Z  INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2024-08-17T17:10:53.820855Z  INFO garage_net::netapp: Connection established to 1eff257f9c903e57
==== HEALTHY NODES ====
ID                Hostname  Address            Tags  Zone  Capacity  DataAvail
da5d3f8b92f21434  garage    192.168.4.70:3911  [d2]  ashe  8.5 TB    2.9 TB (29.3%)
1eff257f9c903e57  garage    192.168.4.70:3901  [d1]  ashe  8.5 TB    2.9 TB (29.3%)
  • garage stats -a
2024-08-17T17:07:26.258416Z  INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2024-08-17T17:07:26.302831Z  INFO garage_net::netapp: Connection established to 1eff257f9c903e57

======================
Stats for node 1eff257f9c903e57:

Garage version: v1.0.0 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs]
Rust compiler version: 1.73.0

Database engine: sqlite3 v3.45.0 (using rusqlite crate)

Table stats:
  Table      Items    MklItems  MklTodo  GcTodo
  bucket_v2  8        9         0        0
  key        1        1         0        0
  object     339880   425240    0        0
  version    259780   321475    0        62143
  block_ref  6738164  7850007   4744     282561

Block manager stats:
  number of RC entries (~= number of blocks): 6400410
  resync queue length: 17484122
  blocks with resync errors: 1


======================
Stats for node da5d3f8b92f21434:

Garage version: v1.0.0 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs]
Rust compiler version: 1.73.0

Database engine: sqlite3 v3.45.0 (using rusqlite crate)

Table stats:
  Table      Items    MklItems  MklTodo  GcTodo
  bucket_v2  8        9         0        0
  key        1        1         0        0
  object     339880   425240    0        0
  version    246468   314379    6856     0
  block_ref  6724853  7837411   14152    0

Block manager stats:
  number of RC entries (~= number of blocks): 6400410
  resync queue length: 14298634
  blocks with resync errors: 0


======================
Cluster statistics:

Storage nodes:
  ID                Hostname  Zone  Capacity  Part.  DataAvail              MetaAvail
  da5d3f8b92f21434  garage    ashe  8.5 TB    256    2.9 TB/9.9 TB (29.3%)  68.6 GB/134.7 GB (50.9%)
  1eff257f9c903e57  garage    ashe  8.5 TB    256    2.9 TB/9.9 TB (29.3%)  68.5 GB/134.7 GB (50.9%)

Estimated available storage space cluster-wide (might be lower in practice):
  data: 2.9 TB
  metadata: 68.5 GB
  • garage layout show
2024-08-17T17:11:26.938438Z  INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2024-08-17T17:11:27.217075Z  INFO garage_net::netapp: Connection established to 1eff257f9c903e57
==== CURRENT CLUSTER LAYOUT ====
ID                Tags  Zone  Capacity  Usable capacity
1eff257f9c903e57  d1    ashe  8.5 TB    8.5 TB (100.0%)
da5d3f8b92f21434  d2    ashe  8.5 TB    8.5 TB (100.0%)

Zone redundancy: maximum

Current cluster layout version: 1
  • garage worker list
2024-08-17T17:12:16.716263Z  INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2024-08-17T17:12:16.758839Z  INFO garage_net::netapp: Connection established to 1eff257f9c903e57
TID  State  Name                          Tranq  Done   Queue     Errors  Consec  Last
1    Busy   Block resync worker #1        2      -      17483992  -       -
9    Busy*  Block scrub worker            4      2.02%  -         -       -
39   Busy   version sync                  -      -      66        13      0       6 minutes ago
42   Busy   block_ref Merkle              -      -      81236     -       -
43   Busy   block_ref sync                -      -      55        13      0       6 minutes ago
44   Busy   block_ref GC                  -      -      171969    14      0       5 minutes ago
2    Idle   Block resync worker #2        -      -      -         -       -
3    Idle   Block resync worker #3        -      -      -         -       -
4    Idle   Block resync worker #4        -      -      -         -       -
5    Idle   Block resync worker #5        -      -      -         -       -
6    Idle   Block resync worker #6        -      -      -         -       -
7    Idle   Block resync worker #7        -      -      -         -       -
8    Idle   Block resync worker #8        -      -      -         -       -
10   Idle   bucket_v2 Merkle              -      -      0         -       -
11   Idle   bucket_v2 sync                -      -      0         -       -
12   Idle   bucket_v2 GC                  -      -      0         -       -
13   Idle   bucket_v2 queue               -      -      0         -       -
14   Idle   bucket_alias Merkle           -      -      0         -       -
15   Idle   bucket_alias sync             -      -      0         -       -
16   Idle   bucket_alias GC               -      -      0         -       -
17   Idle   bucket_alias queue            -      -      0         -       -
18   Idle   key Merkle                    -      -      0         -       -
19   Idle   key sync                      -      -      0         -       -
20   Idle   key GC                        -      -      0         -       -
21   Idle   key queue                     -      -      0         -       -
22   Idle   object Merkle                 -      -      0         -       -
23   Idle   object sync                   -      -      0         20      0       6 minutes ago
24   Idle   object GC                     -      -      0         -       -
25   Idle   object queue                  -      -      0         -       -
26   Idle   bucket_object_counter Merkle  -      -      0         -       -
27   Idle   bucket_object_counter sync    -      -      0         20      0       6 minutes ago
28   Idle   bucket_object_counter GC      -      -      0         -       -
29   Idle   bucket_object_counter queue   -      -      0         -       -
30   Idle   multipart_upload Merkle       -      -      0         -       -
31   Idle   multipart_upload sync         -      -      0         13      0       6 minutes ago
32   Idle   multipart_upload GC           -      -      109       14      0       5 minutes ago
33   Idle   multipart_upload queue        -      -      0         -       -
34   Idle   bucket_mpu_counter Merkle     -      -      0         -       -
35   Idle   bucket_mpu_counter sync       -      -      0         16      0       6 minutes ago
36   Idle   bucket_mpu_counter GC         -      -      26        14      0       5 minutes ago
37   Idle   bucket_mpu_counter queue      -      -      0         -       -
38   Idle   version Merkle                -      -      0         -       -
40   Idle   version GC                    -      -      29609     14      0       5 minutes ago
41   Idle   version queue                 -      -      0         -       -
45   Idle   block_ref queue               -      -      0         -       -
46   Idle   object lifecycle worker       -      -      -         -       -
47   Idle   k2v_item Merkle               -      -      0         -       -
48   Idle   k2v_item sync                 -      -      0         -       -
49   Idle   k2v_item GC                   -      -      0         -       -
50   Idle   k2v_item queue                -      -      0         -       -
51   Idle   k2v_index_counter_v2 Merkle   -      -      0         -       -
52   Idle   k2v_index_counter_v2 sync     -      -      0         -       -
53   Idle   k2v_index_counter_v2 GC       -      -      0         -       -
54   Idle   k2v_index_counter_v2 queue    -      -      0         -       -
55   Idle   Metadata snapshot worker      -      -      -         -       -
2024-08-17T17:12:33.211165Z  INFO garage_net::netapp: Connected to 127.0.0.1:3911, negotiating handshake...
2024-08-17T17:12:33.254732Z  INFO garage_net::netapp: Connection established to da5d3f8b92f21434
TID  State  Name                          Tranq  Done    Queue     Errors  Consec  Last
1    Busy*  Block resync worker #1        2      -       14298433  -       -
9    Busy   Block scrub worker            4      36.64%  -         -       -
42   Busy   block_ref Merkle              -      -       79476     -       -
2    Idle   Block resync worker #2        -      -       -         -       -
3    Idle   Block resync worker #3        -      -       -         -       -
4    Idle   Block resync worker #4        -      -       -         -       -
5    Idle   Block resync worker #5        -      -       -         -       -
6    Idle   Block resync worker #6        -      -       -         -       -
7    Idle   Block resync worker #7        -      -       -         -       -
8    Idle   Block resync worker #8        -      -       -         -       -
10   Idle   bucket_v2 Merkle              -      -       0         -       -
11   Idle   bucket_v2 sync                -      -       0         -       -
12   Idle   bucket_v2 GC                  -      -       0         -       -
13   Idle   bucket_v2 queue               -      -       0         -       -
14   Idle   bucket_alias Merkle           -      -       0         -       -
15   Idle   bucket_alias sync             -      -       0         -       -
16   Idle   bucket_alias GC               -      -       0         -       -
17   Idle   bucket_alias queue            -      -       0         -       -
18   Idle   key Merkle                    -      -       0         -       -
19   Idle   key sync                      -      -       0         -       -
20   Idle   key GC                        -      -       0         -       -
21   Idle   key queue                     -      -       0         -       -
22   Idle   object Merkle                 -      -       0         -       -
23   Idle   object sync                   -      -       0         -       -
24   Idle   object GC                     -      -       0         -       -
25   Idle   object queue                  -      -       0         -       -
26   Idle   bucket_object_counter Merkle  -      -       0         -       -
27   Idle   bucket_object_counter sync    -      -       0         -       -
28   Idle   bucket_object_counter GC      -      -       0         -       -
29   Idle   bucket_object_counter queue   -      -       0         -       -
30   Idle   multipart_upload Merkle       -      -       0         -       -
31   Idle   multipart_upload sync         -      -       0         -       -
32   Idle   multipart_upload GC           -      -       0         -       -
33   Idle   multipart_upload queue        -      -       0         -       -
34   Idle   bucket_mpu_counter Merkle     -      -       0         -       -
35   Idle   bucket_mpu_counter sync       -      -       0         -       -
36   Idle   bucket_mpu_counter GC         -      -       0         -       -
37   Idle   bucket_mpu_counter queue      -      -       0         -       -
38   Idle   version Merkle                -      -       0         -       -
39   Idle   version sync                  -      -       0         -       -
40   Idle   version GC                    -      -       0         -       -
41   Idle   version queue                 -      -       0         -       -
43   Idle   block_ref sync                -      -       0         -       -
44   Idle   block_ref GC                  -      -       0         -       -
45   Idle   block_ref queue               -      -       0         -       -
46   Idle   object lifecycle worker       -      -       -         -       -
47   Idle   k2v_item Merkle               -      -       0         -       -
48   Idle   k2v_item sync                 -      -       0         -       -
49   Idle   k2v_item GC                   -      -       0         -       -
50   Idle   k2v_item queue                -      -       0         -       -
51   Idle   k2v_index_counter_v2 Merkle   -      -       0         -       -
52   Idle   k2v_index_counter_v2 sync     -      -       0         -       -
53   Idle   k2v_index_counter_v2 GC       -      -       0         -       -
54   Idle   k2v_index_counter_v2 queue    -      -       0         -       -
55   Idle   Metadata snapshot worker      -      -       -         -       -
With the following setup under podman, garage is writing to the metadata infinitely. When garage is idle it starts writing to the metadata with avg 400MB/s and never stops. Medatada for both instances is 56G (it should not write forever) Logs are filled with when the writings starts: ``` garage-d1[5436]: 2024-08-17T09:12:05.718616Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.718786Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.719946Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.720071Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.721375Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.721695Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.722966Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.723250Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.724352Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.724607Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.725843Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.725991Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.727287Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.727359Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.728693Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.728721Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.730069Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.730130Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.731486Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.731558Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.732822Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.732938Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.734113Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.734358Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.735457Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.735902Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.736740Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.737449Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.738399Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.739044Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.739826Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.740562Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.741310Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.741959Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.742714Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.743451Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.744136Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.745054Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.745604Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.746605Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.747005Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.748095Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.748341Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.749639Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.749783Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.751102Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.751249Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.752903Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.752641Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.754315Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.754485Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.755939Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.755891Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.757215Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.757482Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.758564Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.759030Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.760049Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.760606Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.761481Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d1[5436]: 2024-08-17T09:12:05.762063Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% garage-d2[9155]: 2024-08-17T09:12:05.762891Z INFO garage_db::sqlite_adapter: Sqlite snapshot progres: 0% ``` - garage status ``` 2024-08-17T17:10:53.778166Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake... 2024-08-17T17:10:53.820855Z INFO garage_net::netapp: Connection established to 1eff257f9c903e57 ==== HEALTHY NODES ==== ID Hostname Address Tags Zone Capacity DataAvail da5d3f8b92f21434 garage 192.168.4.70:3911 [d2] ashe 8.5 TB 2.9 TB (29.3%) 1eff257f9c903e57 garage 192.168.4.70:3901 [d1] ashe 8.5 TB 2.9 TB (29.3%) ``` - garage stats -a ``` 2024-08-17T17:07:26.258416Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake... 2024-08-17T17:07:26.302831Z INFO garage_net::netapp: Connection established to 1eff257f9c903e57 ====================== Stats for node 1eff257f9c903e57: Garage version: v1.0.0 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs] Rust compiler version: 1.73.0 Database engine: sqlite3 v3.45.0 (using rusqlite crate) Table stats: Table Items MklItems MklTodo GcTodo bucket_v2 8 9 0 0 key 1 1 0 0 object 339880 425240 0 0 version 259780 321475 0 62143 block_ref 6738164 7850007 4744 282561 Block manager stats: number of RC entries (~= number of blocks): 6400410 resync queue length: 17484122 blocks with resync errors: 1 ====================== Stats for node da5d3f8b92f21434: Garage version: v1.0.0 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs] Rust compiler version: 1.73.0 Database engine: sqlite3 v3.45.0 (using rusqlite crate) Table stats: Table Items MklItems MklTodo GcTodo bucket_v2 8 9 0 0 key 1 1 0 0 object 339880 425240 0 0 version 246468 314379 6856 0 block_ref 6724853 7837411 14152 0 Block manager stats: number of RC entries (~= number of blocks): 6400410 resync queue length: 14298634 blocks with resync errors: 0 ====================== Cluster statistics: Storage nodes: ID Hostname Zone Capacity Part. DataAvail MetaAvail da5d3f8b92f21434 garage ashe 8.5 TB 256 2.9 TB/9.9 TB (29.3%) 68.6 GB/134.7 GB (50.9%) 1eff257f9c903e57 garage ashe 8.5 TB 256 2.9 TB/9.9 TB (29.3%) 68.5 GB/134.7 GB (50.9%) Estimated available storage space cluster-wide (might be lower in practice): data: 2.9 TB metadata: 68.5 GB ``` - garage layout show ``` 2024-08-17T17:11:26.938438Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake... 2024-08-17T17:11:27.217075Z INFO garage_net::netapp: Connection established to 1eff257f9c903e57 ==== CURRENT CLUSTER LAYOUT ==== ID Tags Zone Capacity Usable capacity 1eff257f9c903e57 d1 ashe 8.5 TB 8.5 TB (100.0%) da5d3f8b92f21434 d2 ashe 8.5 TB 8.5 TB (100.0%) Zone redundancy: maximum Current cluster layout version: 1 ``` - garage worker list ``` 2024-08-17T17:12:16.716263Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake... 2024-08-17T17:12:16.758839Z INFO garage_net::netapp: Connection established to 1eff257f9c903e57 TID State Name Tranq Done Queue Errors Consec Last 1 Busy Block resync worker #1 2 - 17483992 - - 9 Busy* Block scrub worker 4 2.02% - - - 39 Busy version sync - - 66 13 0 6 minutes ago 42 Busy block_ref Merkle - - 81236 - - 43 Busy block_ref sync - - 55 13 0 6 minutes ago 44 Busy block_ref GC - - 171969 14 0 5 minutes ago 2 Idle Block resync worker #2 - - - - - 3 Idle Block resync worker #3 - - - - - 4 Idle Block resync worker #4 - - - - - 5 Idle Block resync worker #5 - - - - - 6 Idle Block resync worker #6 - - - - - 7 Idle Block resync worker #7 - - - - - 8 Idle Block resync worker #8 - - - - - 10 Idle bucket_v2 Merkle - - 0 - - 11 Idle bucket_v2 sync - - 0 - - 12 Idle bucket_v2 GC - - 0 - - 13 Idle bucket_v2 queue - - 0 - - 14 Idle bucket_alias Merkle - - 0 - - 15 Idle bucket_alias sync - - 0 - - 16 Idle bucket_alias GC - - 0 - - 17 Idle bucket_alias queue - - 0 - - 18 Idle key Merkle - - 0 - - 19 Idle key sync - - 0 - - 20 Idle key GC - - 0 - - 21 Idle key queue - - 0 - - 22 Idle object Merkle - - 0 - - 23 Idle object sync - - 0 20 0 6 minutes ago 24 Idle object GC - - 0 - - 25 Idle object queue - - 0 - - 26 Idle bucket_object_counter Merkle - - 0 - - 27 Idle bucket_object_counter sync - - 0 20 0 6 minutes ago 28 Idle bucket_object_counter GC - - 0 - - 29 Idle bucket_object_counter queue - - 0 - - 30 Idle multipart_upload Merkle - - 0 - - 31 Idle multipart_upload sync - - 0 13 0 6 minutes ago 32 Idle multipart_upload GC - - 109 14 0 5 minutes ago 33 Idle multipart_upload queue - - 0 - - 34 Idle bucket_mpu_counter Merkle - - 0 - - 35 Idle bucket_mpu_counter sync - - 0 16 0 6 minutes ago 36 Idle bucket_mpu_counter GC - - 26 14 0 5 minutes ago 37 Idle bucket_mpu_counter queue - - 0 - - 38 Idle version Merkle - - 0 - - 40 Idle version GC - - 29609 14 0 5 minutes ago 41 Idle version queue - - 0 - - 45 Idle block_ref queue - - 0 - - 46 Idle object lifecycle worker - - - - - 47 Idle k2v_item Merkle - - 0 - - 48 Idle k2v_item sync - - 0 - - 49 Idle k2v_item GC - - 0 - - 50 Idle k2v_item queue - - 0 - - 51 Idle k2v_index_counter_v2 Merkle - - 0 - - 52 Idle k2v_index_counter_v2 sync - - 0 - - 53 Idle k2v_index_counter_v2 GC - - 0 - - 54 Idle k2v_index_counter_v2 queue - - 0 - - 55 Idle Metadata snapshot worker - - - - - ``` ``` 2024-08-17T17:12:33.211165Z INFO garage_net::netapp: Connected to 127.0.0.1:3911, negotiating handshake... 2024-08-17T17:12:33.254732Z INFO garage_net::netapp: Connection established to da5d3f8b92f21434 TID State Name Tranq Done Queue Errors Consec Last 1 Busy* Block resync worker #1 2 - 14298433 - - 9 Busy Block scrub worker 4 36.64% - - - 42 Busy block_ref Merkle - - 79476 - - 2 Idle Block resync worker #2 - - - - - 3 Idle Block resync worker #3 - - - - - 4 Idle Block resync worker #4 - - - - - 5 Idle Block resync worker #5 - - - - - 6 Idle Block resync worker #6 - - - - - 7 Idle Block resync worker #7 - - - - - 8 Idle Block resync worker #8 - - - - - 10 Idle bucket_v2 Merkle - - 0 - - 11 Idle bucket_v2 sync - - 0 - - 12 Idle bucket_v2 GC - - 0 - - 13 Idle bucket_v2 queue - - 0 - - 14 Idle bucket_alias Merkle - - 0 - - 15 Idle bucket_alias sync - - 0 - - 16 Idle bucket_alias GC - - 0 - - 17 Idle bucket_alias queue - - 0 - - 18 Idle key Merkle - - 0 - - 19 Idle key sync - - 0 - - 20 Idle key GC - - 0 - - 21 Idle key queue - - 0 - - 22 Idle object Merkle - - 0 - - 23 Idle object sync - - 0 - - 24 Idle object GC - - 0 - - 25 Idle object queue - - 0 - - 26 Idle bucket_object_counter Merkle - - 0 - - 27 Idle bucket_object_counter sync - - 0 - - 28 Idle bucket_object_counter GC - - 0 - - 29 Idle bucket_object_counter queue - - 0 - - 30 Idle multipart_upload Merkle - - 0 - - 31 Idle multipart_upload sync - - 0 - - 32 Idle multipart_upload GC - - 0 - - 33 Idle multipart_upload queue - - 0 - - 34 Idle bucket_mpu_counter Merkle - - 0 - - 35 Idle bucket_mpu_counter sync - - 0 - - 36 Idle bucket_mpu_counter GC - - 0 - - 37 Idle bucket_mpu_counter queue - - 0 - - 38 Idle version Merkle - - 0 - - 39 Idle version sync - - 0 - - 40 Idle version GC - - 0 - - 41 Idle version queue - - 0 - - 43 Idle block_ref sync - - 0 - - 44 Idle block_ref GC - - 0 - - 45 Idle block_ref queue - - 0 - - 46 Idle object lifecycle worker - - - - - 47 Idle k2v_item Merkle - - 0 - - 48 Idle k2v_item sync - - 0 - - 49 Idle k2v_item GC - - 0 - - 50 Idle k2v_item queue - - 0 - - 51 Idle k2v_index_counter_v2 Merkle - - 0 - - 52 Idle k2v_index_counter_v2 sync - - 0 - - 53 Idle k2v_index_counter_v2 GC - - 0 - - 54 Idle k2v_index_counter_v2 queue - - 0 - - 55 Idle Metadata snapshot worker - - - - - ```
quentin added the
kind
wrong-behavior
action
more-info-needed
labels 2024-08-29 09:46:30 +00:00
quentin added the
scope
metadata
label 2024-08-29 09:48:00 +00:00
Owner

Could you provide a script / Dockerfile that lead to this behavior?
Is it enough to start garage with sqlite to reproduce your issue?

Could you provide a script / `Dockerfile` that lead to this behavior? Is it enough to start garage with sqlite to reproduce your issue?
Author

Service is run under podman quadlet.

Systemd will generate a service file based on garage.kube:

Description=Garage service
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/srv/container/garage
Restart=on-failure
TimeoutStartSec=900

[Kube]
Yaml=/srv/container/garage/garage.yaml
# PodmanArgs=--share ipc,uts
LogDriver=journald
Network=service.network
PublishPort=3900:3900
PublishPort=3902:3902

[Install]
WantedBy=multi-user.target default.target

This is the actual pod generation file garage.yaml:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    app: garage
  name: garage
spec:
  containers:
  - name: d1
    image: docker.io/dxflrs/amd64_garage:v1.0.0
    volumeMounts:
      - name: gd1-config
        mountPath: /etc/garage.toml:z,ro
      - name: gd1-meta
        mountPath: /var/lib/garage/meta:z,rw
      - name: gd1-data
        mountPath: /var/lib/garage/data:z,rw
      - name: gd-secret
        mountPath: /etc/garage/rpc_secret:Z,rw
  - name: d2
    image: docker.io/dxflrs/amd64_garage:v1.0.0
    volumeMounts:
      - name: gd2-config
        mountPath: /etc/garage.toml:z,ro
      - name: gd2-meta
        mountPath: /var/lib/garage/meta:z,rw
      - name: gd2-data
        mountPath: /var/lib/garage/data:z,rw
      - name: gd-secret
        mountPath: /etc/garage/rpc_secret:Z,rw
  volumes:
  - name: gd1-config
    hostPath:
      path: garage-d1.toml
      type: File
  - name: gd2-config
    hostPath:
      path: garage-d2.toml
      type: File
  - name: gd-secret
    hostPath:
      path: rpc_secret
      type: File
  - name: gd1-meta
    hostPath:
      path: /mnt/meta/d1
      type: Directory
  - name: gd2-meta
    hostPath:
      path: /mnt/meta/d2
      type: Directory
  - name: gd1-data
    hostPath:
      path: /mnt/d1
      type: Directory
  - name: gd2-data
    hostPath:
      path: /mnt/d2
  hostname: garage
  restartPolicy: OnFailure

And the garage.toml:

metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"

metadata_fsync = true
#data_fsync = false
#disable_scrub = false
metadata_auto_snapshot_interval = "6h"

db_engine = "sqlite"

#block_size = "1M"
#block_ram_buffer_max = "256MiB"
#lmdb_map_size = "1T"

replication_factor = 2
consistency_mode = "consistent"

compression_level = 3

rpc_bind_addr = "[::]:3901"
#rpc_bind_outgoing = false
# rpc_public_addr = "127.0.0.1:3901"

rpc_secret_file = "/etc/garage/rpc_secret"

#bootstrap_peers = []

[s3_api]
api_bind_addr = "0.0.0.0:3900"
s3_region = "anima"
root_domain = ""

[s3_web]
bind_addr = "127.0.0.1:3902"
root_domain = ""

[admin]
# If specified, Garage will bind an HTTP server to this port and address,
# on which it will listen to requests for administration features.
#api_bind_addr = ""

# The token for accessing all of the other administration endpoints.
# If not set, access to these endpoints is disabled entirely.
#admin_token = ""
# or read it from the file.
# admin_token_file = "/etc/garage/admin_token"

# The token for accessing the Metrics endpoint. If not set, the Metrics
# endpoint can be accessed without access control!
#metrics_token = ""
# or read it from the file.
# metrics_token_file = "/etc/garage/metrics_token"
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"

metadata_fsync = true
#data_fsync = false
#disable_scrub = false
metadata_auto_snapshot_interval = "6h"

db_engine = "sqlite"

#block_size = "1M"
#block_ram_buffer_max = "256MiB"
#lmdb_map_size = "1T"

replication_factor = 2
consistency_mode = "consistent"

compression_level = 3

rpc_bind_addr = "[::]:3911"
#rpc_bind_outgoing = false
# rpc_public_addr = "127.0.0.1:3901"

rpc_secret_file = "/etc/garage/rpc_secret"

#bootstrap_peers = []

[s3_api]
api_bind_addr = "[::]:3910"
s3_region = "anima"
root_domain = ""

[s3_web]
bind_addr = "127.0.0.1:3912"
root_domain = ""

[admin]
# If specified, Garage will bind an HTTP server to this port and address,
# on which it will listen to requests for administration features.
#api_bind_addr = ""

# The token for accessing all of the other administration endpoints.
# If not set, access to these endpoints is disabled entirely.
#admin_token = ""
# or read it from the file.
# admin_token_file = "/etc/garage/admin_token"

# The token for accessing the Metrics endpoint. If not set, the Metrics
# endpoint can be accessed without access control!
#metrics_token = ""
# or read it from the file.
# metrics_token_file = "/etc/garage/metrics_token"
Service is run under podman quadlet. Systemd will generate a service file based on garage.kube: ```[Unit] Description=Garage service Wants=network-online.target After=network-online.target [Service] WorkingDirectory=/srv/container/garage Restart=on-failure TimeoutStartSec=900 [Kube] Yaml=/srv/container/garage/garage.yaml # PodmanArgs=--share ipc,uts LogDriver=journald Network=service.network PublishPort=3900:3900 PublishPort=3902:3902 [Install] WantedBy=multi-user.target default.target ``` This is the actual pod generation file garage.yaml: ``` apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: app: garage name: garage spec: containers: - name: d1 image: docker.io/dxflrs/amd64_garage:v1.0.0 volumeMounts: - name: gd1-config mountPath: /etc/garage.toml:z,ro - name: gd1-meta mountPath: /var/lib/garage/meta:z,rw - name: gd1-data mountPath: /var/lib/garage/data:z,rw - name: gd-secret mountPath: /etc/garage/rpc_secret:Z,rw - name: d2 image: docker.io/dxflrs/amd64_garage:v1.0.0 volumeMounts: - name: gd2-config mountPath: /etc/garage.toml:z,ro - name: gd2-meta mountPath: /var/lib/garage/meta:z,rw - name: gd2-data mountPath: /var/lib/garage/data:z,rw - name: gd-secret mountPath: /etc/garage/rpc_secret:Z,rw volumes: - name: gd1-config hostPath: path: garage-d1.toml type: File - name: gd2-config hostPath: path: garage-d2.toml type: File - name: gd-secret hostPath: path: rpc_secret type: File - name: gd1-meta hostPath: path: /mnt/meta/d1 type: Directory - name: gd2-meta hostPath: path: /mnt/meta/d2 type: Directory - name: gd1-data hostPath: path: /mnt/d1 type: Directory - name: gd2-data hostPath: path: /mnt/d2 hostname: garage restartPolicy: OnFailure ``` And the garage.toml: ``` metadata_dir = "/var/lib/garage/meta" data_dir = "/var/lib/garage/data" metadata_fsync = true #data_fsync = false #disable_scrub = false metadata_auto_snapshot_interval = "6h" db_engine = "sqlite" #block_size = "1M" #block_ram_buffer_max = "256MiB" #lmdb_map_size = "1T" replication_factor = 2 consistency_mode = "consistent" compression_level = 3 rpc_bind_addr = "[::]:3901" #rpc_bind_outgoing = false # rpc_public_addr = "127.0.0.1:3901" rpc_secret_file = "/etc/garage/rpc_secret" #bootstrap_peers = [] [s3_api] api_bind_addr = "0.0.0.0:3900" s3_region = "anima" root_domain = "" [s3_web] bind_addr = "127.0.0.1:3902" root_domain = "" [admin] # If specified, Garage will bind an HTTP server to this port and address, # on which it will listen to requests for administration features. #api_bind_addr = "" # The token for accessing all of the other administration endpoints. # If not set, access to these endpoints is disabled entirely. #admin_token = "" # or read it from the file. # admin_token_file = "/etc/garage/admin_token" # The token for accessing the Metrics endpoint. If not set, the Metrics # endpoint can be accessed without access control! #metrics_token = "" # or read it from the file. # metrics_token_file = "/etc/garage/metrics_token" ``` ``` metadata_dir = "/var/lib/garage/meta" data_dir = "/var/lib/garage/data" metadata_fsync = true #data_fsync = false #disable_scrub = false metadata_auto_snapshot_interval = "6h" db_engine = "sqlite" #block_size = "1M" #block_ram_buffer_max = "256MiB" #lmdb_map_size = "1T" replication_factor = 2 consistency_mode = "consistent" compression_level = 3 rpc_bind_addr = "[::]:3911" #rpc_bind_outgoing = false # rpc_public_addr = "127.0.0.1:3901" rpc_secret_file = "/etc/garage/rpc_secret" #bootstrap_peers = [] [s3_api] api_bind_addr = "[::]:3910" s3_region = "anima" root_domain = "" [s3_web] bind_addr = "127.0.0.1:3912" root_domain = "" [admin] # If specified, Garage will bind an HTTP server to this port and address, # on which it will listen to requests for administration features. #api_bind_addr = "" # The token for accessing all of the other administration endpoints. # If not set, access to these endpoints is disabled entirely. #admin_token = "" # or read it from the file. # admin_token_file = "/etc/garage/admin_token" # The token for accessing the Metrics endpoint. If not set, the Metrics # endpoint can be accessed without access control! #metrics_token = "" # or read it from the file. # metrics_token_file = "/etc/garage/metrics_token" ```

@Jad what is your underlying storage? E.g. is it a physical disk, network mount, what filesystem, etc?

We're running garage with sqlite and have not observed this behavior, but we have seen some issues with sqlite in general depending on what the underlying storage is. E.g. if it is distributed network storage vs. local disk. If it is any kind of networked storage, it needs to behave within the expectations of sqlite, e.g. POSIX compliant, latency not too high, etc.

@Jad what is your underlying storage? E.g. is it a physical disk, network mount, what filesystem, etc? We're running garage with sqlite and have not observed this behavior, but we have seen some issues with sqlite in general depending on what the underlying storage is. E.g. if it is distributed network storage vs. local disk. If it is any kind of networked storage, it needs to behave within the expectations of sqlite, e.g. POSIX compliant, latency not too high, etc.
Author

2 HDD (data) that are passthrough from Hyper-V
1 virtual disk (meta) stored on SSD(in RAID I)
ext4 filesystem

df -Th

Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root xfs        32G   14G   19G  42% /
devtmpfs                devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                   tmpfs     7.9G   84K  7.9G   1% /dev/shm
efivarfs                efivarfs  128M  8.0K  128M   1% /sys/firmware/efi/efivars
tmpfs                   tmpfs     3.2G  1.4M  3.2G   1% /run
/dev/sda2               xfs       960M  396M  565M  42% /boot
tmpfs                   tmpfs     7.9G     0  7.9G   0% /tmp
/dev/sda1               vfat      599M  7.5M  592M   2% /boot/efi
/dev/sdb1               ext4      126G   56G   64G  47% /mnt/meta
/dev/sdc1               ext4      9.1T  6.0T  2.7T  70% /mnt/d1
/dev/sdd1               ext4      9.1T  6.0T  2.7T  70% /mnt/d2
tmpfs                   tmpfs     1.6G  4.0K  1.6G   1% /run/user/1000

lsblk

NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda               8:0    0   120G  0 disk
├─sda1            8:1    0   600M  0 part /boot/efi
├─sda2            8:2    0     1G  0 part /boot
└─sda3            8:3    0 118.4G  0 part
  └─fedora-root 253:0    0    32G  0 lvm  /var/lib/containers/storage/overlay
                                          /
sdb               8:16   0   128G  0 disk
└─sdb1            8:17   0   128G  0 part /mnt/meta
sdc               8:32   0   9.1T  0 disk
└─sdc1            8:33   0   9.1T  0 part /mnt/d1
sdd               8:48   0   9.1T  0 disk
└─sdd1            8:49   0   9.1T  0 part /mnt/d2
zram0           252:0    0     8G  0 disk [SWAP]

fio --name=test --filename=/mnt/meta/test --rw=randrw --size=256M --direct=1 --runtime=15 --sync=1

test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.36
Starting 1 process
test: Laying out IO file (1 file / 256MiB)
Jobs: 1 (f=1): [m(1)][100.0%][r=1230KiB/s,w=1162KiB/s][r=307,w=290 IOPS][eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=66849: Tue Sep  3 23:37:10 2024
  read: IOPS=295, BW=1182KiB/s (1211kB/s)(17.3MiB/15002msec)
    clat (usec): min=269, max=31455, avg=478.58, stdev=483.64
     lat (usec): min=269, max=31456, avg=479.05, stdev=483.66
    clat percentiles (usec):
     |  1.00th=[  302],  5.00th=[  326], 10.00th=[  343], 20.00th=[  363],
     | 30.00th=[  388], 40.00th=[  408], 50.00th=[  441], 60.00th=[  494],
     | 70.00th=[  545], 80.00th=[  586], 90.00th=[  619], 95.00th=[  644],
     | 99.00th=[  742], 99.50th=[  824], 99.90th=[ 2245], 99.95th=[ 2573],
     | 99.99th=[31327]
   bw (  KiB/s): min=  960, max= 1392, per=99.22%, avg=1173.52, stdev=118.16, samples=29
   iops        : min=  240, max=  348, avg=293.38, stdev=29.54, samples=29
  write: IOPS=300, BW=1204KiB/s (1232kB/s)(17.6MiB/15002msec); 0 zone resets
    clat (usec): min=1711, max=22704, avg=2837.32, stdev=587.66
     lat (usec): min=1712, max=22706, avg=2838.25, stdev=587.66
    clat percentiles (usec):
     |  1.00th=[ 2089],  5.00th=[ 2278], 10.00th=[ 2409], 20.00th=[ 2507],
     | 30.00th=[ 2638], 40.00th=[ 2737], 50.00th=[ 2835], 60.00th=[ 2933],
     | 70.00th=[ 2999], 80.00th=[ 3130], 90.00th=[ 3261], 95.00th=[ 3359],
     | 99.00th=[ 3589], 99.50th=[ 3916], 99.90th=[ 5014], 99.95th=[17695],
     | 99.99th=[22676]
   bw (  KiB/s): min= 1072, max= 1432, per=99.79%, avg=1201.93, stdev=75.91, samples=29
   iops        : min=  268, max=  358, avg=300.48, stdev=18.98, samples=29
  lat (usec)   : 500=30.15%, 750=19.02%, 1000=0.19%
  lat (msec)   : 2=0.40%, 4=49.99%, 10=0.20%, 20=0.01%, 50=0.03%
  cpu          : usr=0.89%, sys=4.01%, ctx=13462, majf=0, minf=11
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=4434,4514,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=1182KiB/s (1211kB/s), 1182KiB/s-1182KiB/s (1211kB/s-1211kB/s), io=17.3MiB (18.2MB), run=15002-15002msec
  WRITE: bw=1204KiB/s (1232kB/s), 1204KiB/s-1204KiB/s (1232kB/s-1232kB/s), io=17.6MiB (18.5MB), run=15002-15002msec

Disk stats (read/write):
  sdb: ios=4352/13361, sectors=34816/142504, merge=0/4452, ticks=1855/10969, in_queue=18922, util=86.04%
2 HDD (data) that are passthrough from Hyper-V 1 virtual disk (meta) stored on SSD(in RAID I) ext4 filesystem df -Th ``` Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/fedora-root xfs 32G 14G 19G 42% / devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev tmpfs tmpfs 7.9G 84K 7.9G 1% /dev/shm efivarfs efivarfs 128M 8.0K 128M 1% /sys/firmware/efi/efivars tmpfs tmpfs 3.2G 1.4M 3.2G 1% /run /dev/sda2 xfs 960M 396M 565M 42% /boot tmpfs tmpfs 7.9G 0 7.9G 0% /tmp /dev/sda1 vfat 599M 7.5M 592M 2% /boot/efi /dev/sdb1 ext4 126G 56G 64G 47% /mnt/meta /dev/sdc1 ext4 9.1T 6.0T 2.7T 70% /mnt/d1 /dev/sdd1 ext4 9.1T 6.0T 2.7T 70% /mnt/d2 tmpfs tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000 ``` lsblk ``` NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 120G 0 disk ├─sda1 8:1 0 600M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 118.4G 0 part └─fedora-root 253:0 0 32G 0 lvm /var/lib/containers/storage/overlay / sdb 8:16 0 128G 0 disk └─sdb1 8:17 0 128G 0 part /mnt/meta sdc 8:32 0 9.1T 0 disk └─sdc1 8:33 0 9.1T 0 part /mnt/d1 sdd 8:48 0 9.1T 0 disk └─sdd1 8:49 0 9.1T 0 part /mnt/d2 zram0 252:0 0 8G 0 disk [SWAP] ``` fio --name=test --filename=/mnt/meta/test --rw=randrw --size=256M --direct=1 --runtime=15 --sync=1 ``` test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 fio-3.36 Starting 1 process test: Laying out IO file (1 file / 256MiB) Jobs: 1 (f=1): [m(1)][100.0%][r=1230KiB/s,w=1162KiB/s][r=307,w=290 IOPS][eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=66849: Tue Sep 3 23:37:10 2024 read: IOPS=295, BW=1182KiB/s (1211kB/s)(17.3MiB/15002msec) clat (usec): min=269, max=31455, avg=478.58, stdev=483.64 lat (usec): min=269, max=31456, avg=479.05, stdev=483.66 clat percentiles (usec): | 1.00th=[ 302], 5.00th=[ 326], 10.00th=[ 343], 20.00th=[ 363], | 30.00th=[ 388], 40.00th=[ 408], 50.00th=[ 441], 60.00th=[ 494], | 70.00th=[ 545], 80.00th=[ 586], 90.00th=[ 619], 95.00th=[ 644], | 99.00th=[ 742], 99.50th=[ 824], 99.90th=[ 2245], 99.95th=[ 2573], | 99.99th=[31327] bw ( KiB/s): min= 960, max= 1392, per=99.22%, avg=1173.52, stdev=118.16, samples=29 iops : min= 240, max= 348, avg=293.38, stdev=29.54, samples=29 write: IOPS=300, BW=1204KiB/s (1232kB/s)(17.6MiB/15002msec); 0 zone resets clat (usec): min=1711, max=22704, avg=2837.32, stdev=587.66 lat (usec): min=1712, max=22706, avg=2838.25, stdev=587.66 clat percentiles (usec): | 1.00th=[ 2089], 5.00th=[ 2278], 10.00th=[ 2409], 20.00th=[ 2507], | 30.00th=[ 2638], 40.00th=[ 2737], 50.00th=[ 2835], 60.00th=[ 2933], | 70.00th=[ 2999], 80.00th=[ 3130], 90.00th=[ 3261], 95.00th=[ 3359], | 99.00th=[ 3589], 99.50th=[ 3916], 99.90th=[ 5014], 99.95th=[17695], | 99.99th=[22676] bw ( KiB/s): min= 1072, max= 1432, per=99.79%, avg=1201.93, stdev=75.91, samples=29 iops : min= 268, max= 358, avg=300.48, stdev=18.98, samples=29 lat (usec) : 500=30.15%, 750=19.02%, 1000=0.19% lat (msec) : 2=0.40%, 4=49.99%, 10=0.20%, 20=0.01%, 50=0.03% cpu : usr=0.89%, sys=4.01%, ctx=13462, majf=0, minf=11 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=4434,4514,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: bw=1182KiB/s (1211kB/s), 1182KiB/s-1182KiB/s (1211kB/s-1211kB/s), io=17.3MiB (18.2MB), run=15002-15002msec WRITE: bw=1204KiB/s (1232kB/s), 1204KiB/s-1204KiB/s (1232kB/s-1232kB/s), io=17.6MiB (18.5MB), run=15002-15002msec Disk stats (read/write): sdb: ios=4352/13361, sectors=34816/142504, merge=0/4452, ticks=1855/10969, in_queue=18922, util=86.04% ```

@Jad I'm not sure if this is your issue, but your benchmarks are at least an order of magnitude less performant than native access to a directly-attached nvme, or even spinning disk.

I'd suggest trying to reproduce the issue on directly-attached storage. If you cannot, that will tell some kind of story about what the actual problem is.

Also, it might be worth running a POSIX compatibility test on your filesystem. Tools like pjdfstest can verify if your filesystem is fully POSIX compliant. This could help identify any underlying compatibility issues that might be affecting performance.

In theory, robust software like sqlite should run well on any disk, but we've observed it to break down when the underlying storage goes outside normal bounds of latency and bandwidth. POSIX compliance issues could also potentially contribute to such abnormal behavior.

@Jad I'm not sure if this is your issue, but your benchmarks are at least an order of magnitude less performant than native access to a directly-attached nvme, or even spinning disk. I'd suggest trying to reproduce the issue on directly-attached storage. If you cannot, that will tell some kind of story about what the actual problem is. Also, it might be worth running a POSIX compatibility test on your filesystem. Tools like `pjdfstest` can verify if your filesystem is fully POSIX compliant. This could help identify any underlying compatibility issues that might be affecting performance. In theory, robust software like sqlite should run well on any disk, but we've observed it to break down when the underlying storage goes outside normal bounds of latency and bandwidth. POSIX compliance issues could also potentially contribute to such abnormal behavior.
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Deuxfleurs/garage#857
No description provided.