Technical |
The VMDB is 512 bytes long. It is the header for the main part of the database. The VMDB and KLOG blocks manage the journalling of the database metadata.
To prevent data loss during updates, and changes to the VMDB are logged. In the event of a power failure, the database can be rolled back to a consistant state. The table below shows what each VMDB Update Status means.
All updates to the database are made in two stages. First the new VBLKs are added, then the old ones are deleted.
Offset | Size | Description |
---|---|---|
0x00 | 4 | "VMDB" Magic number |
0x04 | 4 | Sequence Number of last VBLK |
0x08 | 4 | Size of VBLK |
0x0C | 4 | Offset to first VBLK |
0x10 | 2 | Update Status |
0x12 | 2 | Version Major (Always 0x04) |
0x14 | 2 | Version Minor (Always 0x0A) |
0x16 | 31 | Disk Group Name (string, null padded) |
0x35 | 64 | Disk Group Id GUID (string, null padded) |
0x75 | 8 | Committed Sequence |
0x7D | 8 | Pending Sequence |
0x85 | 4 | Number of Committed Volume VBLKs |
0x89 | 4 | Number of Committed Component VBLKs |
0x8D | 4 | Number of Committed Partition VBLKs |
0x91 | 4 | Number of Committed Disk VBLKs |
0x95 | 4 | (Unused) |
0x99 | 4 | (Unused) |
0x9D | 4 | (Unused) |
0xA1 | 4 | Number of Pending Volume VBLKs |
0xA5 | 4 | Number of Pending Component VBLKs |
0xA9 | 4 | Number of Pending Partition VBLKs |
0xAD | 4 | Number of Pending Disk VBLKs |
0xB1 | 4 | (Unused) |
0xB5 | 4 | (Unused) |
0xB9 | 4 | (Unused) |
0xBD | 8 | Last Accessed Time (a) |
(a) Timestamp is number of 100ns units since Jan 01 1601
Flags | Description |
---|---|
0x01 | VMDB is in a consistant state |
0x02 | VMDB is in a creation phase |
0x03 | VMDB is in a deletion phase |