If is is cal values, I generally use two copies.
If it is user settings, I put those in a single region of flash and divide up contiguous space into perhaps 32 sequential areas (or "records") to contain the settings
To write/ update settings the program walks through the 32 records and finds an erased 'copy' (all ff) with good CRC for that record
now it knows its up to a clean/erased record, and writes the settings there.
. the next time it writes, it just finds the next record.
On load settings, the program walks through until it finds an erased record (ff) and backs up one step and loads those the RAM.
Eventually, the user writes the entire region and an erase is required . This can occur a page at a time , or if the user maintains TWO regions, say 64 records , then the whole region/ page/sector erase can be done independently in the 1st region from the data in the 2nd region.
CRCs are used for each set of setting records .
If the init program cannot find a good CRC, it loads defaults into the region/record and continues.