現在PenIII 866MHzなequium 5000を常時起動してNASとして利用している。 メモリも192MB積んで、スループットも80Mbps出てくれる。 USB2.0のCardBusインターフェースカードをさしてio-dataのHDC-UのHDDを2つつないでいる。
このHDC-UのHDDは静かで快適だが、ずっと回し続けるのは寿命も短くするので控えたい。 そこで定時的に停止コマンドを打ちたいのだが、sdparmでUSBHDDのSCT値をさわれないので、強制的に--comand=stopしなければならない。しばらくの間cronで定期的に止めていたが、アクセス時に停止コマンドを食らうとカチンと怖い音がするので、繰り返しやるのはしたくない。
どうにかならないかと考えていたら、いいアイディアが思いついた。autofsを使う方法である。
autofsは定期的にアクセスがないと自動的にアンマウントしてくれるので、マウントされているかどうかを確認して、停止コマンドを打てばいい。さらにfuserというコマンドで誰がリソースを使っているか調べることもできるので、こちらとも組み合わせると完璧だ。ということでつたないrubyでcronに回すスクリプトを書いてみた。
equium:~# cat stopusbhdd.rb #!/usr/bin/ruby sdaismounted = !(`df|grep sda1` == "" || `fuser -muv /misc/usb0` == "") sdbismounted = !(`df|grep sdb1` == "" || `fuser -muv /misc/usb1` == "") p "sda" p `sdparm --command=stop /dev/sda` if !sdaismounted p "sdb" p `sdparm --command=stop /dev/sdb` if !sdbismounted
まだ運用してそんなに時間がたっていないが、そこそこうまく動いてくれているようだ。


コメントする