ブログ

Linux: ディスクキャッシュをストレージへ書き出す方法

at_ito
2017年2月6日 4時43分

Armadillo上で、eMMCやSDカード等のストレージにデータを書きこんだ場合、すぐにデータが書きこまれるわけではなく、メモリ上のディスクキャッシュに保存されていることがあります。

その状態で電源が切断されると、RAM上に保存されているディスクキャッシュが、ストレージに書き出される前の状態であるため、ストレージの書き出したはずのデータが消える等の問題が発生します。

そのため、ここでは明示的にディスクキャッシュをストレージに書き出す方法を紹介します。

ストレージへデータを書き出す

ディスクキャッシュをストレージに書き出すには、「sync」コマンドを使用します。

以下のようにsyncコマンドを実行してください。

[armadillo ~]# sync

上記コマンドを実行することで、ディスクキャッシュにデータが書きこまれます。 実運用環境化等で、なるべく電源断のリスクを回避したい場合は、データをストレージに書き出した後は「sync」コマンドを実行することをお勧めします。

参考: ディスクキャッシュの確認方法

ディスクキャッシュは以下のコマンドで確認できます。

[armadillo ~]# cat /proc/meminfo | grep Dirty

またディスクキャッシュをストレージに書き出している途中のデータ量は以下のコマンドで確認できます。

[armadillo ~]# cat /proc/meminfo | grep Writeback

注意事項

「sync」コマンドは、ディスクキャッシュをストレージに書き出しますが、実際のデータ書き出し完了前にコマンドが終了します。そのため、「sync」コマンドが終了した段階で電源断をした場合、書き出されていないデータが発生することがあります。

もし電源断時にディスクキャッシュをストレージに書き出したい場合は、「umount」コマンド等を使用することをお勧めします。