Add a new backend store that enables iSCSI targets backed by S3-compatible object storage (AWS S3, MinIO, Ceph RGW, etc.). The implementation uses a chunked storage strategy where the virtual block device is divided into fixed-size chunks (default 4 MiB), each stored as an independent S3 object. This enables efficient random read/write access on top of object storage. Key features: - Chunked storage with configurable chunk size - Sparse device support (unwritten chunks treated as zeros) - Concurrent multi-chunk I/O via errgroup - Per-chunk locking for safe read-modify-write - AWS SDK v2 with default credential chain - In-process gofakes3 test server (no Docker needed) - 12 unit tests + 2 integration tests Also updates CI workflow to run S3 backend tests and updates README with S3 backend documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
32 lines
706 B
JSON
32 lines
706 B
JSON
{
|
|
"storages": [
|
|
{
|
|
"deviceID": 2000,
|
|
"path": "s3:gotgt-bucket/iscsi/disk0",
|
|
"online": true,
|
|
"backendType": "s3",
|
|
"blockShift": 9,
|
|
"deviceSize": 1073741824,
|
|
"s3ChunkSize": 4194304,
|
|
"s3Endpoint": "http://localhost:9000",
|
|
"s3ForcePathStyle": true
|
|
}
|
|
],
|
|
"iscsiportals": [
|
|
{
|
|
"id": 0,
|
|
"portal": "127.0.0.1:3260"
|
|
}
|
|
],
|
|
"iscsitargets": {
|
|
"iqn.2016-09.com.gotgt.gostor:s3-target": {
|
|
"tpgts": {
|
|
"1": [0]
|
|
},
|
|
"luns": {
|
|
"1": 2000
|
|
}
|
|
}
|
|
}
|
|
}
|