마운트되지 않은 경우에도 디스크 (USB 인클로저)가 계속 깨어납니다.


13

설정

내 nas 서버 (ubuntu 서버 14.04)에 4 개의 드라이브가 연결된 USB 인클로저 (Buffalo DriveStation Quad)가 있습니다. 인클로저는 JBOD 모드로 구성되었으므로 Linux에서 모든 디스크를 볼 수 있습니다.

두 개의 디스크 (sdb 및 sdc)는 소프트웨어 raid를 /dev/md0(raid1) 로 구성합니다 . 그리고 /dev/md0하나의 파티션 (로 장착 /mnt/part1저널링없이 ext4에 파일 시스템 포함).

다른 두 개의 디스크 (sdd 및 sde)는 LVM을 하나의 볼륨 그룹으로 설정하여 두 개의 논리 파티션을 마운트했습니다. 그중 하나는 전체 볼륨 그룹 용량의 90 % ( /mnt/part2)이고 다른 하나는 10 % ( /mnt/part3)입니다. 둘 다 저널링없이 ext4입니다.

APM 문제

하드 드라이브 헤드가 2 분마다 매우 공격적으로 주차되는 것을 알았으므로 문제는 기본 APM 모드에서 시작되었습니다. 약간의 주제를 연구 한 후에 나는을 사용했습니다 hdparm -B198 /dev/sd[bcde]. 이것은 어느 정도의 전력 절약을 허용하는 것처럼 보이지만 실제로 헤드 파킹을하지 않습니다.

자?

나는 현재 상황에 만족하지만 활동이 없으면 드라이브가 잠자기 상태가되기를 바랍니다. 특히 sdb와 sdc ( /mnt/part1)는 95 %의 시간 동안 아무런 활동도하지 않습니다. 내가 시도한 것이 무엇이든, 문제는 드라이브가 1-2 분 이상 잠들지 않는 것 같습니다.

모든 파티션을 마운트 해제하고 발행 hdparm -y /dev/sd[bcde]하면 몇 분 동안 만 드라이브가 휴면 모드가됩니다. 그 후 그들은 모두 하나씩 깨어납니다. block_dump ( echo 1 > /proc/sys/vm/block_dump) 를 활성화하여 문제를 디버깅하려고 시도했지만 디스크에 액세스 할 수 없습니다.

또한로 APM을 비활성화 hdparm -B255 /dev/sd[bcde]하고 그 후에 잠자도록 명령했지만 동일한 기능을 수행했습니다. 여전히 몇 분 후에 드라이브가 깨어납니다.

나는이없는 mdadm데몬 모드 (하루에 한 번 단지 하나의 체크)에서 실행하거나 드라이브를 프로빙 뭔가가 있어야한다. 다음에 무엇을 시도 해야할지에 대한 아이디어가 있습니까? 버팔로 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. 도움이되지 않았습니다. Btw, 기계는 Lenovo L520 노트북입니다. 누군가가 관련성을 발견 한 경우를 대비하여.


2
내 $ .02 : 시스템의 모든 것을 중지하려고 시도하십시오 (과도한 데몬이 장치를 탐색 할 수 있습니다), noatime 마운트 옵션을 사용하십시오.
Laszlo Valko 2016 년

@LaszloValko는 프로세스를 줄였습니다 upstart-{socket,file}-bridge, dhclient, getty and sshd. 운이 나지 않습니다. 어느 후보가 좋은 후보
Toni

1
인클로저인지 OS인지 알 수있는 간단한 방법은 드라이브를 스핀 다운 한 다음 USB를 분리하는 것입니다.
서커스 고양이

@qasdfdsaq, 불행히도이 버팔로 드라이브 스테이션에는 멋진 전원 차단 기능이 있습니다. USB 케이블을 뽑으면 인클로저가 즉시 종료됩니다. 전원 스위치조차 "off"및 "auto"옵션 만 있습니다.
Toni

1
어두운 곳에서 한 번만 : updatedb.conf의 정리 된 경로 및 바인드 마운트를 확인하여 이러한 경로를 명시 적으로 건너 뜁니다 ( '위치'서비스). 그래도 다른 유사한 서비스가 될 수 있습니다.
michael

답변:


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.