লিনাক্স কার্নেল> 3.0 কে কীভাবে ব্যর্থ ডিস্কটিকে সম্পূর্ণ উপেক্ষা করবেন?


23

আমি বাসে এক সময় SATA হার্ড ডিস্ক সঙ্গে একটি স্যামসাং ল্যাপটপ (CHRONOS S7) থাকতে ata:1, যা হিসাবে সনাক্ত হয় /dev/sda, উপর একটি 8G এসএসডি ata:2, /dev/sdbSATA ইন্টারফেস বাকি অন্যান্য বিভিন্ন ডিভাইস, এবং।

সমস্যাটি হচ্ছে এসএসডি ডিস্কটি

  • মূল বোর্ডে সোনার্ড (অস্থাবর)
  • বেস্টেড (এটি কোনও ক্রিয়াকলাপের জন্য কেবল I / O ত্রুটি দেয়)
  • এটি বায়োজে উপস্থিত হয় না (সম্ভবত এটি ভেঙে গেছে)

এখন এই ডিস্ক:

  • ব্যর্থ হওয়া ডিস্কটি তদন্ত করার চেষ্টা করে বুটটি তিন থেকে পাঁচ মিনিট বিলম্ব করে, যা বিরক্তিকর;
  • তবে সবচেয়ে বিরক্তিকর বিষয় হ'ল /dev/sdbব্যর্থতার কারণে সিস্টেমটি স্থগিত করতে ব্যর্থ।

লক্ষ্য করুন যে আমি বুটে দেরি করেই বেঁচে থাকতে পারি --- যা আমাকে উদ্বেগ দেয় তা হ'ল জীবনবৃত্তান্ত / স্থগিতের জিনিস।


সুতরাং প্রশ্নটি হ'ল: আমি কী কার্নেলকে আটা: 2 এ ডিভাইসটি পরীক্ষা করতে এড়াতে বলতে পারি?

পুরানো কার্নেলে (<3.0), যখন আমি এখনও উত্সটিতে কিছুটা খনন করতে সক্ষম হয়েছি তখন শৈলীর একটি কমান্ড-লাইন প্যারামিটার ছিল hdb=ignoreযা কৌশলটি সম্পন্ন করে।

আমি নীচে প্রস্তাবিত সমস্ত কৌশল udevএবং libata:forceকার্নেল পরামিতিগুলি চেষ্টা করেছি, কোনও ফলস্বরূপ। বিশেষত, নিম্নলিখিতগুলি কাজ করে না:

  1. নিম্নলিখিত /etc/udev/rules.d/ফাইলগুলির মধ্যে একটিতে যুক্ত করা (তাড়াতাড়ি কার্যকরকরণের মতো 00-ignoredisk.rulesবা দেরীতে 99-ignoredisk.rulesবা উভয় জায়গায়)

    SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1" 
    

    না

    KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
    

    না অনেকগুলি মধ্যবর্তী সমাধান --- এটি বুট করার পরে ডিস্কটি অ্যাক্সেসযোগ্য করে তোলে না, তবে এটি বুটে অনুসন্ধান করা হয় এবং স্থগিতকরণের পরেও তা পরীক্ষা করা হয় - সাসপেন্ড ব্যর্থ হওয়ার কারণ ঘটায়।

  2. সিস্টেম ফাইলগুলি সম্পাদনা করা /lib/udev/rules.d/60-persistent-storage.rules(এবং udisks, udisks2) পরিবর্তন করা হচ্ছে

    KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
    

    থেকে

    KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
    

    আবার, এর কিছু প্রভাব রয়েছে, ইউজারস্পেস থেকে ডিস্কটি মাস্কিং করে, তবে ডিস্কটি এখনও কার্নেলের কাছে দৃশ্যমান।

  3. ডিএমএ নিষ্ক্রিয় করতে, কম গতিতে বা ব্যর্থ ডিস্ক সম্পর্কে যা কিছু কার্যকর হয় না - তার libata:forceজন্য সমস্ত প্যারামিটারগুলির সম্ভাব্য সংমিশ্রণগুলি (ভাল, তাদের অনেকগুলি) দিয়ে বুট করা ( কার্যকরভাবে এখানে পাওয়া যায় ) কাজ করে না। প্যারামিটারটি ব্যবহৃত হয়, তবে ডিস্কটি এখনও অনুসন্ধান করা হয় এবং ব্যর্থ হয়।

    Http://paste.ubuntu.com/6186145/ এ সম্পূর্ণ udevadm info -a -n /dev/sdbআটকানো হয়েছে

    smartctl -i /dev/sdb -T permissive দেয়:

    root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive
    smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build)
    Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
    
    Vendor:               /1:0:0:0
    Product:              
    User Capacity:        600,332,565,813,390,450 bytes [600 PB]
    Logical block size:   774843950 bytes
    >> Terminate command early due to bad response to IEC mode page
    

    যা স্পষ্টতই ভুল। তা সত্ত্বেও:

    root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb
    fdisk: unable to read /dev/sdb: Input/output error
    

(থেকে এসএসডি তথ্য http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 )।


দুঃখিত যদি এটি খুব সুস্পষ্ট হয় তবে আপনি যেহেতু আপনার প্রশ্নের মধ্যে অন্তর্ভুক্ত করেননি: আপনি কি নিশ্চিত করেছেন যে ডিভাইসটির নাম বা ইউআইডিটি তালিকাভুক্ত নয় /etc/fstab? কারণ বুটটি বিলম্বের কারণ আগে কার্নেল বা উদেব হতে পারে, যা মনে হয়, তবে পরে fsck দ্বারাও পড়ার সময় fstab
তেরেসা ই জুনিয়র

হ্যাঁ, সিস্টেম ফাইলগুলিতে / dev / sdb (বা এর পার্টিশনগুলি) এর কোনও উল্লেখ নেই। বিলম্ব এমনকি আগে Init শুরু হয় ... এটি একটি kthread হয় (কারণ বুট সমান্তরাল চলতে), কিন্তু এটি একটি মৌলিক পর্যায়ে আছে। তবে প্রকৃতপক্ষে বুটের বিলম্ব সমস্যাটি কম হ'ল - তবে যদি আমি স্থগিত / পুনঃসূচনা চলাকালীন ডিস্কটিকে উপেক্ষা করতে পারি যাতে স্থগিতের কাজগুলি আমি খুশি হতে পারি। (যাই হোক ধন্যবাদ).
রোমানো

আপনি initrd ব্যবহার করছেন? যদি তাই হয় কার?
hildred

@ হিলড্রেড: আমি উবুন্টু ১৩.০৪ থেকে স্টক কার্নেল এবং ইন্ট্রামফ ব্যবহার করছি। আমি সেখানে এএইচসিআই বা সমস্ত SATA অক্ষম করতে পারি, তবে তারপরে আমার সিস্টেমটি মারা গেছে --- কোনও ডিস্ক নেই।
রোমানো

দেবিয়ান (এবং উম্বুটু) মডিউল হিসাবে আটা সাবসিস্টেম সংকলন করে। আপনি মডিউলটি যখন আরআরডিটি লোড করার পরে পরামিতিগুলি সেট করার চেষ্টা করেছেন?
hildred

উত্তর:


26

libataমোটেও নোপ্রোব বিকল্প নেই; এটি লিগ্যাসি আইডিই বিকল্প ছিল ...

তবে আমি গিয়েছিলাম এবং আপনার জন্য একটি কার্নেল প্যাচ লিখেছিলাম যা এটি প্রয়োগ করে। এটি খুব সহজেই খুব সহজে কার্নেলগুলিতে প্রয়োগ করা উচিত (উপরে লাইনটি 2013-05-21 / v3.10-rc1 * যুক্ত করা হয়েছিল, তবে সেই লাইনটি ছাড়াই ম্যানুয়ালি প্রয়োগ করা যেতে পারে)।

আপডেট প্যাচটি এখন আপস্ট্রিম (কমপক্ষে 3.12.7 স্থিতিশীল কার্নেলের মধ্যে)। এটি উবুন্টু 14.04 (যা 3.13-স্থিতিশীল উপর ভিত্তি করে) দিয়ে বিতরণ করা স্ট্যান্ডার্ড কার্নেলের মধ্যে রয়েছে।

একবার প্যাচ ইনস্টল করা হয়, যোগ করুন

 libata.force=2.00:disable

কার্নেলের বুট পরামিতিগুলি লিনাক্স কার্নেল থেকে ডিস্কটি আড়াল করবে। নম্বরটি সঠিক কিনা তা ডাবল পরীক্ষা করে দেখুন; ডিভাইসের নাম অনুসন্ধান করা সাহায্য করতে পারে (স্পষ্টতই, আপনাকে বুট পরামিতি যুক্ত করার আগে কার্নেল বার্তাগুলি পরীক্ষা করতে হবে ):

(0)samsung-romano:~% dmesg | grep iSSD
[    1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[    1.494236] scsi 1:0:0:0: Direct-Access     ATA      SanDisk iSSD P4  SSD  PQ: 0 ANSI: 5

ata2.00উপরের প্রথম লাইনে গুরুত্বপূর্ণ সংখ্যাটি হ'ল ।


অনেক ধন্যবাদ. আমি আমার উবুন্টুতে কার্নেলটি কীভাবে সংকলন করতে এবং ইনস্টল করতে পারি তা মনে করার সাথে সাথে এটি পরীক্ষা করার চেষ্টা করব। দুর্ভাগ্যক্রমে, আমার খুব জটিল সপ্তাহ এগিয়ে থাকবে ...
রুমানো

1
+1 আমি পোস্ট করা ট্রিকের চেয়ে এটি স্পষ্টতই ভাল। আমি আশা করি এটি সরকারী হয়ে উঠবে
ইমানুয়েল

1
ঠিক আছে, প্যাচ পরীক্ষিত। এটা কাজ করে। আপনার যদি এটিকে প্রবাহিত করার দরকার হয় তবে আমি আমার পরীক্ষিত বাইকে যুক্ত করতে পারি: প্যাচটিতে --- আপনার আমার প্রোফাইলটিতে আমার সত্য ইমেল রয়েছে। আমি উইকি.উবুন্টু / কার্নেল / বিল্ডইউরআউনক্নার্নেলের নির্দেশাবলী অনুসরণ করে ( কুইর্কের সাথে) এটি ইনস্টল করেছি ।
রোমানো

1
@ আলোকিত --- ঠিক সেই অর্থে উত্তরটি সম্পাদনা করেছেন --- এটি অনুমোদিত হওয়ার জন্য অপেক্ষা করুন।
রোমান

1
জেন্টু প্রেমের আর একটি কারণ !!
eyoung100

15

হার্ডওয়্যার সমস্যার শারীরিক হার্ডওয়্যার সমাধান রয়েছে। আপনি কি বিক্রয়বিহীন বা ড্রাইভের পাওয়ার সাপ্লাই কেটে নিয়েছেন?

সম্পাদনা করুন: ঠিক আছে যদি কোনও হার্ড ড্রাইভকে হট-প্লাগ করার আগে লোকেরা এটি ব্যবহার না করে। আপনি এটি আপনার ড্রাইভ অক্ষম করতে ব্যবহার করতে পারেন।

echo 1 > /sys/block/sdb/device/delete

নোট করুন যে অন্য যে কোনও প্রক্রিয়া Sata বাসের স্ক্যান করতে বাধ্য করতে পারে এবং তারপরে এটিকে ফিরিয়ে আনবে। ল্যাপটপ হাইবারনেট করার ঠিক আগে তা করার চেষ্টা করুন।

ওপি সম্পাদনা: এটি কাজ করে । আমি নিম্নলিখিত ফাইলটি যুক্ত করেছি:

-rwxr-xr-x 1 root root 204 Dec  6 16:03 99_delete_sdb

সামগ্রী সহ:

#!/bin/sh

# Tell grub that resume was successful

case "$1" in
    suspend|hibernate)
        if [ -d /sys/block/sdb ]; then
            echo Deleting device sdb 
            echo 1 > /sys/block/sdb/device/delete       
        fi
        ;;
esac

... এবং এখন সিস্টেমটি সঠিকভাবে স্থগিত করেছে (এবং পুনরায় শুরু করুন)।


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

@ রুমানো কীভাবে "মুছুন" কৌশলটি সম্পাদন করে?
এমমানুয়েল

আইটি ওয়ার্কস --- আমি "মুছুন" কৌশলটি স্থগিত করতে পারি। অনেক ধন্যবাদ. (এটি এখনও বুটটি বিলম্ব করে, তবে ভাল --- কোনও সমস্যা নয়)।
রুমানো

মনে করিয়ে দেওয়ার জন্য অনেক ধন্যবাদ delete
মাইকেল শিগোরিন

3

BIOS- র

এই ডিভাইসটি কি আপনার BIOS এর মাধ্যমে কোনও ধরণের দেখায় না?

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

কার্নেল বুট বিকল্পগুলি

প্রায়শই আপনি বুটিং লিনাক্স কার্নেল দ্বারা স্বয়ংক্রিয়ভাবে সনাক্ত হওয়া থেকে বিভিন্ন বুট বিকল্প ব্যবহার করে যা এটি সুইচ হিসাবে প্রেরণ করা যায় তা থেকে বিভিন্ন সাবসিস্টেমগুলি অক্ষম করতে পারে।

বিকল্পগুলির সবগুলি এখানে তালিকাভুক্ত না থাকলে বেশিরভাগ:

সংক্ষিপ্ত বইয়ের লিনাক্স

আপনি ও'রেলি বই, মাধ্যমে সর পড়া করতে চাইতে পারেন সংক্ষেপে লিনাক্স কার্নেল , বিশেষভাবে, কাস্টমাইজ একটি কার্নেল: অধ্যায় 7

এই বইটি তার লেখক গ্রেগ ক্রোয়া-হার্টম্যান তার ব্যক্তিগত ওয়েবসাইটে বিনামূল্যে সরবরাহ করেছেন। পুরো বইটিও ডাউনলোড করা যায়।


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

অন্যান্য পদ্ধতি আমি অতীতে ব্যবহার করেছি যখন কার্নেল GRUB (কার্নেল বুট অপশন) এর মাধ্যমে এটি বলতে বুট হয় noide=....। হার্ডওয়্যার স্বয়ংক্রিয় সনাক্তকরণ অক্ষম করতে আপনি বুটিং কার্নেলকে সরবরাহ করতে পারেন এমন অন্যান্য বিকল্পের হোস্ট রয়েছে।
slm

ডিস্কটি হ'ল Sata (scsi), কোনও আইডিই নয়। এবং hdb=noprobeবিকল্পগুলি মাস্টারটি স্কিআইয়ে পাস করেনি (আমি মনে করি এটি প্রায় 2.6.x এর কাছাকাছি মুছে ফেলা হয়েছিল), সুতরাং এটি sdb=noprobeবা ata:2=noprobeবিকল্প হিসাবে এটি উপস্থিত নেই (যত তাড়াতাড়ি আমি জানি) । আমি kernel-parameters.txtকার্নেল উত্সের সমস্ত ফাইল (প্রায়) পড়েছি এবং আমি সঠিক পরামিতিটি খুঁজে পাই না। আপনি যদি কাউকে জানেন তবে দয়া করে একটি উত্তরে বলুন --- আমি সত্যই কৃতজ্ঞ হব।
রোমানো

@ রুমানো - এটি খুঁজতে আমাকে আরও খনন করতে হবে, আমি এইচডিডি এবং বাস সনাক্তকরণ সম্পর্কিত কয়েকটি বিকল্প মনে করতে পারি, তবে আমার মাথার উপরের অংশটি নয়।
slm

@ রুমানো - বিকল্পটি সম্পর্কে কী:libata.dma=
slm

0

লকটি পরীক্ষা করার লিনাক্স উপায়: sudo hdparm -I /dev/sdX(এক্স = এ..জেড সহ; অবশ্যই আপনার ড্রাইভটি কোন ডিভাইসটি আপনার অবশ্যই জানা উচিত)। (বড়) আউটপুট শেষে, আপনি গত 10 লাইনে এ পড়তে সক্ষম হতে হবে: *not* locked

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