কোনও USB বাহ্যিক হার্ড ড্রাইভকে ঘুম থেকে আটকাবেন


12

কেউ কি জানেন যে কোনও বাহ্যিক ইউএসবি ড্রাইভকে নিষ্ক্রিয়তার একটি সময় পরে না কাটতে বলার মতো দুর্দান্ত উপায় আছে কিনা? আমি ক্রোন ভিত্তিক সমাধানগুলি দেখেছি যা প্রতি মিনিটে একটি ফাইল লিখতে পারে তবে সুন্দর ইউনিক্সির সৌরভের গন্ধ এমন কিছুই নয়। ড্রাইভের ঘুম না হওয়ার জন্য অবশ্যই একটি এইচডিপারম, বা স্কিসি কমান্ড থাকতে হবে যা আমি জারি করতে পারি (ওপেনবিএসডি-তে এসডি ড্রাইভারের মাধ্যমে ইউএসবি ড্রাইভ অ্যাক্সেস করা হয়)। আমি আশঙ্কা করছি যে সম্ভবত এটি ঘেরের মধ্যে নিয়ামকের মধ্যে নির্মিত একটি বৈশিষ্ট্য , এবং এটি খুব সহজেই এটির ঘের থেকে ড্রাইভটি ছিঁড়ে ফেলা এবং সরাসরি এটি মেশিনে প্লপিং করা বাদ দিতে পারে, তবে আমি বুঝতে পেরেছিলাম, অফ সুযোগে।

আদর্শভাবে, আমি একটি ওপেনবিএসডি সমাধান খুঁজছি, তবে আমি জানি যে অন্যরাও ডাব্লু / একই সমস্যার বাইরে রয়েছেন তাই উত্তরের জন্য কোনও সমাধান বিবেচনা করা হবে।


1
আমি কেবল কৌতূহল বোধ করি আপনি কেন ড্রাইভটি কমিয়ে দিতে চান না।
tshpang

1
ঠিক আছে, এই মুহুর্তের জন্য, কারণ আমার কাছে সেই ড্রাইভটি অন্য একটি মেশিনে এনএফএসের মাধ্যমে মাউন্ট হয়েছে এবং ড্রাইভটি বন্ধ হওয়ার সময় আমি যদি মেশিন # 2 বুট করি তবে এটি সময়সীমা শেষ হয়ে যায় এবং এনএফএস পার্টিশনটি মাউন্ট হয় না।
গ্যাবে

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

উত্তর:


4

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


8

শুধু আমার 2 সেন্ট ...

এটি সত্যের চেয়েও বেশি সত্য যে ডিস্কগুলি কাটাতে তাদের পরিষেবা জীবন হ্রাস করে। বছরের অভিজ্ঞতা থেকে দেখা গেছে যে ডিস্ক মোটর শুরু এবং থামানো 24/7 স্পিনের চেয়ে অনেক বেশি ক্লান্তির কারণ হয়ে দাঁড়ায়। বড় শুরু / স্টপ গণনা সহ আমার সমস্ত ডিস্কগুলি সেক্টরগুলি পুনরায় স্থানান্তরিত করেছে এবং আমার সমস্ত ডিস্কগুলি যা 10 বছর 24/7 স্পিনগুলিকে নতুন হিসাবে ভাল (এটি বিশ্বাস করুন বা না) ভাল। সর্বোপরি, ডিস্কগুলি আইডিংয়ের জন্য না করে স্পিনিংয়ের জন্য তৈরি করা হয়, সুতরাং যদি আপনার অগ্রাধিকারটি বিদ্যুৎ ব্যবহারের চেয়ে কম ক্লান্তি হয় তবে আপনার ডিস্কগুলি 24/7 কাটানো নির্দ্বিধায় অনুভব করে।

আমার কাছে একটি বাহ্যিক 2 টিবি ডিস্ক রয়েছে যা 30 মিনিটের নিষ্ক্রিয়তার পরে স্পিন করে। ব্যাক আপ করার উদ্দেশ্যে এবং কমলা পিআইয়ের সাথে সংযুক্ত একটি ছোট এনএএস হিসাবে অভিনয় করার জন্য ডিস্কটি 24/7 এ চালিত করা হয়।

আমি নিম্নলিখিত উদেব নিয়মটি ব্যবহার করেছি

/etc/udev/rules.d

(ডিস্ক ফার্মওয়্যারের স্পিন ডাউন হওয়ায় এটি কখনও কাজ করেনি)

SUBSYSTEM=="usb", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1"

যদিও ডিস্ক সমর্থন করে

hdparm -B

আমি একটি ছোট ডিমন প্রক্রিয়া লিখেছিলাম যা বুট সময়ে চালানো যায়

/etc/rc.local

এটি কোনও লগ ফাইলে বর্তমানের তারিখ এবং সময়কে সিক্লাসে 10 বার লেখায় যাতে ডিস্কটি সর্বদা চালু থাকে। আপনার পছন্দ মত পরিবর্তন করুন নির্দ্বিধায়।

কমান্ড লাইনের বিকল্পগুলি হ'ল: জাগ্রত.লগ লিখতে লক্ষ্য ডিরেক্টরি এবং (বিকল্পভাবে) সময় বিলম্ব (ডিফল্ট 300)

যেমন

/usr/sbin/disk_awake /mnt/some_disk/keep_alive 30

কোড: (আপনি জিসিসি দিয়ে সংকলন করতে পারেন)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <time.h>

int main(int argc, char* argv[])
{
FILE *fp=NULL;
pid_t process_id=0;
pid_t sid=0;
int secs=300;
char log_file[512];
time_t raw_time;
struct tm *time_info;
int ticks=0;
unsigned long step=1;

if (argc<2||argc>3)
{
 printf("Usage: %s target_directory [seconds]\n",argv[0]);
 exit(1);
}
if (strlen(argv[1])>500)
{
 printf("String length of target_directory is HUGE!\n");
 exit(1);
}
if (chdir(argv[1])<0)
{
 printf("Directory %s does not exist\n",argv[1]);
 exit(1);
}
strcpy(log_file,argv[1]);
strcat(log_file,"/awake.log");
if (!(fp=fopen(log_file,"w+")))
{
 printf("Could not open log file %s\n",log_file);
 exit(1);
}
if (!(argv[2]))
{
 printf("Delay argument not specified. Defaulting to 300 seconds\n");
 secs=300;
}
if (argv[2]&&(secs=atoi(argv[2]))<=0)
{
 printf("Could not parse delay option. Defaulting to 300 seconds\n");
 secs=300;
}
printf("Delay interval %d seconds\n",secs);
process_id=fork();
if (process_id<0)
{
printf("Could not fork()\n");
exit(1);
}
if (process_id>0)
{
printf("Started with pid %d\n", process_id);
exit(0);
}
umask(0);
sid=setsid();
if(sid<0)
{
printf("Could not setsid()\n");
exit(1);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while (1)
{
if (ticks==10)
{
 fclose(fp);
 if (!(fp=fopen(log_file,"w+"))) exit(1);
 ticks=0;step++;
}
time(&raw_time);
time_info=localtime(&raw_time);
fprintf(fp,"%s %lu : %s","Step",step,asctime(time_info));
fflush(fp);
ticks++;
sleep(secs);
}
fclose(fp);
return(0);
}

6
কেন একটি বিশেষ (সি) প্রোগ্রামের প্রয়োজন? কেন কেবল ক্রোন কাজ নয় ... `* / 15 * * * তারিখ> / এমএনটি / ডিস্ক /। তারিখ`
স্টিফেন ব্লট

আমি একটি লেনোভো T470p চালাচ্ছি, একটি অরিকো ইউএসবি হাউজিং সহ বাহ্যিক ইউএসবি ড্রাইভ। আমি ইউএসবি থেকে বুট করছি, স্ট্যান্ডবাই শুরু হওয়ার সাথে সাথেই ডিভাইসটি কেবল ওয়েকআপে পড়তে পারা যায়। Udev.d কনফিগারেশনটি আমার জন্য সমস্যাটি স্থির করেছে।
thst

6

এই সমাধানটি (লিনাক্সের জন্য) http://www.arrfab.net/blog/?p=107 এর 1TB সীগেট পোর্টেবল ড্রাইভের জন্য সাহায্য করেছে যা ঘুমিয়েই চলেছে:

# sdparm --clear=STANDBY /dev/sdc -S

এক ঘণ্টার জন্য নিষ্কলনের পরেও ড্রাইভটি এখনই তাত্ক্ষণিকভাবে প্রতিক্রিয়াশীল। যদিও সেটিংসটি পুনরায় আর্টস ইত্যাদিতে সংরক্ষণ করা হয়েছে কিনা তা এখনও পরীক্ষা করেনি।


সুডো ছাড়া এটি করার কোনও পরামর্শ?
অ্যাকোরিয়াস পাওয়ার

আমি বিশ্বাস করি লিঙ্কটি এতে পরিবর্তিত হয়েছে: arrfab.net/posts/2009/ জন
30

4

আমি খুঁজে পেয়েছি যে নিম্নলিখিত ক্রোনজব আমার জন্য কাজ করে।

* / 5 * * * * / বিন / টাচ / দেব / এসডিবি &> / দেব / নাল

অবশ্যই এটি আপনার ডিস্কের ডিভাইসের নামের সাথে আপডেট করুন।

আপনার ড্রাইভটি ক্ষমতা বন্ধ হওয়ার আগে আপনি কতক্ষণ নিষ্ক্রিয় থাকেন তার উপর ভিত্তি করে আপনি সময়ও পরিবর্তন করতে পারেন।


2

লিনাক্সের জন্য ম্যানুয়ালhdparm নিম্নলিখিত তথ্য প্রদান করে:

-B  Query/set Advanced Power Management feature,
    if the drive supports it.
    A low value means aggressive  power  management
    and a high value means better performance.

    Possible settings range
    from values 1 through  127  (which  permit spin-down),
    and values 128 through 254 (which do not permit spin-down).

    The highest degree of  power  management
    is attained with a setting of 1,
    and the highest I/O performance with a setting of 254.

    A  value  of  255  tells hdparm to
    disable Advanced Power Management altogether on the drive
    (not all drives support disabling it, but  most do).

বলা হচ্ছে, এটি এখনও গ্যারান্টিযুক্ত নয় যে আপনার ড্রাইভের ঘেরটি এই নির্দেশাবলিগুলিকে ড্রাইভে রিলে করতে সহায়তা করবে। একই রেফারেন্সে উল্লেখ করা হয়েছে যে এইচডিপিআরএমকে কোনও ঘেরের সাথে ব্যবহার করতে সক্ষম হওয়া কেবলমাত্র "নতুন (২০০৮ এবং পরবর্তী)" মডেলগুলির দ্বারা সম্ভব যা এসসিএসআই-এটিএ কমান্ড অনুবাদ সিস্টেম, ওরফে "স্যাট" সমর্থন করে। আমি এখনও একটি সাম্প্রতিক সস্তা ব্যাকআপ ড্রাইভ, এইচপি সিম্পলসেভ মডেল ব্যতিরেকে অন্য কিছু করার চেষ্টা করেছি। মনে হচ্ছে এটি কিছু সীমাবদ্ধ শক্তি পরিচালনার কার্যকারিতা সরবরাহ করে।

এবং অবশ্যই এটিও ধরে নিয়েছে যে ওপেনবিএসডি hdparmএকইভাবে কাজ করে। আমি ওপেনবিএসডি-র পদ্ধতিতে মোটেই জ্ঞানবান নই, সুতরাং আমি আপনাকে সেখানে সহায়তা করতে পারি না।


1
এইচডিপর্মের ওপেনবিএসডি সমতুল্য atactl। তবে ইউএসবি ডিভাইসে এটি কাজ করে কিনা আমি জানি না; (আইডিই ডিস্ক ড্রাইভার ম্যান পৃষ্ঠা) atactl(8)দ্বারা রেফারেন্স করা হয়েছে wd(4)তবে umass(4)(ইউএসবি স্টোরেজ ড্রাইভার ম্যান পৃষ্ঠা) দ্বারা নয়।
গিলস 21'200

আমি এটি নিয়ে খেলতে যাচ্ছি, যেহেতু ইউএসবি ড্রাইভগুলি / ডিভ / এসডি * ডিভাইসগুলি ব্যবহার করে মাউন্ট করছে, আমি নিশ্চিত নই যে ডাব্লুডি এবং অ্যাট্যাকল প্রয়োগ হবে। কিছু পঠন / প্লে করার সময়।
গ্যাবে

আপনার কি মনে hdparmহয় ঘুম না আটকাতে sudo ছাড়া কোনওভাবে কোনও লুপে ব্যবহার করা যেতে পারে?
অ্যাকোরিয়াস পাওয়ার

আপনি কি এর জন্য hdparamডিফল্ট মান জানেন -B [apm_setting]?
জাইজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.