ディスク(USBエンクロージャー内)がマウントされていなくても起動し続ける


13

セットアップ

NASサーバー(ubuntuサーバー14.04)に接続された4つのドライブを含むUSBエンクロージャー(Buffalo DriveStation Quad)があります。エンクロージャーはJBODモードに構成されているため、Linuxのすべてのディスクが表示されます。

2つのディスク(sdbおよびsdc)は、/dev/md0(raid1)としてソフトウェアraidで構成されています。また、ジャーナリングなしでext4ファイルシステムを持つ/dev/md0単一パーティション(/mnt/part1)としてマウントされます。

他の2つのディスク(sddとsde)は、1つのボリュームグループとしてLVMでセットアップされ、そこから2つの論理パーティションをマウントしました。そのうちの1つはボリュームグループ全体の容量の90%(/mnt/part2)で、もう1つは10%(/mnt/part3)です。どちらもジャーナリングなしのext4です。

APMの問題

私の問題は、デフォルトのAPMモードで始まりました。数分ごとにハードドライブのヘッドが非常に激しく停止していることに気付きました。少しトピックを調査した後、私はを使用することになりましたhdparm -B198 /dev/sd[bcde]。これにより、ある程度の節電が可能になりますが、実際にはヘッドパーキングは行われません。

睡眠は?

私は現在の状況にある程度満足していますが、アクティビティがない場合はドライブがスリープ状態になるようにします。特に、sdbとsdc(/mnt/part1)は、実際に95%の時間アクティビティをまったく取得しません。私が試したものは何でも、問題はドライブが1、2分より長く眠らないことであるようです。

すべてのパーティションをアンマウントして発行hdparm -y /dev/sd[bcde]すると、ドライブがスリープモードになりますが、それはほんの数分間です。その後、全員が1つずつ目を覚まします。block_dump(echo 1 > /proc/sys/vm/block_dump)を有効にして問題をデバッグしようとしましたが、ディスクへのアクセスが表示されません。

またhdparm -B255 /dev/sd[bcde]、APMを無効にしてAPMを無効にし、その後スリープするように指示しましたが、同じことです。それでも、ドライブは数分後に起動します。

私は持っていないmdadmデーモンモード(一日一回だけで1つのチェック)で実行している、またドライブを捜査何かがあるはずです。それでは、次に何を試すべきかというアイデアはありますか?Buffalo USBエンクロージャーは安っぽいだけですか?

アップデート#1

発行後にディスクが起動するのにどれくらいの時間がかかりましたかhdparm -y /dev/sd[bc]。次のタイムスタンプはパターンを示しています。

00:00 hdparm -y /dev/sd[bc]
00:40 disks start to wake up
00:59 disks fully awake
01:00 hdparm -y /dev/sd[bc]
03:40 disks start to wake up
03:59 disks fully awake
04:00 hdparm -y /dev/sd[bc]
06:40 disks start to wake up
06:59 disks fully awake

つまり、何かが3分ごとにディスクをチェック/起動するようです。スタンバイモードに移行する最初のコマンドは、たまたまチェックポイントから40秒でした。

アップデート#2

でマシンを再起動しましたacpi=off apm=off。助けにもならなかった。ところで、マシンはLenovo L520ラップトップです。誰かがそのことを見つけた場合に備えて。


2
my $ .02:マシン上のすべてを停止してみてください(熱心なデーモンがデバイスをプローブするために探し回っている可能性があります)。noatimeマウントオプションを使用します。
ラスロヴァルコ

@LaszloValko、プロセスを減らすことができましたupstart-{socket,file}-bridge, dhclient, getty and sshd-運はありません:(そして、どれが良い候補になるでしょう
トニ

1
エンクロージャーかOSかを判断する簡単な方法は、ドライブをスピンダウンしてからUSBを切断することです。
サーカス猫

@qasdfdsaq、残念ながら、このBuffalo Drivestationには派手なパワーダウン機能が付いています。USBケーブルが抜かれると、エンクロージャはすぐにシャットダウンします。電源スイッチにも「オフ」と「自動」のオプションしかありません。
トニ

1
暗闇の中でのショット:updatedb.confのプルーニングされたパスとマウントのバインドを確認し、これらのパスが明示的にスキップされるようにします(「検索」サービス)。ただし、他の同様のサービスを簡単に使用できます。
マイケル

回答:


2

少しやり過ぎかもしれませんが、SystemTapどのプロセスがそのディスクでI / Oを行っているかを特定するのに役立ちます。

SystemTapを準備する

[root@localhost ~]# stap-prep
snip

トレーススクリプトをインストールする

[root@localhost ~]# cat >/tmp/traceio2.stp
#! /usr/bin/env stap
global device_of_interest

probe begin {
  /* The following is not the most efficient way to do this.
      One could directly put the result of usrdev2kerndev()
      into device_of_interest.  However, want to test out
      the other device functions */
  dev = usrdev2kerndev($1)
  device_of_interest = MKDEV(MAJOR(dev), MINOR(dev))
}

probe vfs.write, vfs.read
{
  if (dev == device_of_interest)
        printf ("%s(%d) %s 0x%x\n",
            execname(), pid(), ppfunc(), dev)
}

監視するデバイスIDを特定します。この場合、/ dev / sda5を監視します

[root@localhost ~]#  df -k /
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda5       18141508 16293424    903496  95% /
[root@localhost ~]# ls -l /dev/sda5
brw-rw----. 1 root disk 8, 5 Jul  1 01:21 /dev/sda5
[root@localhost ~]# 

16進数のメジャー+マイナー番号(8,5)を使用して監視します。犯人を見つける。喜ぶ

[root@localhost ~]# /tmp/traceio2.stp 0x805
accounts-daemon(434) vfs_read 0x800005
accounts-daemon(434) vfs_read 0x800005
accounts-daemon(434) vfs_read 0x800005
lightdm(503) vfs_write 0x800005
bash(3036) vfs_read 0x800005
bash(3036) vfs_read 0x800005
^C
[root@localhost ~]#
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.