WAFL working principle
Basic structures such as:
650) this.width=650; "Src=" https://s5.51cto.com/wyfs02/M00/A6/78/wKioL1nPYMiRJCGbAADlI6rWRuU680.jpg-wh_500x0-wm_ 3-wmp_4-s_1784102167.jpg "style=" Float:none; "title=" 1.jpg "alt=" Wkiol1npymirjcgbaadli6rwruu680.jpg-wh_50 "/>
Client sends write request
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M00/A6/78/wKioL1nPYMmSGPlEAADxH257hCc240.jpg-wh_500x0-wm_ 3-wmp_4-s_3067951132.jpg "style=" Float:none; "title=" 2.jpg "alt=" Wkiol1npymmsgpleaadxh257hcc240.jpg-wh_50 "/>
Controller 1 writes data to system memory and NVRAM, and synchronizes data to control 2
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M01/A6/78/wKioL1nPYMqB-CdhAAD0l9538pg897.jpg-wh_500x0-wm_ 3-wmp_4-s_460025724.jpg "style=" Float:none; "title=" 3.jpg "alt=" Wkiol1npymqb-cdhaad0l9538pg897.jpg-wh_50 "/>
Controller 2 Send acknowledgement to Controller 1
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M02/A6/78/wKioL1nPYMzCmOy2AADsfcYATZI476.jpg-wh_500x0-wm_ 3-wmp_4-s_4064157058.jpg "style=" Float:none; "title=" 5.jpg "alt=" Wkiol1npymzcmoy2aadsfcyatzi476.jpg-wh_50 "/>
Controller 1 Send acknowledgement to client
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M01/A6/78/wKioL1nPYNDDkB6cAADyNpg4CsU870.jpg-wh_500x0-wm_ 3-wmp_4-s_3263974804.jpg "style=" Float:none; "title=" 6.jpg "alt=" Wkiol1npynddkb6caadynpg4csu870.jpg-wh_50 "/>
Another client sends a write request
650) this.width=650; "Src=" https://s3.51cto.com/wyfs02/M00/07/C7/wKiom1nPYRTBeY49AADtGkBjnBQ676.jpg-wh_500x0-wm_ 3-wmp_4-s_2746295871.jpg "style=" Float:none; "title=" 7.jpg "alt=" Wkiom1npyrtbey49aadtgkbjnbq676.jpg-wh_50 "/>
Controller 1 writes data to the system memory and NVRAM and synchronizes to the Controller 2
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M00/A6/78/wKioL1nPYNKxyiANAADyoZ_AKU8404.jpg-wh_500x0-wm_ 3-wmp_4-s_3455136522.jpg "style=" Float:none; "title=" 8.jpg "alt=" Wkiol1npynkxyianaadyoz_aku8404.jpg-wh_50 "/>
Controller 2 Send acknowledgement to Controller 1
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M01/07/C7/wKiom1nPYRbgEbMkAADujo-HnQQ017.jpg-wh_500x0-wm_ 3-wmp_4-s_1120209972.jpg "style=" Float:none; "title=" 9.jpg "alt=" Wkiom1npyrbgebmkaadujo-hnqq017.jpg-wh_50 "/>
Controller 1 Send acknowledgement to client
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M01/A6/78/wKioL1nPYNTTColjAADvztkwmTU788.jpg-wh_500x0-wm_ 3-wmp_4-s_594346501.jpg "style=" Float:none; "title=" 10.jpg "alt=" Wkiol1npynttcoljaadvztkwmtu788.jpg-wh_50 "/>
Another client sends a write request to Controller 1, controller 1 writes memory and NVRAM, and synchronizes the data to the Controller 2
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M02/07/C7/wKiom1nPYRnRmQ8BAAD5JPZZAa8511.jpg-wh_500x0-wm_ 3-wmp_4-s_946566998.jpg "style=" Float:none; "title=" 11.jpg "alt=" Wkiom1npyrnrmq8baad5jpzzaa8511.jpg-wh_50 "/>
Controller 2 Send acknowledgement to Controller 1
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M00/07/C7/wKiom1nPYRqgHcxXAADvy2EnJpI218.jpg-wh_500x0-wm_ 3-wmp_4-s_423672402.jpg "style=" Float:none; "title=" 12.jpg "alt=" Wkiom1npyrqghcxxaadvy2enjpi218.jpg-wh_50 "/>
Controller 1 Send acknowledgement to client
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M01/07/C7/wKiom1nPYRvwCRzIAADwCA_3Fz4071.jpg-wh_500x0-wm_ 3-wmp_4-s_1888078923.jpg "style=" Float:none; "title=" 13.jpg "alt=" Wkiom1npyrvwcrziaadwca_3fz4071.jpg-wh_50 "/>
At this point the controller's NVRAM is half full
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M00/07/C7/wKiom1nPYRziFCcCAADtk-Ctyn0356.jpg-wh_500x0-wm_ 3-wmp_4-s_2943597170.jpg "style=" Float:none; "title=" 14.jpg "alt=" Wkiom1npyrzifcccaadtk-ctyn0356.jpg-wh_50 "/>
A consistent point is triggered, and the controller writes the in-memory data to the disk
(conditions that trigger a consistent point: NVRAM is half full; the last occurrence of CP exceeds 10 seconds; the snapshot is created; the administrator shuts down the system)
650) this.width=650; "Src=" https://s3.51cto.com/wyfs02/M00/A6/78/wKioL1nPYNrwN5RXAADw-yOTeAg014.jpg-wh_500x0-wm_ 3-wmp_4-s_262949309.jpg "style=" Float:none; "title=" 15.jpg "alt=" Wkiol1npynrwn5rxaadw-yoteag014.jpg-wh_50 "/>
Complete consistency, NVRAM is emptied
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M00/A6/78/wKioL1nPYNvDBwUkAADp6ZhOfYc659.jpg-wh_500x0-wm_ 3-wmp_4-s_3803620460.jpg "style=" Float:none; "title=" 16.jpg "alt=" Wkiol1npynvdbwukaadp6zhofyc659.jpg-wh_50 "/>
WAFL once the data is written to memory, the client is immediately sent an acknowledgement. This is done before the data is written to disk to optimize performance. For the client, the data has been permanently written to the store. If a power outage occurs, the contents of the system memory are lost. If the data is written only to system memory, an inconsistent state is caused. NVRAMis non-volatile.- it can still save data in the case of a power outage,If a power outage occurs before the data is written to the disk,You can start from theNVRAMrecovery. NVRAMwrites data to system memory,and write them from a consistent point to the disk. Write data toHAtwo controllers in the pair,so that if there is a takeoverHAThe peer can write data to disk.
After Controller 1 fails
650) this.width=650; "Src=" https://s3.51cto.com/wyfs02/M01/07/C7/wKiom1nPYSDQyEFLAAD48mCww5Y469.jpg-wh_500x0-wm_ 3-wmp_4-s_2793625600.jpg "style=" Float:none; "title=" 17.jpg "alt=" Wkiom1npysdqyeflaad48mcww5y469.jpg-wh_50 "/>
Controller 2 writes the inside of the NVRAM to memory
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M02/07/C7/wKiom1nPYSGyrUMjAAD7Cyf91KQ928.jpg-wh_500x0-wm_ 3-wmp_4-s_99754505.jpg "style=" Float:none; "title=" 18.jpg "alt=" Wkiom1npysgyrumjaad7cyf91kq928.jpg-wh_50 "/>
Controller 2 then writes the in-memory data to the disk
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M01/A6/78/wKioL1nPYN-Qzc4yAAEBvk-GEPk584.jpg-wh_500x0-wm_ 3-wmp_4-s_2566994471.jpg "style=" Float:none; "title=" 19.jpg "alt=" Wkiol1npyn-qzc4yaaebvk-gepk584.jpg-wh_50 "/>
Controller 2 empties the NVRAM
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M00/07/C7/wKiom1nPYSPShD7OAAECaq-DODk735.jpg-wh_500x0-wm_ 3-wmp_4-s_1897096369.jpg "style=" Float:none; "title=" 20.jpg "alt=" Wkiom1npyspshd7oaaecaq-dodk735.jpg-wh_50 "/>
Client sends write request to Controller 1
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M02/A6/78/wKioL1nPYOSw2PWRAADy2X8dXPQ930.jpg-wh_500x0-wm_ 3-wmp_4-s_322369936.jpg "style=" Float:none; "title=" 22.jpg "alt=" Wkiol1npyosw2pwraady2x8dxpq930.jpg-wh_50 "/>
Controller 1 writes data to memory and NVRAM and synchronizes to controller 2
650) this.width=650; "Src=" https://s5.51cto.com/wyfs02/M01/07/C7/wKiom1nPYSijVxtdAAD077c038k824.jpg-wh_500x0-wm_ 3-wmp_4-s_4235555446.jpg "style=" Float:none; "title=" 23.jpg "alt=" Wkiom1npysijvxtdaad077c038k824.jpg-wh_50 "/>
Controller 2 Send acknowledgement to Controller 1
650) this.width=650; "Src=" https://s5.51cto.com/wyfs02/M02/07/C7/wKiom1nPYSqxRF26AADtZm73Rec948.jpg-wh_500x0-wm_ 3-wmp_4-s_1941015963.jpg "style=" Float:none; "title=" 24.jpg "alt=" Wkiom1npysqxrf26aadtzm73rec948.jpg-wh_50 "/>
Controller 1 sends confirmation to the client
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M00/A6/78/wKioL1nPYOvBga2tAADzRF2gIUo485.jpg-wh_500x0-wm_ 3-wmp_4-s_394267641.jpg "style=" Float:none; "title=" 25.jpg "alt=" Wkiol1npyovbga2taadzrf2giuo485.jpg-wh_50 "/>
Client sends read request to Controller 1
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M02/07/C7/wKiom1nPYTLi38e-AAD30YqNXqA381.jpg-wh_500x0-wm_ 3-wmp_4-s_2499854799.jpg "style=" Float:none; "title=" 26.jpg "alt=" Wkiom1npytli38e-aad30yqnxqa381.jpg-wh_50 "/>
Controller 1 first finds data from memory
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M02/A6/78/wKioL1nPYPKTGYW2AAD2bMRmLwA860.jpg-wh_500x0-wm_ 3-wmp_4-s_2850242283.jpg "style=" Float:none; "title=" 27.jpg "alt=" Wkiol1npypktgyw2aad2bmrmlwa860.jpg-wh_50 "/>
If the data is in memory, move the data up to the top
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M01/A6/78/wKioL1nPYPTQA3F_AAD5uoHbaDU439.jpg-wh_500x0-wm_ 3-wmp_4-s_1161899288.jpg "style=" Float:none; "title=" 28.jpg "alt=" Wkiol1npyptqa3f_aad5uohbadu439.jpg-wh_50 "/>
Other data is moved down and the found data is sent to the client
650) this.width=650; "Src=" https://s5.51cto.com/wyfs02/M00/07/C7/wKiom1nPYTmClN84AAD3A3I4XvA990.jpg-wh_500x0-wm_ 3-wmp_4-s_2426309133.jpg "style=" Float:none; "title=" 29.jpg "alt=" Wkiom1npytmcln84aad3a3i4xva990.jpg-wh_50 "/>
Another client also sends a read request
650) this.width=650; "Src=" https://s5.51cto.com/wyfs02/M02/A6/78/wKioL1nPYPjgj-aYAAD76qTpQ6o083.jpg-wh_500x0-wm_ 3-wmp_4-s_271546124.jpg "style=" Float:none; "title=" 30.jpg "alt=" Wkiol1npypjgj-ayaad76qtpq6o083.jpg-wh_50 "/>
Control is not found in memory and needs to be read from disk
650) this.width=650; "Src=" https://s4.51cto.com/wyfs02/M00/07/C7/wKiom1nPYTzCT0nGAAEBTNErbdQ283.jpg-wh_500x0-wm_ 3-wmp_4-s_2464420779.jpg "style=" Float:none; "title=" 31.jpg "alt=" Wkiom1npytzct0ngaaebtnerbdq283.jpg-wh_50 "/>
Data read from disk is placed at the top of the memory
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M00/A6/78/wKioL1nPYPrir-5VAADtgCCNST4450.jpg-wh_500x0-wm_ 3-wmp_4-s_3803618357.jpg "style=" Float:none; "title=" 32.jpg "alt=" Wkiol1npyprir-5vaadtgccnst4450.jpg-wh_50 "/>
Indirect data access: Client sends read requests through Controller 2
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M01/07/C9/wKiom1nPoPKRYtigAAEYrkL_XNs696.jpg-wh_500x0-wm_ 3-wmp_4-s_235382228.jpg "style=" Float:none; "title=" 33.jpg "alt=" Wkiom1npopkrytigaaeyrkl_xns696.jpg-wh_50 "/>
Controller 2 sends the request to the Controller 1
650) this.width=650; "Src=" https://s1.51cto.com/wyfs02/M00/07/C9/wKiom1nPoPLiDvzDAAEZYlMPdec392.jpg-wh_500x0-wm_ 3-wmp_4-s_2365658965.jpg "style=" Float:none; "title=" 34.jpg "alt=" Wkiom1npoplidvzdaaezylmpdec392.jpg-wh_50 "/>
Controller 1 looks up data from the disk and puts it in memory and transmits it to controller 2 to provide the client
650) this.width=650; "Src=" https://s3.51cto.com/wyfs02/M00/A6/7A/wKioL1nPoK-wA6HuAAEde4Fcyy0915.jpg-wh_500x0-wm_ 3-wmp_4-s_496946319.jpg "style=" Float:none; "title=" 35.jpg "alt=" Wkiol1npok-wa6huaaede4fcyy0915.jpg-wh_50 "/>
This data will be placed at the top of the memory
650) this.width=650; "Src=" https://s3.51cto.com/wyfs02/M02/07/C9/wKiom1nPoPKTaMQOAAEMZSTbvGk356.jpg-wh_500x0-wm_ 3-wmp_4-s_3986616539.jpg "style=" Float:none; "title=" 36.jpg "alt=" Wkiom1npopktamqoaaemzstbvgk356.jpg-wh_50 "/>
NETAPP DATAONTAP Cluster Mode learning NOTE 2