Technical |
The VMDB block is 512 bytes long. It is the header for the Volume Manager Database. The VMDB and KLOG blocks manage the journalling of the database metadata.
The first VBLK block will follow immediately after the VMDB block (4Kn: the first VBLK block will reside in the same sector as the VMDB).
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 | VMDBMagic number |
0x04 | 4 | Sequence Number of last VBLK |
0x08 | 4 | Size of VBLK |
0x0C | 4 | Header Length |
0x10 | 2 | Update Status (see below) |
0x12 | 2 | Version Major (Always 0x04) |
0x14 | 2 | Version Minor (Always 0x0A) |
0x16 | 31 | Disk Group Name (string, null padded) |
0x35 | 64 | Disk Group GUID (string, null padded) |
0x75 | 8 | Committed Transaction ID |
0x7D | 8 | Pending Transaction ID |
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 | Number of Committed Disk Access Records |
0x99 | 4 | (Unused) |
0x9D | 4 | (Unused) |
0xA1 | 4 | Number of Volume Records after pending changes |
0xA5 | 4 | Number of Component Records after pending changes |
0xA9 | 4 | Number of Partition Records after pending changes |
0xAD | 4 | Number of Disk Records after pending changes |
0xB1 | 4 | Number of Disk Access Records after pending changes |
0xB5 | 4 | (Unused) |
0xB9 | 4 | (Unused) |
0xBD | 16 | Zeros (a) |
.. | 8 | Last Modification Time (b) |
(a) Note: VSFW 4.0 adds this field upon installation, and removes it during unsinstall,
it is unclear how to detect if this field will appear or not, other than checking 0xCD to see if it's in use.
(b) Timestamp is number of 100ns units since Jan 01 1601
Value | Description |
---|---|
0x01 | VMDB is clean |
0x02 | VMDB is in a change phase |
0x03 | VMDB is in a commit phase |
0x04 | VMDB is in an abort phase |
0x05 | VMDB is new |
0x06 | VMDB is stale |
0x08 | VMDB is offline |