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」コマンド等を使用することをお勧めします。