眾所周知,smr盤慢的原因是:新寫入的數據會覆蓋掉一部分舊的磁道
在硬盤數據少的時候可以不斷寫入空白磁道,問題尚不明顯
而數據一多,需要覆蓋舊磁道的時候,就出現一個問題:要保證舊數據的完整正確,就只有:
1.先讀舊數據到緩存
2.寫新數據
3.校驗舊數據是否ok
4.不ok寫回舊數據到原區域,然後轉到2
5.校驗舊數據直到ok
就算一次ok也要磁盤轉3圈,非常麻煩,數據一大,磁道一多,增加的時間是相當可觀的
按我的設想,可以把第1 2 3步的過程做3個磁頭,放在同一個驅動臂上(暫且考慮一個盤面)
看,這個世界清淨了!!讀取數據的時候還可以一次讀2個磁道,速度X2美滋滋
考慮到驅動臂的運轉,磁頭沿弧線運動,不可能保證在所有磁道上都保證相鄰關係
這個時候就要放出黑科技了:把1和3只做一個磁頭,但是放在另一個驅動臂上,不停的讀取,在緩存中校驗
然而,smr的另一大問題:數據密度過高,磁區過小帶來的易失性問題,就只有自求多福了
在硬盤數據少的時候可以不斷寫入空白磁道,問題尚不明顯
而數據一多,需要覆蓋舊磁道的時候,就出現一個問題:要保證舊數據的完整正確,就只有:
1.先讀舊數據到緩存
2.寫新數據
3.校驗舊數據是否ok
4.不ok寫回舊數據到原區域,然後轉到2
5.校驗舊數據直到ok
就算一次ok也要磁盤轉3圈,非常麻煩,數據一大,磁道一多,增加的時間是相當可觀的
按我的設想,可以把第1 2 3步的過程做3個磁頭,放在同一個驅動臂上(暫且考慮一個盤面)
看,這個世界清淨了!!讀取數據的時候還可以一次讀2個磁道,速度X2美滋滋
考慮到驅動臂的運轉,磁頭沿弧線運動,不可能保證在所有磁道上都保證相鄰關係
這個時候就要放出黑科技了:把1和3只做一個磁頭,但是放在另一個驅動臂上,不停的讀取,在緩存中校驗
然而,smr的另一大問題:數據密度過高,磁區過小帶來的易失性問題,就只有自求多福了