ウェアレベリングを実現する技術はいくつもあるが、大きく分けると、記憶媒体のモジュール内のハードウェア を工夫することによるアプローチと、記憶媒体への読み書きフォーマット (ファイルシステム )を工夫するソフトウェア 上のアプローチの2つになる。
読み書きをしようとする記憶素子(ブロック)をCPU などが指定する場合に、その指定されたアドレスを直接用いるのではなく、アドレスの変換テーブルなどを用いることによって実際にアクセスされる記憶素子を間接指定する仕掛けを、ハードウェアで実現しておく。記憶媒体への書き込みを行なう際には、このアドレス変換テーブルの値を調整することにより、まだあまり書き換え回数が多くない素子に実際の書き換え操作が発生するようにする。
この技術が有効なのは、CDなどのような記録媒体だけが個別に販売されるようなものではなく、コンパクトフラッシュ のような記憶素子へのアクセス制御回路がセットになった状態で取り扱われるものにおいてである。近年[ いつ? ] 、多用されつつあるNAND型フラッシュメモリ を使った記憶媒体では、一部プロフェッショナル向けの高価格帯製品において、この技術を取り入れたものの商品化が始まっている。
ハードウェアレベルのウェアレベリングは、具体的には記憶素子の各ブロック毎の更新回数をデバイスで記録、管理しておき、(例えばファイルシステムの管理情報などの)更新が頻繁なブロックと、変更回数が少ないまたは空きのブロックとを物理的に「スワップ」することである。つまり、あるブロックについての更新回数の値が、全ブロックの状態から計算される値など一定値を下回った場合に当該ブロックの内容を空きブロックに転送し、移動させる(空きブロックが少ないか無い場合は、変更回数が少ないブロックとの間でブロックを転送し、入れ替える)。このようにして記憶媒体全体の変更回数を平準化させ、該当ブロックを「スワップ」した後は前述のアドレス変換テーブルを更新する。これにより、ソフトウェアからはウェアレベリング動作を(積極的には)関知せずに読み書きを続けられる。
以上のことから、ウェアレベリングのアルゴリズムにもよるが、更新頻度の高いデータブロックほど記憶媒体全般の記憶ブロックに渡って書き込みが行われることになるため、データの完全消去 の観点からするとHDDに対する従来の伝統的な消去手法は適用できないことになる。
コンピュータシステムが補助記憶装置 にデータを保管する際には、ファイル と呼ばれる単位で読み書きをすることが圧倒的に多い。この際、「どのファイルが媒体のどの位置に格納されているのか」という情報を管理する機構のことを、ファイルシステム と呼ぶ。このファイルシステムの構成を工夫することにより、ウェアレベリングを実現できる。
書き換え回数制限がほぼ無いに等しい一般的なハードディスク を前提としたファイルシステムの場合、あるファイルが使用する記憶素子は一度割り当てられると変更されることが無いため、書き換え頻度が高いファイル(動作の履歴を書き込むファイルなど)に割り当てられた記憶素子に書き換えが集中してしまう。これに対し、ウェアレベリングに対応したファイルシステムでは、書き込みの度に使用する記憶素子を次々と取り替え、書き換えが同じ素子に集中しないように制御される。
また、ファイルシステムの管理情報、すなわちファイル本体が媒体中のどこにあるかを示すデータや媒体中の未使用の領域がどこであるかを示すデータは、最も書き換え頻度が高くなるので、この情報が1か所に集中しないように制御する工夫も必要になる。場合によっては、管理情報だけは書き換え回数制限が無い別の媒体に保存するという手法がとられることもある。
NAND型フラッシュメモリのように、1バイト 単位での書き換えができず、書き換えはある程度まとまったブロック単位で行なわれるという素子を用いる場合、ファイルシステムのほうでそれを考慮し、ファイルのうち書き換えが必要な部分だけを1つのブロックにまとめるという操作をすることもある。
組み込み機器の世界でよく用いられているJFFS またはその派生版のJFFS2 というファイルシステムは、ウェアレベリングに対応したファイルシステムの代表格である(JFFSには、上記のNAND型フラッシュメモリに対応する機構は含まれていない)。
Microsoft Windows 7 では「TRIMコマンド 」への対応がなされた。これはOS側のファイルシステムで、ファイルの変更や削除などにより使用されなくなった(ファイルシステムとしては書き込んだデータが保持されなくてもよい)記憶ブロックのアドレスを、前述のハードウェアレベルのウェアレベリングに対応した記憶媒体(具体的には対応Flash SSD)に通知する。これにより、記憶媒体側でウェアレベリングなどの動作の際に不必要なデータブロックまで読み書きなどの管理動作をする必要がなくなり、オーバーヘッドや寿命の改善に資するという。従来は、記憶媒体側では1回でも書き込みがあったブロックは無条件にデータを保持し続けるため、ウェアレベリング動作の際もブロックの「スワップ」の際に本来は保持の必要のないブロックも読み書きを行うことにより、オーバーヘッドなどの無駄が生じていた。