ดิสก์ (ในกล่อง usb) ยังคงทำงานต่อไปแม้จะไม่ได้ติดตั้งก็ตาม


13

ติดตั้ง

ฉันมีตู้ USB (Buffalo DriveStation Quad) ที่มีสี่ไดรฟ์เชื่อมต่อกับเซิร์ฟเวอร์ nas ของฉัน (เซิร์ฟเวอร์ Ubuntu 14.04) กล่องหุ้มได้รับการกำหนดค่าให้เป็นโหมด JBOD ดังนั้นฉันจะเห็นดิสก์ทั้งหมดใน Linux

ดิสก์สองตัว (sdb และ sdc) ได้รับการกำหนดค่าด้วยซอฟต์แวร์การโจมตีเป็น/dev/md0(raid1) และ/dev/md0ติดตั้งเป็นพาร์ติชันเดียว ( /mnt/part1) พร้อมระบบไฟล์ ext4 โดยไม่ต้องทำการเจอร์นัล

อีกสองดิสก์ (sdd และ sde) ถูกตั้งค่าด้วย LVM เป็นกลุ่มวอลุ่มหนึ่งจากที่ฉันได้ติดตั้งสองโลจิคัลพาร์ติชัน หนึ่งในนั้นคือ 90% ของความจุกลุ่มวอลุ่มทั้งหมด ( /mnt/part2) และอีกอันหนึ่งคือ 10% ( /mnt/part3) ทั้งสองยังเป็น ext4 โดยไม่ต้องบันทึก

ประเด็น APM

ปัญหาของฉันเริ่มต้นด้วยโหมด APM เริ่มต้นเนื่องจากฉันสังเกตเห็นว่าฮาร์ดไดรฟ์หัวจอดค่อนข้างแรงทุกสองสามนาที hdparm -B198 /dev/sd[bcde]หลังจากการค้นคว้าหัวข้อสำหรับบิตฉันสิ้นสุดการใช้ ดูเหมือนว่าจะช่วยให้ประหยัดพลังงานได้ในระดับหนึ่ง แต่โดยไม่ต้องจอดรถหน้ารถจริงๆ

นอนหรือไม่

ฉันมีความสุขกับสถานการณ์ปัจจุบัน แต่ฉันก็ยังอยากให้ไดรฟ์เข้าสู่โหมดสลีปหากไม่มีกิจกรรม โดยเฉพาะ sdb และ sdc ( /mnt/part1) ที่ไม่ได้รับกิจกรรมใด ๆ เป็นเวลา 95% อะไรก็ตามที่ฉันได้ลองปัญหาดูเหมือนว่าจะเป็นไดรฟ์ไม่ได้นอนหลับนานกว่าหนึ่งหรือสองนาที

การถอนการต่อเชื่อมพาร์ติชันทั้งหมดและการออกhdparm -y /dev/sd[bcde]จะทำให้ไดรฟ์เข้าสู่โหมดสลีป แต่ใช้เวลาเพียงไม่กี่นาที หลังจากนั้นพวกเขาก็จะตื่นขึ้นทีละคน ฉันพยายามแก้ไขปัญหาโดยเปิดใช้งาน block_dump ( echo 1 > /proc/sys/vm/block_dump) แต่ไม่เห็นการเข้าถึงดิสก์

ฉันยังพยายามปิดการใช้งาน APM ด้วยhdparm -B255 /dev/sd[bcde]และสั่งให้พวกเขานอนหลับหลังจากนั้น แต่สิ่งเดียวกัน ยังคงไดรฟ์ตื่นขึ้นมาหลังจากสองสามนาที

ฉันไม่ได้mdadmทำงานในโหมด daemon (ตรวจสอบเพียงครั้งเดียววันละครั้ง) และไม่ควรมีสิ่งอื่นใดที่ตรวจสอบไดรฟ์ ดังนั้นแนวคิดใดที่ควรลองต่อไป ควาย USB USB ของ Buffalo เป็นเพียงเส็งเคร็ง (และมันทำด้วยตัวเอง)?

อัปเดต # 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 ของฉัน: พยายามหยุดทุกอย่างบนเครื่องของคุณ (overzealous daemons อาจมองไปรอบ ๆ เพื่อตรวจสอบอุปกรณ์) ใช้ตัวเลือก noatime mount
Laszlo Valko

@ LaszloValko จัดการเพื่อลดกระบวนการให้upstart-{socket,file}-bridge, dhclient, getty and sshd- ไม่มีโชค :( แน่นอนว่ามีหลายกระบวนการของเคอร์เนลที่กำลังทำงานอยู่ และอันไหนที่จะเป็นผู้สมัครที่ดี
โทนี

1
วิธีง่ายๆในการบอกว่ามันเป็นกล่องหุ้มหรือระบบปฏิบัติการของคุณคือการหมุนไดรฟ์จากนั้นปลดการเชื่อมต่อ USB
แมวละครสัตว์

@qasdfdsaq แต่น่าเสียดายที่ Buffalo Drivestation นี้มาพร้อมกับคุณสมบัติการเพิ่มพลังบางอย่าง กล่องหุ้มปิดตัวเองลงทันทีเมื่อมีการถอดสายเคเบิล USB แม้แต่สวิตช์ไฟมีเพียงตัวเลือก "ปิด" และ "อัตโนมัติ"
Toni

1
เพียงยิงในที่มืด: ตรวจสอบเส้นทางที่ถูกตัดแล้วของผูกไว้กับ updb.conf เพื่อให้เส้นทางเหล่านี้ถูกข้ามอย่างชัดเจน (บริการ 'ค้นหา'); มันอาจเป็นบริการที่คล้ายกันได้อย่างง่ายดาย
ไมเคิล

คำตอบ:


2

อาจเป็น overkill เล็กน้อย แต่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)
}

คิดรหัสอุปกรณ์ที่คุณต้องการตรวจสอบในกรณีนี้ฉันจะตรวจสอบ / 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 ~]# 

มอนิเตอร์โดยใช้หมายเลขหลัก + รอง (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.