Linuxカーネルは、hdparmを介してスリープ状態のHDDを起動し続けます。

Linuxカーネルは、hdparmを介してスリープ状態のHDDを起動し続けます。

(私のシステムはDebian 11 Bullseye + GNOME 3.38.6です)

私はストレージ目的のためだけにSeagate 2TBを持っていますが、ノイズがひどいので、次のようにストレージにアクセスしない限り、スリープモードに切り替えます。

sudo hdparm -Y /dev/sda

上記の操作を行うと、ハードドライブがスリープモードになりますが、数分後に何かがハードドライブを目覚めさせる現象が発生しますが、何がわかりません。

ログを確認したところ、ハードドライブが再起動する前に、10分ごとに次のことが発生することがわかりました。

Jun 09 20:36:59 user0 kernel: ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
Jun 09 20:36:59 user0 kernel: ata2.00: ACPI cmd ef/10:06:00:00:00:00 (SET FEATURES) succeeded
Jun 09 20:36:59 user0 kernel: ata2.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
Jun 09 20:36:59 user0 kernel: ata2.00: ACPI cmd b1/c1:00:00:00:00:00 (DEVICE CONFIGURATION OVERLAY) filtered out
Jun 09 20:37:02 user0 kernel: ata2.00: ACPI cmd ef/10:06:00:00:00:00 (SET FEATURES) succeeded
Jun 09 20:37:02 user0 kernel: ata2.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
Jun 09 20:37:02 user0 kernel: ata2.00: ACPI cmd b1/c1:00:00:00:00:00 (DEVICE CONFIGURATION OVERLAY) filtered out
Jun 09 20:37:02 user0 kernel: ata2.00: configured for UDMA/133

この問題の原因は何であり、どのように回避できますか?

直す。上記のメッセージは、HDDがスリープ状態のときにのみ表示されます。それ以外の場合はログで繰り返されません。

答え1

以下は、この問題の原因を理解するのに役立ちますが、問題を解決するのには役立ちません。

でコンパイルされたカーネルが必要ですCONFIG_BLK_DEV_IO_TRACE=y(コマンドを使用してこれを確認できますが、カーネルが$ zcat /proc/config.gz |grep BLK_DEV_IO_TRACEでコンパイルされている場合にのみ可能ですCONFIG_IKCONFIG_PROC=y)。

今持っているので使用してくださいbtrace/blktrace(Debianパッケージはブロック追跡)をrootとして使用します。たとえば、次のようになります。

$ sudo btrace /dev/sdc

または均等に:sudo blktrace -d /dev/sdc -o - | blkparse -i -

これにより、次のような出力が得られますが、/dev/sdcにアクセスするときにのみ(sdaを直接使用して):

  8,32   4        1     0.000000000 35200  Q FWS [sync]
  8,32   4        2     0.000005329 35200  G FWS [sync]
  8,32   4        3     0.000024868   166  D  FN [kworker/4:1H]
  8,32   0        1     0.005341892 35201  D   R 36 [sdparm]
  8,32   0        2     0.005360604    12  C   R [0]
  8,32   0        3     0.005483027 35201  D   N 0 [sdparm]
  8,32   2        1     0.008090821 13354  D   R 32 [(null)]
  8,32   2        2     0.008109065    24  C   R [0]
  8,32   2        3     0.008274033 13354  D   R 64 [(null)]
  8,32   2        4     0.008290535    24  C   R [0]
  8,32   2        5     0.008435087 13354  D   R 64 [(null)]
  8,32   2        6     0.008451221    24  C   R [0]
  8,32   2        7     0.008649311 13354  D   R 8256 [(null)]
  8,32   2        8     0.008665588    24  C   R [65415]
  8,32   2        9     0.008839399 13354  D   R 8 [(null)]
  8,32   2       10     0.008856004    24  C   R [0]
  8,32   2       11     0.008905781 13354  D   R 512 [(null)]
  8,32   2       12     0.008913061    24  C   R [0]
  8,32   2       13     0.008957477 13354  D   R 512 [(null)]
  8,32   2       14     0.008963625    24  C   R [0]
  8,32   2       15     0.017343228 35206  Q  RA 35156656000 + 8 [udevd]
  8,32   2       16     0.017344264 35206  G  RA 35156656000 + 8 [udevd]
  8,32   2       17     0.017344513 35206  P   N [udevd]
  8,32   2       18     0.017344733 35206  U   N [udevd] 1
  8,32   2       19     0.017344993 35206  I  RA 35156656000 + 8 [udevd]
  8,32   2       20     0.017346335 35206  D  RA 35156656000 + 8 [udevd]
  8,32   2       21     0.017613109 35206  Q  RA 35156655864 + 8 [udevd]
  8,32   2       22     0.017613575 35206  G  RA 35156655864 + 8 [udevd]
  8,32   2       23     0.017613672 35206  P   N [udevd]
  8,32   2       24     0.017613775 35206  U   N [udevd] 1
  8,32   2       25     0.017613935 35206  I  RA 35156655864 + 8 [udevd]
  8,32   2       26     0.017614656 35206  D  RA 35156655864 + 8 [udevd]
  8,32   2       27     0.017728317 35206  Q  RA 35156656064 + 8 [udevd]
  8,32   2       28     0.017728616 35206  G  RA 35156656064 + 8 [udevd]
  8,32   2       29     0.017728680 35206  P   N [udevd]
  8,32   2       30     0.017728750 35206  U   N [udevd] 1

sync、sdparm、udevd、kernel kworker などの一部のプロセス名は、/dev/sdc を使用して表示できます。

関連情報