Added a disk to a single node and gone extremely slow #977

Open
opened 2025-03-06 09:00:45 +00:00 by bodleytunes99 · 8 comments

I tested adding a filepath on a 4tb spinning rust disk last night to existing single node but since doing this all read and write performance has gone unusable slow. I used to get read and write via cyber duck at 116MB second but now it instantly drops to about 200KB sec and I find that most of my files are no longer readable however strangely some are still readable. Its used for movie sitorage for plex and jellyfin.

I'm wondering if I restarted the docker container during some kind of operation that may have been under way after applying new layout.

How to debug this and worst case scenario is there a way I can safely revert to the last working setup? Its been 8 hours since the changes and everything is still unusable.

Thanks
Jon

I tested adding a filepath on a 4tb spinning rust disk last night to existing single node but since doing this all read and write performance has gone unusable slow. I used to get read and write via cyber duck at 116MB second but now it instantly drops to about 200KB sec and I find that most of my files are no longer readable however strangely some are still readable. Its used for movie sitorage for plex and jellyfin. I'm wondering if I restarted the docker container during some kind of operation that may have been under way after applying new layout. How to debug this and worst case scenario is there a way I can safely revert to the last working setup? Its been 8 hours since the changes and everything is still unusable. Thanks Jon
Author

part of the garage.toml that was modified

metadata_dir = "/var/lib/garage/meta"
#data_dir = "/var/lib/garage/data"
data_dir = [
    { path = "/var/lib/garage/data", capacity = "250G" },
    { path = "/mnt/data400/garaged400", capacity = "100G" },
    { path = "/mnt/4tb-backups/garage4tb", capacity = "150G" },
]
db_engine = "lmdb"

#replication_mode = "3"
#replication_mode = "1"
replication_factor = 1
part of the garage.toml that was modified ``` metadata_dir = "/var/lib/garage/meta" #data_dir = "/var/lib/garage/data" data_dir = [ { path = "/var/lib/garage/data", capacity = "250G" }, { path = "/mnt/data400/garaged400", capacity = "100G" }, { path = "/mnt/4tb-backups/garage4tb", capacity = "150G" }, ] db_engine = "lmdb" #replication_mode = "3" #replication_mode = "1" replication_factor = 1 ```
Author
garage status
==== HEALTHY NODES ====
ID                Hostname    Address           Tags    Zone  Capacity  DataAvail
6e7446cc7e53c903  srv-lounge  10.12.89.15:3901  [lsk1]  lsk1  500.0 GB  3.1 TB (59.5%)
garage stats

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

Database engine: LMDB (using Heed crate)

Table stats:
  Table      Items   MklItems  MklTodo  GcTodo
  bucket_v2  8       9         0        0
  key        8       9         0        0
  object     40005   44801     8        72
  version    38268   46203     57       1269
  block_ref  541024  615252    60       8300

Block manager stats:
  number of RC entries (~= number of blocks): 516881
  resync queue length: 3756
  blocks with resync errors: 302

Storage nodes:
  ID                Hostname    Zone  Capacity  Part.  DataAvail              MetaAvail
  6e7446cc7e53c903  srv-lounge  lsk1  500.0 GB  256    3.1 TB/5.3 TB (59.5%)  15.8 GB/999.7 GB (1.6%)

Estimated available storage space cluster-wide (might be lower in practice):
  data: 3.1 TB
  metadata: 15.8 GB
garage block list-errors
Hash                                                              RC  Errors  Last error    Next try
02b52c1bbefabdcf86cab566101c5c54cac619cbddb4245e098d2ee6877ea4f9  1   5876    12 hours ago  in asap
03c4e65bbad1e8e17e6cc342a48699c0e407ed285d8e4b8520fb07e9684be3d7  1   4131    12 hours ago  in asap
06937b090a2a1a9999238e00d81d02eb408dc9595c2cfec8dd26629e67447639  1   5875    12 hours ago  in asap
071879cd2de4ced18ef06cbd60e6aa9a4fc0511c7769fa70070c7014a506a152  1   5874    12 hours ago  in asap
085f5bc730cddface4bbf1590d987c315fbdbfc1d950ed5fb345016198f77f73  2   5875    12 hours ago  in asap

^^^ big list there spans a few pages

garage block retry-now --all
302 blocks returned in queue for a retry now (check logs to see results
2025-03-06T12:28:02.795379Z  INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=v%20for%20vendetta-443ce0/
2025-03-06T12:28:02.795389Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=v%20for%20vendetta-443ce0/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=56836372436b197fbe6866fb1a89ce8456eca09112f05999b3520e08fa5e7eb0", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) }
2025-03-06T12:28:02.795411Z DEBUG garage_api::generic_server: Endpoint: ListObjects
2025-03-06T12:28:02.795575Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "v for vendetta-443ce0/", urlencode_resp: false } }
2025-03-06T12:28:02.795688Z DEBUG garage_api::s3::list: List: get range Some("v for vendetta-443ce0/") (max 1001), results: 6
2025-03-06T12:28:02.795754Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"}
2025-03-06T12:28:02.796349Z  INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=young%20guns%202-e8c541/
2025-03-06T12:28:02.796357Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=young%20guns%202-e8c541/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e14a587ee89ef7dfe61ec1368ffd49c612d02181c239cec2cea84ba0dd2cc964", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) }
2025-03-06T12:28:02.796377Z DEBUG garage_api::generic_server: Endpoint: ListObjects
2025-03-06T12:28:02.796532Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "young guns 2-e8c541/", urlencode_resp: false } }
2025-03-06T12:28:02.796602Z DEBUG garage_api::s3::list: List: get range Some("young guns 2-e8c541/") (max 1001), results: 4
2025-03-06T12:28:02.796653Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"}
2025-03-06T12:28:02.797224Z  INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=young%20guns-c00b03/
2025-03-06T12:28:02.797232Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=young%20guns-c00b03/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=c9c84af9e9f3fde02a4686f6d059b6e25ea926aaa2e340d87f546a38119d6528", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) }
2025-03-06T12:28:02.797254Z DEBUG garage_api::generic_server: Endpoint: ListObjects
2025-03-06T12:28:02.797402Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "young guns-c00b03/", urlencode_resp: false } }
2025-03-06T12:28:02.797460Z DEBUG garage_api::s3::list: List: get range Some("young guns-c00b03/") (max 1001), results: 2
2025-03-06T12:28:02.797508Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"}
2025-03-06T12:30:21.614379Z DEBUG garage_api::generic_server: Error handling HTTP connection: error from user's Body stream
2025-03-06T12:30:21.715017Z  INFO garage_api::generic_server: [::ffff:172.20.0.2]:44740 GET /kopiabackups/kopiakopia.maintenance
2025-03-06T12:30:21.715027Z DEBUG garage_api::generic_server: Request { method: GET, uri: /kopiabackups/kopiakopia.maintenance, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "MinIO (linux; amd64) minio-go/v7.0.69", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=9a8636b2402f6b2d48a4c3b5c6378766fa66e8a489b8d00422ebaa231ac9e0cf", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T123021Z", "accept-encoding": "gzip"}, body: Body(Empty) }
2025-03-06T12:30:21.715052Z DEBUG garage_api::generic_server: Endpoint: GetObject
2025-03-06T12:30:21.715258Z DEBUG garage_api::s3::get: Version meta: ObjectVersionMeta { size: 3191, etag: "90ea1235cf7fe63660cb716375dca8bc", encryption: Plaintext { inner: ObjectVersionMetaInner { headers: [("content-type", "application/x-kopia")], checksum: None } } }
2025-03-06T12:30:21.715311Z DEBUG garage_api::generic_server: 200 OK {"last-modified": "Wed, 05 Mar 2025 20:07:36 GMT", "accept-ranges": "bytes", "etag": "\"90ea1235cf7fe63660cb716375dca8bc\"", "content-type": "application/x-kopia", "content-length": "3191"}
2025-03-06T12:35:21.716428Z DEBUG garage_api::generic_server: Error handling HTTP connection: error from user's Body stream
2025-03-06T12:35:21.867094Z  INFO garage_api::generic_server: [::ffff:172.20.0.2]:33030 GET /kopiabackups/kopiakopia.maintenance
2025-03-06T12:35:21.867107Z DEBUG garage_api::generic_server: Request { method: GET, uri: /kopiabackups/kopiakopia.maintenance, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "MinIO (linux; amd64) minio-go/v7.0.69", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=967eb02e9813fe9e77e24c508463b8f57a91ced8fb6f4df82602997e3ee53f84", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T123521Z", "accept-encoding": "gzip"}, body: Body(Empty) }
2025-03-06T12:35:21.867132Z DEBUG garage_api::generic_server: Endpoint: GetObject
2025-03-06T12:35:21.867346Z DEBUG garage_api::s3::get: Version meta: ObjectVersionMeta { size: 3191, etag: "90ea1235cf7fe63660cb716375dca8bc", encryption: Plaintext { inner: ObjectVersionMetaInner { headers: [("content-type", "application/x-kopia")], checksum: None } } }
2025-03-06T12:35:21.867380Z DEBUG garage_api::generic_server: 200 OK {"last-modified": "Wed, 05 Mar 2025 20:07:36 GMT", "accept-ranges": "bytes", "etag": "\"90ea1235cf7fe63660cb716375dca8bc\"", "content-type": "application/x-kopia", "content-length": "3191"}

``` garage status ==== HEALTHY NODES ==== ID Hostname Address Tags Zone Capacity DataAvail 6e7446cc7e53c903 srv-lounge 10.12.89.15:3901 [lsk1] lsk1 500.0 GB 3.1 TB (59.5%) ``` ``` garage stats Garage version: v1.0.1 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs] Rust compiler version: 1.77.0 Database engine: LMDB (using Heed crate) Table stats: Table Items MklItems MklTodo GcTodo bucket_v2 8 9 0 0 key 8 9 0 0 object 40005 44801 8 72 version 38268 46203 57 1269 block_ref 541024 615252 60 8300 Block manager stats: number of RC entries (~= number of blocks): 516881 resync queue length: 3756 blocks with resync errors: 302 Storage nodes: ID Hostname Zone Capacity Part. DataAvail MetaAvail 6e7446cc7e53c903 srv-lounge lsk1 500.0 GB 256 3.1 TB/5.3 TB (59.5%) 15.8 GB/999.7 GB (1.6%) Estimated available storage space cluster-wide (might be lower in practice): data: 3.1 TB metadata: 15.8 GB ``` ``` garage block list-errors Hash RC Errors Last error Next try 02b52c1bbefabdcf86cab566101c5c54cac619cbddb4245e098d2ee6877ea4f9 1 5876 12 hours ago in asap 03c4e65bbad1e8e17e6cc342a48699c0e407ed285d8e4b8520fb07e9684be3d7 1 4131 12 hours ago in asap 06937b090a2a1a9999238e00d81d02eb408dc9595c2cfec8dd26629e67447639 1 5875 12 hours ago in asap 071879cd2de4ced18ef06cbd60e6aa9a4fc0511c7769fa70070c7014a506a152 1 5874 12 hours ago in asap 085f5bc730cddface4bbf1590d987c315fbdbfc1d950ed5fb345016198f77f73 2 5875 12 hours ago in asap ``` ^^^ big list there spans a few pages ``` garage block retry-now --all 302 blocks returned in queue for a retry now (check logs to see results ``` ``` 2025-03-06T12:28:02.795379Z INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=v%20for%20vendetta-443ce0/ 2025-03-06T12:28:02.795389Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=v%20for%20vendetta-443ce0/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=56836372436b197fbe6866fb1a89ce8456eca09112f05999b3520e08fa5e7eb0", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) } 2025-03-06T12:28:02.795411Z DEBUG garage_api::generic_server: Endpoint: ListObjects 2025-03-06T12:28:02.795575Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "v for vendetta-443ce0/", urlencode_resp: false } } 2025-03-06T12:28:02.795688Z DEBUG garage_api::s3::list: List: get range Some("v for vendetta-443ce0/") (max 1001), results: 6 2025-03-06T12:28:02.795754Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"} 2025-03-06T12:28:02.796349Z INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=young%20guns%202-e8c541/ 2025-03-06T12:28:02.796357Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=young%20guns%202-e8c541/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e14a587ee89ef7dfe61ec1368ffd49c612d02181c239cec2cea84ba0dd2cc964", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) } 2025-03-06T12:28:02.796377Z DEBUG garage_api::generic_server: Endpoint: ListObjects 2025-03-06T12:28:02.796532Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "young guns 2-e8c541/", urlencode_resp: false } } 2025-03-06T12:28:02.796602Z DEBUG garage_api::s3::list: List: get range Some("young guns 2-e8c541/") (max 1001), results: 4 2025-03-06T12:28:02.796653Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"} 2025-03-06T12:28:02.797224Z INFO garage_api::generic_server: [::ffff:10.12.89.191]:34594 GET /movies/?delimiter=/&max-keys=1000&prefix=young%20guns-c00b03/ 2025-03-06T12:28:02.797232Z DEBUG garage_api::generic_server: Request { method: GET, uri: /movies/?delimiter=/&max-keys=1000&prefix=young%20guns-c00b03/, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "s3fs/1.90 (commit hash unknown; GnuTLS(gcrypt))", "accept": "*/*", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=c9c84af9e9f3fde02a4686f6d059b6e25ea926aaa2e340d87f546a38119d6528", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T122802Z"}, body: Body(Empty) } 2025-03-06T12:28:02.797254Z DEBUG garage_api::generic_server: Endpoint: ListObjects 2025-03-06T12:28:02.797402Z DEBUG garage_api::s3::list: ListObjects ListObjectsQuery { is_v2: false, marker: None, continuation_token: None, start_after: None, common: ListQueryCommon { bucket_name: "movies", bucket_id: 309b123c46e399c6, delimiter: Some("/"), page_size: 1000, prefix: "young guns-c00b03/", urlencode_resp: false } } 2025-03-06T12:28:02.797460Z DEBUG garage_api::s3::list: List: get range Some("young guns-c00b03/") (max 1001), results: 2 2025-03-06T12:28:02.797508Z DEBUG garage_api::generic_server: 200 OK {"content-type": "application/xml"} 2025-03-06T12:30:21.614379Z DEBUG garage_api::generic_server: Error handling HTTP connection: error from user's Body stream 2025-03-06T12:30:21.715017Z INFO garage_api::generic_server: [::ffff:172.20.0.2]:44740 GET /kopiabackups/kopiakopia.maintenance 2025-03-06T12:30:21.715027Z DEBUG garage_api::generic_server: Request { method: GET, uri: /kopiabackups/kopiakopia.maintenance, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "MinIO (linux; amd64) minio-go/v7.0.69", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=9a8636b2402f6b2d48a4c3b5c6378766fa66e8a489b8d00422ebaa231ac9e0cf", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T123021Z", "accept-encoding": "gzip"}, body: Body(Empty) } 2025-03-06T12:30:21.715052Z DEBUG garage_api::generic_server: Endpoint: GetObject 2025-03-06T12:30:21.715258Z DEBUG garage_api::s3::get: Version meta: ObjectVersionMeta { size: 3191, etag: "90ea1235cf7fe63660cb716375dca8bc", encryption: Plaintext { inner: ObjectVersionMetaInner { headers: [("content-type", "application/x-kopia")], checksum: None } } } 2025-03-06T12:30:21.715311Z DEBUG garage_api::generic_server: 200 OK {"last-modified": "Wed, 05 Mar 2025 20:07:36 GMT", "accept-ranges": "bytes", "etag": "\"90ea1235cf7fe63660cb716375dca8bc\"", "content-type": "application/x-kopia", "content-length": "3191"} 2025-03-06T12:35:21.716428Z DEBUG garage_api::generic_server: Error handling HTTP connection: error from user's Body stream 2025-03-06T12:35:21.867094Z INFO garage_api::generic_server: [::ffff:172.20.0.2]:33030 GET /kopiabackups/kopiakopia.maintenance 2025-03-06T12:35:21.867107Z DEBUG garage_api::generic_server: Request { method: GET, uri: /kopiabackups/kopiakopia.maintenance, version: HTTP/1.1, headers: {"host": "10.12.89.15:3900", "user-agent": "MinIO (linux; amd64) minio-go/v7.0.69", "authorization": "AWS4-HMAC-SHA256 Credential=GKdddf1c2a97b4a2daf181e5ed/20250306/garage/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=967eb02e9813fe9e77e24c508463b8f57a91ced8fb6f4df82602997e3ee53f84", "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "x-amz-date": "20250306T123521Z", "accept-encoding": "gzip"}, body: Body(Empty) } 2025-03-06T12:35:21.867132Z DEBUG garage_api::generic_server: Endpoint: GetObject 2025-03-06T12:35:21.867346Z DEBUG garage_api::s3::get: Version meta: ObjectVersionMeta { size: 3191, etag: "90ea1235cf7fe63660cb716375dca8bc", encryption: Plaintext { inner: ObjectVersionMetaInner { headers: [("content-type", "application/x-kopia")], checksum: None } } } 2025-03-06T12:35:21.867380Z DEBUG garage_api::generic_server: 200 OK {"last-modified": "Wed, 05 Mar 2025 20:07:36 GMT", "accept-ranges": "bytes", "etag": "\"90ea1235cf7fe63660cb716375dca8bc\"", "content-type": "application/x-kopia", "content-length": "3191"} ```
Owner

Hi, not sure what is going on here.

In all cases, before doing anything, make a snapshot of your metadata directory (using garage meta snapshot, then copy the file from $metadata_dir/snapshots to somewhere safe) and if possible also take a copy of all of your data directories so that you can come back to the current garage state if needed.

To improve performance after adding a disk, you should invoke garage repair rebalance. Doing this, Garage will move files between your various data directories, so this is why you should make a copy before. This will help Garage know of a single unique location for each file, instead of having to look through multiple disks.

However, the fact that your r/w performance dropped so significantly seems to indicate that there is at least one of your disks that is extremely slow compared to the other. You should try to benchmark the IO performance of your disks to see if one of them is problematic.

Also, you should increase the block_size parameter if you haven't already. For media files, 10M is a minimum, you can even go higher especially in a single-node setup.

Hi, not sure what is going on here. In all cases, before doing anything, make a snapshot of your metadata directory (using `garage meta snapshot`, then copy the file from $metadata_dir/snapshots to somewhere safe) and if possible also take a copy of all of your data directories so that you can come back to the current garage state if needed. To improve performance after adding a disk, you should invoke `garage repair rebalance`. Doing this, Garage will move files between your various data directories, so this is why you should make a copy before. This will help Garage know of a single unique location for each file, instead of having to look through multiple disks. However, the fact that your r/w performance dropped so significantly seems to indicate that there is at least one of your disks that is extremely slow compared to the other. You should try to benchmark the IO performance of your disks to see if one of them is problematic. Also, you should increase the `block_size` parameter if you haven't already. For media files, `10M` is a minimum, you can even go higher especially in a single-node setup.
Owner

Also, if you just want to go back to the previous steup, you can:

  1. modify your configuration file and set read_only = true for the disk you added (and remove capacity = "xxx")
  2. run garage repair rebalance
  3. check the progress of the rebalance using garage worker list/ garage worker info
  4. once the rebalance is done, modify your configuration file again to remove the added disk
Also, if you just want to go back to the previous steup, you can: 1. modify your configuration file and set `read_only = true` for the disk you added (and remove `capacity = "xxx"`) 2. run `garage repair rebalance` 3. check the progress of the rebalance using `garage worker list`/ `garage worker info` 4. once the rebalance is done, modify your configuration file again to remove the added disk
Author

OK will give it a shot!

The disk I added isn't that slow it is slower as its a usb spinning rust, but its fast enough when I'm backing up to it with proxmox. The others are SSD's standard ones.

OK will give it a shot! The disk I added isn't that slow it is slower as its a usb spinning rust, but its fast enough when I'm backing up to it with proxmox. The others are SSD's standard ones.
Author

how to monitor the progress of a repair?
Sorry just seen, I need to use worker list and worker info!

how to monitor the progress of a repair? Sorry just seen, I need to use worker list and worker info!
Author

tried restoring the meta db from a snapshot, created a new layout and now seems worse as doesn't even authenticate when I'm connect and don't see anything in the logs...

[root@srv-lounge garagefs]$ garage stats

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

Database engine: LMDB (using Heed crate)

Table stats:
  Table      Items   MklItems  MklTodo  GcTodo
  bucket_v2  8       9         0        0
  key        8       9         0        0
  object     39912   44684     0        0
  version    36879   44354     0        0
  block_ref  527281  601011    0        0

Block manager stats:
  number of RC entries (~= number of blocks): 512846
  resync queue length: 391
  blocks with resync errors: 289

Storage nodes:
  ID                Hostname    Zone  Capacity  Part.  DataAvail                  MetaAvail
  6e7446cc7e53c903  srv-lounge  lsk1  500.0 GB  256    100.8 GB/999.7 GB (10.1%)  100.8 GB/999.7 GB (10.1%)

Estimated available storage space cluster-wide (might be lower in practice):
  data: 100.8 GB
  metadata: 100.8 GB

[root@srv-lounge garagefs]$ garage layout show
==== CURRENT CLUSTER LAYOUT ====
ID                Tags  Zone  Capacity  Usable capacity
6e7446cc7e53c903  lsk1  lsk1  500.0 GB  500.0 GB (100.0%)

Zone redundancy: maximum

Current cluster layout version: 10
[root@srv-lounge garagefs]$ garage layout show
==== CURRENT CLUSTER LAYOUT ====
ID                Tags  Zone  Capacity  Usable capacity
6e7446cc7e53c903  lsk1  lsk1  500.0 GB  500.0 GB (100.0%)

Zone redundancy: maximum

Current cluster layout version: 10
tried restoring the meta db from a snapshot, created a new layout and now seems worse as doesn't even authenticate when I'm connect and don't see anything in the logs... ``` [root@srv-lounge garagefs]$ garage stats Garage version: v1.0.1 [features: k2v, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs] Rust compiler version: 1.77.0 Database engine: LMDB (using Heed crate) Table stats: Table Items MklItems MklTodo GcTodo bucket_v2 8 9 0 0 key 8 9 0 0 object 39912 44684 0 0 version 36879 44354 0 0 block_ref 527281 601011 0 0 Block manager stats: number of RC entries (~= number of blocks): 512846 resync queue length: 391 blocks with resync errors: 289 Storage nodes: ID Hostname Zone Capacity Part. DataAvail MetaAvail 6e7446cc7e53c903 srv-lounge lsk1 500.0 GB 256 100.8 GB/999.7 GB (10.1%) 100.8 GB/999.7 GB (10.1%) Estimated available storage space cluster-wide (might be lower in practice): data: 100.8 GB metadata: 100.8 GB [root@srv-lounge garagefs]$ garage layout show ==== CURRENT CLUSTER LAYOUT ==== ID Tags Zone Capacity Usable capacity 6e7446cc7e53c903 lsk1 lsk1 500.0 GB 500.0 GB (100.0%) Zone redundancy: maximum Current cluster layout version: 10 [root@srv-lounge garagefs]$ garage layout show ==== CURRENT CLUSTER LAYOUT ==== ID Tags Zone Capacity Usable capacity 6e7446cc7e53c903 lsk1 lsk1 500.0 GB 500.0 GB (100.0%) Zone redundancy: maximum Current cluster layout version: 10 ```
Owner

What do you mean by "fail to authenticate"?

What do you mean by "fail to authenticate"?
maximilien added the
scope
ops
label 2025-03-18 15:02:46 +00:00
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#977
No description provided.