Technical

VMDB - Technical

Previous Next

Introduction

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.

Update Status

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.

Layout

Offset Size Description
0x00 4 VMDB Magic 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

Update Status

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

Copyright © 2001-2015