Distributed Data Base
All compute resource backup servers and IS controllers within compute zone share the same distributed database (DDB).
It is tmpfs volume mounted at /onappstore/DB folder. The size of the database can be configured in /onappstore/onappstore.conf by changing parameter dbsize=256.
The database is created and populated with data during the IS startup process inside the SAMController service as shown below.
DDB is FS based data stored in folders as text files.
[FS_DB] Datastore Subdir
/onappstore/DB/Datastore: jdhbxnovc7zr86 /onappstore/DB/Datastore/jdhbxnovc7zr86: description members name overcommit replicas sector_size stripes uuid vdisks /onappstore/DB/Datastore/jdhbxnovc7zr86/members: 1308341613 1638717502 3789723832 3830220270 4284135282 976785243 /onappstore/DB/Datastore/jdhbxnovc7zr86/vdisks: awoeuctr854pmd qksozqwm8yaji l03obar8v249sz n8k74ulq5my1w2 r6vpuag9l0syn4 t2sbe73qmki1du
[FS_DB] v2 Subdir
This folder contains information about vDisks in JSON format it also stores metadata about these files.
It is a new way of storing data inside DDB, but for now, it is only for snapshot information.
ls /onappstore/DB/v2/VDisk/
12kaws896bte4y.json 12kaws896bte4y.json.mtd 243zhavwnfb6pq.json 243zhavwnfb6pq.json.mtd q9c7ny6jfa842g.json q9c7ny6jfa842g.json.mtd
[FS_DB] locks Subdir
This folder holds locks for resources (nodes, data stores, vDisks, etc.) to prevent transaction interference and race conditions.
In general, operation files are not stored here for a long time. Accordingly, many files inside this folder may indicate problems or overload.
Locks are moved from /tmp folder to DB for better performance and reliability.
[FS_DB] Node Subdir
/onappstore/DB/Node:
1152875907 1308341613 1638717502 1855767384 3789723832 3830220270 4284135282 976785243
/onappstore/DB/Node/1308341613:
backupchannel datastoremember freespace hbtl hostid ipaddr lastping model nodestatus performance revision serial size status utilization uuid vdisks vendor version
/onappstore/DB/Node/1308341613/vdisks:
awoeuctr854pmd n8k74ulq5my1w2 t2sbe73qmki1du
[FS_DB] VDisk Subdir
/onappstore/DB/VDisk:
awoeuctr854pmd qksozqwm8yaji l03obar8v249sz n8k74ulq5my1w2 r6vpuag9l0syn4 t2sbe73qmki1du
/onappstore/DB/VDisk/awoeuctr854pmd:
datastore description highest_gen_count memberinfo membership name replicas sector_size
sectors snapshot snapshots st_mems st_size uuid
/onappstore/DB/VDisk/awoeuctr854pmd/memberinfo:
1308341613 1638717502 4284135282 976785243
/onappstore/DB/VDisk/awoeuctr854pmd/memberinfo/1308341613:
frontend membership_gen_count nodestatus numkeys port seqno snap_limit st_mem status
…..
/onappstore/DB/VDisk/awoeuctr854pmd/snapshots:
n8k74ulq5my1w2 t2sbe73qmki1du
DDB stores data about virtual objects used for IS configuration and management. Accordingly, tmpfs are stored in RAM, so we store persistent data at disks attached to IS:
Node metadata is stored at the node itself (file: STORAGENODE)
Datastore metadata is stored at its members (file: DS-<UUID>)
VDisk metadata stored at its members (file: vdisks/<UUID>.xml)
At startup, this persistent data is transfered to /onappstore/DB folder by the local update script. SD daemon syncs it within compute zone via the multicast channel. Syncs are periodical 120-sec timeout or at any metadata changing event like vDisk allocation or online.