« June 2014 | Main | January 2015 »

October 30, 2014

freeコマンドの出力結果について考える

Linuxの空きメモリ状況はfreeコマンドで確認できるのは有名ですが、出力結果がどのように構成されているのか正確に知らない部分があったので、今回改めて整理してみました。

【freeの出力結果を見てみる】
freeコマンドを実行すると下記のように表示されます。単位はKB(Kilo byte)です。

$ free
             total       used       free     shared    buffers     cached
Mem:       1018596     556204     462392        144      28188     403360
-/+ buffers/cache:     124656     893940
Swap:            0          0          0


【キャッシュ使用量込みの出力結果を見てみる】
まずはこの部分を見てみます。

             total       used       free
Mem: 1018596 556204 462392

これを見ると、トータルメモリは1,018,596KByte(約1GB)、使用量は556,204KByte(約556MB)、そして空きは462,392KByte(約462MB)です。
556,204+462,392=1,018,596なので計算が合いますね。

ちなみにここでusedに含まれる使用量にはキャッシュ使用分も含まれるので実際のデータはもっと小さいです。

【キャッシュ使用量抜きの出力結果を見てみる】
それではキャッシュ使用分を抜いたときはどうなるでしょうか?

             total       used       free
-/+ buffers/cache: 124656 893940

これを見ると、使用量は124,656KByte(約125MB)、そして空きは893,940KByte(約894MB)です。124,656+893,940=1,018,596となり、トータルメモリの数字(約1GB)と合います。
どうやらOSにはキャッシュとして、556,204-124,656=431,548KByte(約43MB)のメモリが使われていたようですね。


【キャッシュ使用量の出力結果を見てみる】
最後にそのキャッシュの使われ方を見てみます。

           shared    buffers     cached
Mem: 144 28188 403360

sharedは共有メモリに割り当てられたメモリのことを指しますが、これは昔の名残なようで現在は無視して良いようです。
buffersはバッファキャッシュに割り当てられたメモリで、ブロックデバイス用のキャッシュを指します。
cachedはページキャッシュに割り当てたメモリを指します。

sharedは無視して良いようなので、28,188+403,360を足すと431,548となり、先ほど計算した数字(約43MB)と合いますね。

【最後に】
・バッファキャッシュとページキャッシュの違いが紛らわしいですが、最近のKernelではページキャッシュに多くが統合されていると聞きます。(詳細はそのうち調べてみようと思います)


・一時的にキャッシュを解放したい場合は下記の通りです。100%完全に解放されるわけではありませんが。

$ echo 3 > /proc/sys/vm/drop_caches

| | Comments (0) | TrackBack (0)

October 16, 2014

家庭用外付けストレージケースを選んだときの話

今回は家庭用外付けストレージケースを選定して悩んだときの話を記してみます。

個人利用の場合は業務利用と違って全て自腹なので、価格的にかなり妥協しないと厳しいです。価格を落とす分ある程度妥協しなければなりませんが、何を妥協するかは大きな選択です。重要なデータを保存するわけなので絶対にデータ消失が発生しないという条件と共に、家庭用途とのことで価格や本体の大きさなんかも気になるところです。


【個人要件】
絶対的な要件としては、現実的な値段の製品のうち、狭い空間にきちんと収まりつつ、絶対にデータが消失しない製品/環境であるということです。それを前提として各ベンダーの製品仕様を元に具体的に要件に落とし込んだのが下記の通りです。

・絶対条件
値段(5万円以下。できれば3万円以下)、大きさ(w150 x h300 x d250以下)、静音、搭載本数(3.5inch 4本以上搭載可能)

・迷った条件
RAID機能、NAS機能、eSATA機能、HDDの出し入れがしやすい、フロント電源

・重視しない条件
速度

【故障時の挙動について考える】
データ消失が発生しないということを考える上で、故障時にどのような挙動が想定されるかを考えるのは重要なことです。そこで家庭用外付けストレージケースで起こりうる故障とその挙動について考えてみました。

(1) HDDが故障した場合
RAID機能がある製品の場合、HDDが物理的に故障したとしても残りのHDDでデータが保全されるはずです。しかし何らかの理由でデータ不整合が起きて論理障害が発生した場合データを取り出す手段があるのか気になります。個人的な経験としても例えばRAID5のボリュームが原因不明で突然見えなくなるという障害を経験したことがありますが、こういった障害の場合、データ復旧がかなり困難になります。

(2) 本体が故障した場合
本体が故障した場合、別の本体を持ってきてHDDだけ入れ替えると保存していたデータがそのまま見えてくるような製品であれば問題ないですが、多くの家庭用製品の場合データが見えてこない気がします。エンタープライズストレージの場合はRAID構成情報が各HDDに書かれる製品が多いですが、この場合がHDDを別の本体に入れ替えてRAID構成をHDDから読み込むとそれまでのRAID構成が引き継がれます。それに対して安いストレージ製品の場合はRAID構成情報がストレージ本体もしくはRAIDコントローラーにしか書き込まれないので、本体が故障した場合HDDだけ入れ替えても当然RAIDボリュームが見えてきません。

(3) 電源寸断時の挙動
HDD書き込み中にコンセントが抜けてしまったり停電が起きたりしたときにデータ破壊されることがないかどうか。製品によって挙動は異なると思いますが、おそらくデータが一部破壊された状態になるのではないかと思います。

【ハードウェアRAID vs ソフトウェアRAID】
ハードウェアRAIDではRAID関連の処理を専用チップで行うことで高速にRAID関連処理を行うことができることに加え、高価なものだとキャッシュとバッテリーを搭載し、更なる高速処理と電源寸断時のデータ破壊を防ぐ機能を搭載しています。

それに対してソフトウェアRAIDではRAID関連の処理をCPUで行います。特に家庭用ストレージはLinuxなどのオープンソースOSをカスタマイズして使っているものが多く、RAID関連処理はLinuxにある機能をそのまま使っているものも多そうです。

ハードウェアRAIDはエンタープライズストレージに多く使われているのに対し、家庭用ストレージの場合はコストの関係からほぼ100%ソフトウェアRAIDだと思います。個人的には家庭用ストレージに高速性まで求めませんが、電源寸断対策用バッテリーがないのは不安です。

【結論】
いろいろ悩んだ結果、「NETGEAR社 ReadyNAS 104」という製品を購入することにしました。コンパクトなサイズにHDDが4本搭載できるNAS/RAID機能付の家庭用外付けストレージなのでした。購入価格は約2万2千円です。


HDDはこのように構成しました。

HDD1: 2TB(RAID1)。メインデータを置く
HDD2: 2TB(RAID1)。同上
HDD3: 1TB(RAID0)。メインデータのバックアップを置く
HDD4: 1TB(RAID0)。同上

要はメインデータ用ボリュームは実容量2TB(RAID1)、バックアップ用ボリュームも実容量2TB(RAID0)となります。データ保全としてはRAID1ミラーリングとバックアップを併用する形です。この構成であればRAID1が問題なく機能すればHDDが1本故障してもデータは保全されますし、万が一RAID1ミラーリングボリュームが見えなくなったとしてもバックアップからデータを取り出せます。また本体が故障したらHDDを取り出してLinuxが動いているマシンに取りつけてmdadmコマンドを使って自力でデータを取り出すことになりそうです。

おそらくこのタイプのストレージでは4本でRAID5を組んで使われるパターンが多いのだと思いますが、その構成だと既記したようにRAIDボリュームが見えなくなったり本体が故障した場合に最悪データが取り出せなくなると思いRAID5は採用していません。RAID1であればLinuxのmdadmコマンドを活用してなんとか自力で復旧できる気がしますが、RAID5だとできなくはないかもですがとても時間がかかりそうな気がしたのでした。

データ消失リスクという点においてはソフトウェアRAIDを信用してないので本当は使いたくなかったのですが、予算の都合もありRAID1ボリュームとRAID0ボリュームに分けてバックアップを取りながら使うことにしました。データ保全を考える上で本来こういった構成を取る場合は外部バックアップが必須ですが、予算と設置スペースの関係で泣く泣く外部バックアップなしとなりました。

※補足
なぜソフトウェアRAIDを信用していないか。本質的なところとしてはハードウェアかソフトウェアかというところにはなく、HDDにRAID構成情報が書かれるかと、電源断時にも書き込み途中のデータが確実に書き出されるかというところにあります。

【おまけ】
「NETGEAR社 ReadyNAS 104」をいろいろいじっていて感じたこと/気づいたことを記します。

・2万円台の安いストレージなのに、LUN切り出し、iSCSI、シンプロビジョニング、スナップショットと、エンタープライズストレージ並の機能が搭載されていました。
・ある意味プロ仕様なので、エンタープライズストレージを扱ったことがない人だと最初どう設定したらよいのか悩むかと思います。
・標準でアンチウィルス機能が搭載されているようです。
・RAIDはNetGear社独自のX-RAIDの他、RAID0,1,5,6,10、JBODが扱えます。HDD4本のうち好きな組み合わせでRAIDが組めます。
・Linuxベースです。sshログインしていろいろ操作できるのは便利です。
・ソフトウェアRAIDです。mdadmコマンドの利用に慣れていたらいろいろできます。
・CPUが弱いです。ちょっと処理速度が遅いかなー。
・安いのにNICが2個搭載されています。
・2TB HDDでRAID1構成を組んだ後、rebuildに6時間以上かかりました。
・筐体は結構コンパクトです。

安いのにプロ仕様で大変気に入りました。IT業界に身を置いている人は勉強にもなるのでお勧めです。逆にIT業界に身を置かない人は国産メーカーのわかりやすいGUIを持った製品のほうが良いかもしれません。

| | Comments (0) | TrackBack (0)

« June 2014 | Main | January 2015 »