我希望長時間錘擊某些磁碟的 io,並在無法從區塊讀取時(或其他一些症狀讓我知道後端儲存存在問題)時意識到。有一些基準測試工具可以編寫幾秒鐘並顯示結果,但我想做長期測試。
到目前為止,我能想到的是透過 dd 寫入磁碟並從該檔案讀取到 /dev/zero 。我需要循環它,以便在完成初始運行後繼續讀取和寫入。至於深入了解磁碟健康狀況,我想如果 dd 無法讀取或寫入,它可能會終止?不然我可能不知道有沒有問題。
另一個想法是循環運行 bonnie++。很難判斷後台在做什麼以及它實際使用了多少內存而不是磁碟(似乎他們試圖通過告訴您寫入大量數據來解決這個問題;大於您的內存分配)。然後,它給你的輸出很難閱讀。但如果我使用 bash 循環不斷運行它,這應該足以編寫和閱讀。
想法?
答案1
怎麼樣fio
具有驗證和基於時間的工作負載的工作?我在想類似的事情
fio --name=2h --direct=1 --filename=/dev/sdz --verify=crc32c-intel --verify_fatal=1 --time_based=1 --runtime=2h --rw=write
這將繞過區塊快取對 /dev/sdz 進行隨機寫入(從而破壞 /dev/sdz 的內容)。 /dev/sdz 完全寫入後,其內容將被讀回並驗證。這個過程將持續兩個小時,每次完成時都會重複前面的步驟。這顯然是不完美的(例如,甚至不能保證第一次寫入會在兩個小時結束時完成等),但它給出了一些想法...
如果你正在做某種儲存 I/O 測試然後 fio 通常值得一看。