RAID superblock formats
From Linux Raid Wiki
(Difference between revisions)
Line 20: | Line 20: | ||
<tr><th colspan="8">16 Bytes, Offset 0-15 (0x00 - 0x0F)</th></tr> | <tr><th colspan="8">16 Bytes, Offset 0-15 (0x00 - 0x0F)</th></tr> | ||
<tr> | <tr> | ||
− | <td>0x00</td> | + | <td>0x00 - 0x03</td> |
− | <td>0</td> | + | <td>0 - 3</td> |
<td>4</td> | <td>4</td> | ||
<td>magic</td> | <td>magic</td> | ||
Line 30: | Line 30: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x04</td> | + | <td>0x04 - 0x07</td> |
− | <td>4</td> | + | <td>4 - 7</td> |
<td>4</td> | <td>4</td> | ||
<td>major_version</td> | <td>major_version</td> | ||
Line 40: | Line 40: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x08</td> | + | <td>0x08 - 0x0B</td> |
− | <td>8</td> | + | <td>8 - 11</td> |
<td>4</td> | <td>4</td> | ||
<td>feature_map</td> | <td>feature_map</td> | ||
Line 59: | Line 59: | ||
</table> | </table> | ||
</td> | </td> | ||
− | + | <td> </td> | |
− | + | ||
− | <td></td> | + | |
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>0x0C - 0x0F</td> |
− | <td>12</td> | + | <td>12 - 15</td> |
<td>4</td> | <td>4</td> | ||
<td>pad0</td> | <td>pad0</td> | ||
Line 74: | Line 72: | ||
</tr> | </tr> | ||
<tr><td colspan="8"> </td></tr> | <tr><td colspan="8"> </td></tr> | ||
− | <tr><th colspan="8">Section: Per-Array Identification & Configuration | + | <tr><th colspan="8">Section: Per-Array Identification & Configuration area</th></tr> |
<tr><th colspan="8">48 Bytes, Offset 16-63 (0x10 - 0x3F)</th></tr> | <tr><th colspan="8">48 Bytes, Offset 16-63 (0x10 - 0x3F)</th></tr> | ||
<tr> | <tr> | ||
− | <td>0x10</td> | + | <td>0x10 - 0x1F</td> |
− | <td>16</td> | + | <td>16 - 31</td> |
<td>16</td> | <td>16</td> | ||
<td>set_uuid</td> | <td>set_uuid</td> | ||
Line 87: | Line 85: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x20</td> | + | <td>0x20 - 0x3F</td> |
− | <td>32</td> | + | <td>32 - 63</td> |
<td>32</td> | <td>32</td> | ||
<td>set_name</td> | <td>set_name</td> | ||
Line 97: | Line 95: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x40</td> | + | <td>0x40 - 0x47</td> |
− | <td>64</td> | + | <td>64 - 71</td> |
<td>8</td> | <td>8</td> | ||
<td>ctime</td> | <td>ctime</td> | ||
Line 107: | Line 105: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x48</td> | + | <td>0x48 - 0x4B</td> |
− | <td>72</td> | + | <td>72 - 75</td> |
<td>4</td> | <td>4</td> | ||
<td>level</td> | <td>level</td> | ||
Line 126: | Line 124: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>0x4C - 0x4F</td> |
− | <td>76</td> | + | <td>76 - 79</td> |
<td>4</td> | <td>4</td> | ||
<td>layout</td> | <td>layout</td> | ||
Line 136: | Line 134: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x50</td> | + | <td>0x50 - 0x57</td> |
− | <td>80</td> | + | <td>80 - 87</td> |
<td>8</td> | <td>8</td> | ||
<td>size</td> | <td>size</td> | ||
Line 146: | Line 144: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x58</td> | + | <td>0x58 - 0x5B</td> |
− | <td>88</td> | + | <td>88 - 91</td> |
<td>4</td> | <td>4</td> | ||
<td>chunksize</td> | <td>chunksize</td> | ||
Line 156: | Line 154: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>0x5C - 0x5F</td> |
− | <td>92</td> | + | <td>92 - 95</td> |
<td>4</td> | <td>4</td> | ||
<td>raid_disks</td> | <td>raid_disks</td> | ||
Line 166: | Line 164: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x60</td> | + | <td>0x60 - 0x63</td> |
− | <td>96</td> | + | <td>96 - 99</td> |
<td>4</td> | <td>4</td> | ||
<td>bitmap_offset</td> | <td>bitmap_offset</td> | ||
Line 180: | Line 178: | ||
<tr><th colspan="8">64 Bytes, Offset 100-163 (0x64 - 0x7F)</th></tr> | <tr><th colspan="8">64 Bytes, Offset 100-163 (0x64 - 0x7F)</th></tr> | ||
<tr> | <tr> | ||
− | <td>0x64</td> | + | <td>0x64 - 0x67</td> |
− | <td>100</td> | + | <td>100 - 103</td> |
<td>4</td> | <td>4</td> | ||
<td>new_level</td> | <td>new_level</td> | ||
Line 190: | Line 188: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x68</td> | + | <td>0x68 - 0x6F</td> |
− | <td>104</td> | + | <td>104 - 111</td> |
<td>8</td> | <td>8</td> | ||
<td>reshape_position</td> | <td>reshape_position</td> | ||
Line 200: | Line 198: | ||
<tr> | <tr> | ||
</tr> | </tr> | ||
− | <td>0x70</td> | + | <td>0x70 - 0x73</td> |
− | <td>112</td> | + | <td>112 - 115</td> |
<td>4</td> | <td>4</td> | ||
<td>delta_disks</td> | <td>delta_disks</td> | ||
Line 210: | Line 208: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x74</td> | + | <td>0x74 - 0x77</td> |
− | <td>116</td> | + | <td>116 - 119</td> |
<td>4</td> | <td>4</td> | ||
<td>new_layout</td> | <td>new_layout</td> | ||
Line 220: | Line 218: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x78</td> | + | <td>0x78 - 0x7B</td> |
− | <td>120</td> | + | <td>120 - 123</td> |
<td>4</td> | <td>4</td> | ||
<td>new_chunk</td> | <td>new_chunk</td> | ||
Line 230: | Line 228: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>0x7C - 0x7F</td> |
− | <td>124</td> | + | <td>124 - 127</td> |
<td>4</td> | <td>4</td> | ||
<td>pad1</td> | <td>pad1</td> | ||
Line 243: | Line 241: | ||
<tr><th colspan="8">64 Bytes, Offset 128-191 (0x80 - 0xbf) </th></tr> | <tr><th colspan="8">64 Bytes, Offset 128-191 (0x80 - 0xbf) </th></tr> | ||
<tr> | <tr> | ||
− | <td>0x80</td> | + | <td>0x80 - 0x87</td> |
− | <td>128</td> | + | <td>128 - 135</td> |
<td>8</td> | <td>8</td> | ||
<td>data_offset</td> | <td>data_offset</td> | ||
Line 253: | Line 251: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x88</td> | + | <td>0x88 - 0x8F</td> |
− | <td>136</td> | + | <td>136 - 143</td> |
<td>8</td> | <td>8</td> | ||
<td>data_size</td> | <td>data_size</td> | ||
Line 263: | Line 261: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x90</td> | + | <td>0x90 - 0x97</td> |
− | <td>144</td> | + | <td>144 - 151</td> |
<td>8</td> | <td>8</td> | ||
<td>super_offset</td> | <td>super_offset</td> | ||
Line 273: | Line 271: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0x98</td> | + | <td>0x98 - 0x9F</td> |
− | <td>152</td> | + | <td>152 - 159</td> |
<td>8</td> | <td>8</td> | ||
<td>recovery_offset</td> | <td>recovery_offset</td> | ||
Line 283: | Line 281: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xA0</td> | + | <td>0xA0 - 0xA3</td> |
− | <td>160</td> | + | <td>160 - 163</td> |
<td>4</td> | <td>4</td> | ||
<td>dev_number</td> | <td>dev_number</td> | ||
Line 293: | Line 291: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xA4</td> | + | <td>0xA4 - 0xA7</td> |
− | <td>164</td> | + | <td>164 - 167</td> |
<td>4</td> | <td>4</td> | ||
<td>cnt_corrected_read</td> | <td>cnt_corrected_read</td> | ||
Line 303: | Line 301: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xA8</td> | + | <td>0xA8 - 0xB7</td> |
− | <td>168</td> | + | <td>168 - 183</td> |
<td>16</td> | <td>16</td> | ||
<td>device_uuid</td> | <td>device_uuid</td> | ||
Line 310: | Line 308: | ||
<td>__u8[16]</td> | <td>__u8[16]</td> | ||
<td>Dv</td> | <td>Dv</td> | ||
− | <td> | + | <td></td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 336: | Line 334: | ||
<tr><th colspan="8">64 Bytes, Offset 192-256 (0xC0 - 0xFF)</th></tr> | <tr><th colspan="8">64 Bytes, Offset 192-256 (0xC0 - 0xFF)</th></tr> | ||
<tr> | <tr> | ||
− | <td>0xC0</td> | + | <td>0xC0 - 0xC7</td> |
− | <td>192</td> | + | <td>192 - 199</td> |
<td>8</td> | <td>8</td> | ||
<td>utime</td> | <td>utime</td> | ||
Line 346: | Line 344: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xC8</td> | + | <td>0xC8 - 0xCF</td> |
− | <td>200</td> | + | <td>200 - 207</td> |
<td>8</td> | <td>8</td> | ||
<td>events</td> | <td>events</td> | ||
Line 356: | Line 354: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xD0</td> | + | <td>0xD0 - 0xD7</td> |
− | <td>208</td> | + | <td>208 - 215</td> |
<td>8</td> | <td>8</td> | ||
<td>resync_offset</td> | <td>resync_offset</td> | ||
Line 366: | Line 364: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xD8</td> | + | <td>0xD8 - 0xDB</td> |
− | <td>216</td> | + | <td>216 - 219</td> |
<td>4</td> | <td>4</td> | ||
<td>sb_csum</td> | <td>sb_csum</td> | ||
Line 376: | Line 374: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>0xDC</td> | + | <td>0xDC - 0xDF</td> |
− | <td>220</td> | + | <td>220 - 223</td> |
<td>4</td> | <td>4</td> | ||
<td>max_dev</td> | <td>max_dev</td> |
Revision as of 21:21, 22 February 2008
Currently, the Linux RAID subsystem recognizes two distinct variant superblocks.
They are known as v0.9 and v1.x Superblock formats.
The v1.x Superblock format is as follows:
Offset (Hex) | Offset (Dec) | Length (in bytes) |
Field Name | Usage/Meaning | Data Type | Data Value | Notes | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Section: Superblock/"Magic-Number" Identification area | |||||||||||||||||||||||||
16 Bytes, Offset 0-15 (0x00 - 0x0F) | |||||||||||||||||||||||||
0x00 - 0x03 | 0 - 3 | 4 | magic | "Magic Number" (Superblock ID) |
__u32 | 0xa92b4efc (little-endian) |
|||||||||||||||||||
0x04 - 0x07 | 4 - 7 | 4 | major_version | Major Version of the Superblock |
__u32 | 1 | |||||||||||||||||||
0x08 - 0x0B | 8 - 11 | 4 | feature_map | Feature Map | __u32 | 0 Bit-Mapped Field
|
|||||||||||||||||||
0x0C - 0x0F | 12 - 15 | 4 | pad0 | Padding Block 0 | __u32 | 0 | Always set to zero when writing |
||||||||||||||||||
Section: Per-Array Identification & Configuration area | |||||||||||||||||||||||||
48 Bytes, Offset 16-63 (0x10 - 0x3F) | |||||||||||||||||||||||||
0x10 - 0x1F | 16 - 31 | 16 | set_uuid | UUID for the Array(?) | __u8[16] | Set by user-space formatting util |
|||||||||||||||||||
0x20 - 0x3F | 32 - 63 | 32 | set_name | Name for the Array(?) | char[32] | Set and used by user-space utils |
Nt | ||||||||||||||||||
0x40 - 0x47 | 64 - 71 | 8 | ctime | Creation Time(?) | __u64 | low 40-bits are seconds high 24-bits are uSeconds |
|||||||||||||||||||
0x48 - 0x4B | 72 - 75 | 4 | level | RAID Level of the Array |
__u32 |
|
RAID-6 not mentioned in the mdadm source(?) |
||||||||||||||||||
0x4C - 0x4F | 76 - 79 | 4 | layout | layout of array (RAID5 only) |
__u32 | (?) | Only used for RAID5 |
||||||||||||||||||
0x50 - 0x57 | 80 - 87 | 8 | size | used-size of component devices | __u64 | size of component devices (in # of 512-byte sectors) |
|||||||||||||||||||
0x58 - 0x5B | 88 - 91 | 4 | chunksize | chunk-size of the array | __u32 | chunk-size of the array (in # of 512-byte sectors) |
|||||||||||||||||||
0x5C - 0x5F | 92 - 95 | 4 | raid_disks | (?)number of disks in array(?) | __u32 | # | |||||||||||||||||||
0x60 - 0x63 | 96 - 99 | 4 | bitmap_offset | # of sectors after superblock that bitmap starts (See note about signed value) |
__u32 | (signed) | This is only valid if feature_map[0] is set Signed value allows bitmap to appear before superblock on the disk |
||||||||||||||||||
Section: RAID-Reshape In-Process Metadata Storage/Recovery area | |||||||||||||||||||||||||
(Only contains valid data if feature_map bit '4' is set) | |||||||||||||||||||||||||
64 Bytes, Offset 100-163 (0x64 - 0x7F) | |||||||||||||||||||||||||
0x64 - 0x67 | 100 - 103 | 4 | new_level | (Used with RESHAPE) the new RAID level being reshaped-to |
__u32 | See field named "level" above |
|||||||||||||||||||
0x68 - 0x6F | 104 - 111 | 8 | reshape_position | (Used with RESHAPE) Next address of the array to reshape |
__u64 | current position of the reshape operation | |||||||||||||||||||
0x70 - 0x73 | 112 - 115 | 4 | delta_disks | (Used with RESHAPE) this holds the change in # of raid disks |
__u32 | change in # of raid disks | |||||||||||||||||||
0x74 - 0x77 | 116 - 119 | 4 | new_layout | (Used with RESHAPE) |
__u32 | new layout for array | |||||||||||||||||||
0x78 - 0x7B | 120 - 123 | 4 | new_chunk | (Used with RESHAPE) |
__u32 | new chunk size (See ) |
|||||||||||||||||||
0x7C - 0x7F | 124 - 127 | 4 | pad1 | Padding Block #1 | __u8[4] | 0 | Always set to zero when writing |
||||||||||||||||||
Section: This-Member-Device Information area | |||||||||||||||||||||||||
64 Bytes, Offset 128-191 (0x80 - 0xbf) | |||||||||||||||||||||||||
0x80 - 0x87 | 128 - 135 | 8 | data_offset | the sector # upon which data starts | __u64 | sector # where data begins (Often 0) |
|||||||||||||||||||
0x88 - 0x8F | 136 - 143 | 8 | data_size | sectors in the device that are used for data |
__u64 | # of sectors that can be used for data | |||||||||||||||||||
0x90 - 0x97 | 144 - 151 | 8 | super_offset | # of the sector upon which this superblock starts |
__u64 | # of the sector upon which this superblock starts |
|||||||||||||||||||
0x98 - 0x9F | 152 - 159 | 8 | recovery_offset | sectors before this offset (from data_offset) have been recovered |
__u64 | sector # | |||||||||||||||||||
0xA0 - 0xA3 | 160 - 163 | 4 | dev_number | Fm | __u32 | Dv | |||||||||||||||||||
0xA4 - 0xA7 | 164 - 167 | 4 | cnt_corrected_read | Fm | __u32 | Dv | |||||||||||||||||||
0xA8 - 0xB7 | 168 - 183 | 16 | device_uuid | UUID of the member-device | __u8[16] | Dv | |||||||||||||||||||
0xB8 | 184 | 1 | devflags | Fm | __u8 | Dv | |||||||||||||||||||
0xB9 - 0xBF | 185 - 191 | 7 | pad2 | Padding block 2 | __u8[7] | 0 | Always set to zero when writing |
||||||||||||||||||
Section: Array-State Information area | |||||||||||||||||||||||||
64 Bytes, Offset 192-256 (0xC0 - 0xFF) | |||||||||||||||||||||||||
0xC0 - 0xC7 | 192 - 199 | 8 | utime | Fm | __u64 | low 40-bits are seconds high 24-bits are uSeconds |
Nt | ||||||||||||||||||
0xC8 - 0xCF | 200 - 207 | 8 | events | Fm | __u64 | Dv | Nt | ||||||||||||||||||
0xD0 - 0xD7 | 208 - 215 | 8 | resync_offset | Fm | __u64 | Dv | Nt | ||||||||||||||||||
0xD8 - 0xDB | 216 - 219 | 4 | sb_csum | Fm | __u32 | Dv | Nt | ||||||||||||||||||
0xDC - 0xDF | 220 - 223 | 4 | max_dev | Fm | __u32 | Dv | Nt | ||||||||||||||||||
0xE0 - 0xFF | 224 - 255 | 32 | pad3 | Padding Block 3 | __u8[32] | 0 | Always set to zero when writing |
||||||||||||||||||
Remaining sections haven't been added to the wiki yet | |||||||||||||||||||||||||
Oh | Od | Lb | Fn | Fm | Dt | Dv | Nt |