মাউন্ট না থাকা অবস্থায়ও ডিস্কগুলি (ইউএসবি ঘেরে থাকা) জাগ্রত রাখতে থাকে


13

সেটআপ

আমার ইউএসবি এনক্লোজার (বাফেলো ড্রাইভস্টেশন কোয়াড) রয়েছে যাতে আমার নাস সার্ভারের সাথে সংযুক্ত চারটি ড্রাইভ রয়েছে (উবুন্টু সার্ভার 14.04)। ঘেরটি JBOD মোডে কনফিগার করা হয়েছে, তাই আমি লিনাক্সের সমস্ত ডিস্ক দেখতে পাব।

দুটি ডিস্ক (এসডিবি এবং এসডিসি) সফ্টওয়্যার রাইডের সাথে /dev/md0(raid1) কনফিগার করা হয়েছে । এবং জার্নালিং ছাড়াই ext4 ফাইল সিস্টেমের সাথে /dev/md0একক পার্টিশন ( /mnt/part1) হিসাবে মাউন্ট করা হয় ।

অন্যান্য দুটি ডিস্ক (এসডিডি এবং এসডিডি) এলভিএমের সাথে একটি ভলিউম গ্রুপ হিসাবে সেট আপ করা হয়েছে, সেখান থেকে আমি দুটি লজিক্যাল পার্টিশন মাউন্ট করেছি। এর মধ্যে একটি পুরো ভলিউম গ্রুপের ক্ষমতা ( /mnt/part2) এর 90% , এবং একটি যা 10% ( /mnt/part3)। উভয়ই জার্নাল না করেই ext4।

এপিএম ইস্যু

আমার সমস্যাগুলি ডিফল্ট এপিএম মোডগুলি দিয়ে শুরু হয়েছিল, কারণ আমি লক্ষ্য করেছি যে হার্ড ড্রাইভগুলি মাথাটি প্রতি কয়েক মিনিটের মধ্যে বেশ আক্রমণাত্মকভাবে পার্ক করে। বিষয়টি নিয়ে কিছুটা গবেষণা করার পরে, আমি ব্যবহার শেষ করেছি hdparm -B198 /dev/sd[bcde]। এটি কিছু স্তরের বিদ্যুৎ সাশ্রয়ের অনুমতি দেয় বলে মনে হয়, তবে সত্যিকারের কোনও পার্কিং না করেই।

কোন ঘুম?

আমি বর্তমান পরিস্থিতি নিয়ে একরকম খুশি, তবে এখনও কোনও পছন্দ নেই যদি ড্রাইভগুলি ঘুমাতে যায় the বিশেষত sdb এবং sdc ( /mnt/part1) যা 95% সময়ের জন্য সত্যই কোনও ক্রিয়াকলাপ পায় না। আমি যা যা চেষ্টা করেছি, সমস্যাটি মনে হচ্ছে ড্রাইভগুলি এক বা দুই মিনিটের বেশি ঘুমায় না।

সমস্ত পার্টিশন আনমাউন্ট করা, এবং জারি hdparm -y /dev/sd[bcde]করা ড্রাইভগুলি স্লিপ মোডে রাখবে, তবে কেবল কয়েক মিনিটের জন্য। এরপরে তারা সবাই একে একে জেগে উঠবে। আমি block_dump ( echo 1 > /proc/sys/vm/block_dump) সক্রিয় করে সমস্যাটি ডিবাগ করার চেষ্টা করেছি , তবে ডিস্কগুলিতে কোনও অ্যাক্সেস দেখতে পাচ্ছি না।

আমি এপিএম নিষ্ক্রিয় করার চেষ্টাও করেছি hdparm -B255 /dev/sd[bcde], এবং তাদের পরে ঘুমানোর আদেশ দিই , তবে একই জিনিস। তবুও কয়েক মিনিট পরে ড্রাইভগুলি জেগে ওঠে।

আমি mdadmডেমন মোডে চলছি না (কেবলমাত্র একবারে একবারে চেক একবারে নিয়েছি ), না ড্রাইভের অনুসন্ধানের মতো অন্য কোনও কিছু থাকা উচিত। সুতরাং পরবর্তী চেষ্টা করার জন্য কোন ধারণা? বাফেলো ইউএসবি ঘেরটি কি কেবল কৃপণ (এবং এটি নিজেরাই করে)?

আপডেট # 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। সাহায্যও করেনি। বিটিডব্লিউ, মেশিনটি লেনোভো এল 520 ল্যাপটপ। কেবলমাত্র যদি কেউ এটি প্রাসঙ্গিক বলে মনে করে।


2
আমার 0 .02: আপনার মেশিনে থাকা সমস্ত কিছু বন্ধ করার চেষ্টা করুন (অতিমাত্রায় ডিমনরা ডিভাইসগুলির তদন্ত করতে পারে around), নোয়াটিম মাউন্ট বিকল্পটি ব্যবহার করুন।
লাস্লোলো ভালকো

@ লাস্লোভালোকো, প্রক্রিয়াগুলি হ্রাস করতে সক্ষম হয়েছে upstart-{socket,file}-bridge, dhclient, getty and sshd- কোনও ভাগ্য নেই :(। এখানে অবশ্যই অনেকগুলি কার্নেল প্রক্রিয়া চলছে (বন্ধনীতে তালিকাভুক্ত)। কিছু কর্নেল পরামিতি দ্বারা আমি এগুলি কমাতে পারব কিনা তা এখনও খুঁজে পেলাম না ... এবং কোনটি ভাল প্রার্থী হবে
টনি

1
এটি বলার সহজ উপায় যে এটি কোনও ঘের বা আপনার OS হ'ল ড্রাইভগুলি স্পিন করে তারপরে ইউএসবি সংযোগ বিচ্ছিন্ন করে।
সার্কাস বিড়াল

@ কাসদফডসাক, দুর্ভাগ্যক্রমে এই মহিষ ড্রাইভটি কিছু অভিনব পাওয়ারডাউন বৈশিষ্ট্য নিয়ে আসে। যখন ইউএসবি কেবলটি প্লাগযুক্ত করা হয় তখন ঘেরটি অবিলম্বে নিজেকে নীচে নামিয়ে দেয়। এমনকি পাওয়ার স্যুইচটিতে কেবল "অফ" এবং "অটো" বিকল্প রয়েছে।
টনি

1
অন্ধকারে কেবল একটি শট: আপডেটডকনফের ছাঁটাই করা পথগুলি এবং বাঁধাইয়ের মাউন্টগুলি পরীক্ষা করুন, যাতে এই পাথগুলি স্পষ্টভাবে এড়ানো যায় ('সনাক্ত' পরিষেবা); যদিও এটি সহজেই অন্য কিছু অনুরূপ পরিষেবা হতে পারে।
মাইকেল 25

উত্তর:


2

কিছুটা ওভারকিল 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.