শুধু আমার 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);
}