How does aggregate block number map to disk block number

Suppose I have a 6-disks(4 data disks and two parity disks) raid-dp group, and an aggregate created on it (only one raid-dp). The blocks this aggregate occupys are represented as Xn in the figure.

Then a new data disk is added to the raid group. What will happen to the mapping between aggregate block number and disk block number? Are they left unchanged? What do the mapping records look like?

Re: How does aggregate block number map to disk block number

Data layout will be unchanged, until proceeding "agregate-level physical reallocation" ('reallocation start -p' option).

But beware of many side effects for it.

Look at:

and bundled docs about 'reallocate' command, as a start point.

In your layout, next writing (X7) in aggregate will be done at 'Dnew', and so on, but previously saved blocks will be unchanged, of course (it's a WAFL basics).

Re: How does aggregate block number map to disk block number

Thank you so much. But there is still a question: if aggregate block number is not reallocated immediately after a new disk is added to a raid group, there must be some "meta data" keeping this information?

Take my layout for example, let's say before the new disk is added, aggr block 0 maps to (disk1,block0), aggr block 1 maps to (disk2,block0) ... aggr block 4 maps to (disk0,block1) and so on.Supoose the last aggr block is block 4n-1 which maps to (disk4 , block n-1). After the new disk is added , then what will this mapping looks like? The last aggr block becomes block 5n-1 and aggr blocks 4n through 5n-1 map to (disk new , block 0) through (disk new , block n-1)? If so , where is this mapping kept ? I believe it is not the "natural" mapping rule of raid-dp.

Re: How does aggregate block number map to disk block number

Everything is explained by the team that developed FlexVols in this link:

Section 3.1 explains how files, flexvols, aggregates and disks relate to each other.  That should clear up your confusion.  WAFL integrates with the RAID engine so that it understands where the blocks are placed beyond a typical volume manager that just hands off data for reassignment to a RAID controller.



Re: How does aggregate block number map to disk block number

Thank you. I have read this paper, it illustrates the mapping from file block nunber to FlexVol block number(VVBN) and the mapping from VVBN to aggregate block number(PVBN). It also illustrates how WAFL eliminates the VVBN to PVBN translation for the sake of efficiency.

BUT my question is actually about how does PVBN map to disk block number( DBN in this paper's terminology).

Is it  related to the "RAID file" which is maintained by the aggr for each vol ?

Do you mean WAFL sees raid group layout? Where can I find some detailed material regarding this, for example, the binary layout of data structures WAFL uses for this

Re: How does aggregate block number map to disk block number

The patent to adding disks to the NetApp filer is found here:

"The configuration tree 400 is constructed in the memory 124 of the storage system 120 by a label assimilation process 340 of the RAID subsystem 300 . According to the assimilation process, each disk associated with a volume includes a label that describes its placement and association with that volume. The on-disk label is, in essence, self-describing information for each disk that is actively attached to the storage system 120 . The labels are used to dynamically assemble the disks into a volume and to construct an in core configuration tree 400 for that volume, starting from the disk object level up to the volume object level. Therefore, a label on a disk identifies that disk's participation in a RAID group and, furthermore, that group's association with plex, mirror and, ultimately, volume objects in the configuration tree. The label is located in a well-known location of the disk so that it can be queried by the RAID subsystem in accordance with, e.g., a discovery process during a boot operation."

"In Step 726 , the inserted disks are assigned as either data or parity disks and, for each data disk, a block (address) range is assigned in Step 728 . Note that as the disks are pushed to the volume (RAID group) by the DISKADD object, the on-disk labels for each pushed disk is updated to reflect its placement with the volume."

The disk label seems to be the key here.