जब मैं एक पेनड्राइव में फाइल कॉपी कर रहा हूं तो मेरा पीसी फ्रीज क्यों है?


61

मेरी यहां बहुत अजीब स्थिति है। मेरा पीसी ठीक काम करता है, कम से कम ज्यादातर मामलों में, लेकिन एक बात है जिससे मैं निपट नहीं सकता। जब मैं अपने पेनड्राइव से किसी फ़ाइल को कॉपी करने की कोशिश करता हूं, तो सब कुछ ठीक है - मुझे 16-19M / सेकंड मिला, यह बहुत अच्छा काम करता है। लेकिन जब मैं एक ही पेनड्राइव में कुछ कॉपी करने की कोशिश करता हूं, तो मेरा पीसी जम जाता है। माउस पॉइंटर एक या दो के लिए बढ़ना बंद कर देता है, फिर वह थोड़ा सा आगे बढ़ता है और फिर रुक जाता है। जब कोई चीज खेल रही होती है, उदाहरण के लिए, अमारोक में, ध्वनि मशीन गन की तरह काम करती है। गति 500K / s से 15M / s, औसत 8M / s से कूदता है। यह तभी होता है जब मैं किसी पेनड्राइव में कुछ कॉपी कर रहा होता हूं। जब नकल की प्रक्रिया होती है, तो सब कुछ सामान्य हो जाता है।

मैंने सब कुछ करने की कोशिश की - अन्य पेनड्राइव, फ्रंट पैनल पर एक अलग यूएसबी पोर्ट या पीछे से उन पोर्ट, मैंने मदरबोर्ड (फ्रंट पैनल) पर भी यूएसबी पिन को बदल दिया, लेकिन कोई फर्क नहीं पड़ता कि मैंने अपना यूएसबी स्टिक कहां रखा है, यह हमेशा एक ही है। मैं अलग फाइल सिस्टम की कोशिश की - fat32, ext4। मुझे अपने लैपटॉप पर विंडोज पर डिवाइस के साथ कोई समस्या नहीं है। यह मेरे पीसी या मेरे सिस्टम में कुछ होना चाहिए। मुझे नहीं पता कि क्या देखना है। मैं स्टैंडअलोन ओपनबॉक्स के साथ डेबियन परीक्षण का उपयोग कर रहा हूं। मेरा पीसी एक तरह का पुराना है - पेंटियम डी 3GHz, 1GiB RAM, 1,5TB WD ग्रीन डिस्क। यदि आपके पास ऐसा कुछ है जो मुझे इस मुद्दे को हल करने में मदद करेगा, तो मुझे यह सुनकर खुशी होगी।

मुझे नहीं पता कि मुझे और क्या जानकारी प्रदान करनी चाहिए, लेकिन अगर आपको कुछ चाहिए, तो बस पूछिए, मैं जल्द से जल्द इस पोस्ट को अपडेट करूंगा।

मैंने ubuntu 13.04 live cd पर इस समस्या को दोहराने की कोशिश की। मैंने अपना एन्क्रिप्टेड विभाजन + एन्क्रिप्टेड स्वैप माउंट किया और अपने पेनड्राइव को एक यूएसबी पोर्ट से जोड़ा। आगे मैंने कुछ ऐप शुरू करने की कोशिश की, और अब मेरे पास ~ 820MiB RAM और SWAP में लगभग 400MiB है। नकल की कोई समस्या नहीं है, बिल्कुल भी ठंड नहीं है, सब कुछ वैसा ही है जैसा होना चाहिए। तो, ऐसा लगता है कि यह सिस्टम की गलती है, लेकिन वास्तव में कहां? इस तरह के अजीब व्यवहार का क्या कारण होगा?


जब मुझे कुछ इसी तरह का सामना करना पड़ा, क्योंकि मेरे लैपटॉप पर हार्ड ड्राइव के मुद्दे थे। डिस्क में कुछ खराब क्षेत्र थे और हर बार जब मैं उन क्षेत्रों से कुछ भी पढ़ने की कोशिश कर रहा था, तब तक यह फ्रीज हो जाता था जब तक कि यह पूरा नहीं हो जाता। सिर्फ देखने के लिए एक विचार। हो सकता है कि आपके पास ऐसे बुरे क्षेत्र हों जहां से आप पढ़ने की कोशिश कर रहे हों।
slybloty

मेरा hdd ठीक है, कम से कम स्मार्ट तो (पूर्ण स्कैन के बाद) कहो।
मिखाइल मॉर्फिकोव

नकल प्रक्रिया की IO प्राथमिकता को कम करने की कोशिश करें, जैसे ionice -c3 cp something.tgz /media/pendrive। यह cpतीसरे (= सबसे कम) प्राथमिकता वर्ग "निष्क्रिय" में नव स्पंदित प्रक्रिया डाल देगा ।
n.st

मैंने यह कोशिश की, लेकिन इसका कोई असर नहीं हुआ।
मिखाइल मोरफिकोव

@MikhailMorfikov FYI करें, इस मुद्दे को लिनक्स 4.9 में संबोधित किया गया था। अभी भी खुद को ठीक नहीं किया है। YMMV।
सीमस कॉनर

जवाबों:


85

क्या आप बहुत सारे मेमोरी के साथ लिनक्स के 64-बिट संस्करण का उपयोग कर रहे हैं? उस स्थिति में समस्या यह हो सकती है कि लिनक्स धीमे उपकरणों जैसे कि एसडी कार्ड या यूएसबी स्टिक पर बड़े लिखने पर मिनटों के लिए लॉक हो सकता है। यह एक ज्ञात बग है जिसे नए गुठली में तय किया जाना चाहिए।

Http://lwn.net/Articles/572911/ देखें

समाधान: मूल समस्या के रूप में:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

मैंने /etc/rc.localअपनी 64 बिट मशीनों में इसे अपनी फ़ाइल में जोड़ लिया है ।

TANSTAAFL ; यह परिवर्तन इन उपकरणों को आपके थ्रूपुट को कम कर सकता है (और शायद करेगा) --- यह विलंबता और गति के बीच एक समझौता है। पिछले व्यवहार पर वापस आने के लिए आप कर सकते हैं

echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes

... जो डिफ़ॉल्ट मान हैं, जिसका अर्थ है कि राइटबैक व्यवहार को मापदंडों dirty_ratioऔर द्वारा नियंत्रित किया जाएगा dirty_background_ratio

गैर-विशेषज्ञ-साथ-लिनक्स लोगों के लिए ध्यान दें: फाइलें /proc स्यूडोफाइल्स हैं --- केवल कर्नेल और उपयोगकर्ता स्थान के बीच संचार चैनल। कभी भी उन्हें बदलने या देखने के लिए एक संपादक का उपयोग न करें; इसके बजाय एक शेल प्रॉम्प्ट --- उदाहरण के लिए, sudo -i(उबंटू स्वाद) या su rootउपयोग echoऔर cat) के साथ प्राप्त करें।

अद्यतन 2016/04/18 ऐसा लगता है कि, आखिरकार, समस्या अभी भी यहाँ है। आप इसे LWN.net पर देख सकते हैं , इस लेख में राइटबैक कतारों के बारे में


3
मेरे पास 64 बिट है, लेकिन केवल 1 जीबी रैम है, और मुझे आपको यह समाधान काम करना है! मैंने अभी इसका परीक्षण किया है, और दो मापदंडों को निर्धारित करने के बाद, अब कोई ठंड नहीं है। :)
मिखाइल मोरफिकोव

1
मेरी 14.04 स्थापना में, uname -aरिटर्न 3.13.0-32-generic, हां। लेकिन मैंने जाँच नहीं की है कि मुद्दे के लिए पैच अंततः कर्नेल में एकीकृत किया गया था या नहीं। मेरे पास 16GB की मशीन है और यह वर्कअराउंड के बिना ठीक काम करने लगता है, हालांकि मुझे कहना होगा कि मैंने विशेष रूप से धीमी डिवाइसों के साथ प्रयास नहीं किया।
रमनो

1
@ IonicăBizău --- यह एक छद्म फ़ाइल है, इसे vim कभी भी संपादित न करें । एक रूट शेल (साथ sudo -i) प्राप्त करें और उपरोक्त आदेशों का उपयोग करें।
रमनो

1
@ रमनो यह काम किया! हालाँकि, मैंने इसे VIM के साथ संपादित किया। धन्यवाद!
Ionică Bizău

2
मैं एक नए लैपटॉप (16 जीबी रैम के साथ) पर ubuntu 16.04 का उपयोग कर रहा हूं। मैं वास्तव में इस मुद्दे पर नाराज था। आपके समाधान ने एक आकर्षण की तरह काम किया! शायद आप जोड़ सकते हैं कि यह अभी भी कर्नेल के साथ 4.8.0-45 की आवश्यकता हो सकती है।
LGenzelis

3

इसका कारण प्रवर्धन को लिखा जा सकता है, क्योंकि प्रणाली उन खंडों में लिखने की कोशिश करती है जो छोटे होते हैं, ब्लॉक को पढ़ने (मॉड / लिखने / लिखने) + ब्लॉक मिसलिग्न्मेंट से।

अपनी वर्तमान सेटिंग की जाँच करने के लिए:

cat /sys/block/sd**X**/device/max_sectors

आप उन उपकरणों के लिए हॉल नियमों को ट्यून कर सकते हैं:

उपकरणों के एक पूरे परिवार के लिए यूएसबी "मैक्स_सेक्टर्स" का मूल्य बदलें

इस मामले में मैंने सभी उपकरणों के लिए max_sectors को बदल दिया था, जो कि 240K (USB भंडारण) के डिफ़ॉल्ट का उपयोग 32K सेक्टरों या 2K क्षेत्रों में किया गया था।

मेरे सिस्टम पर (Mageia 4, 3.14.24 कोर i7) मुझे किंग्स्टन DT101 G2 16GB पर बहुत धीमी गति से लिखने की गति (2MB / सेकंड) के कारण ऐसा करना पड़ा:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules

और जोड़:

SUBSYSTEMS=="scsi", ATTR{max_sectors}=="240", ATTR{max_sectors}="32678"

और ddलिखने की गति 3x गुना हो गई। mc cpशायद 10-20x ऊपर (जब मैंने पहले विभाजन @ 8192'th सेक्टर शुरू किया था और 64k संरेखित समूहों के साथ सुधार किया गया था):

fdisk -u /dev/sdh # make DOS compat off if on
mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592*** and use *fsck.vfat -v /dev/sdh1

संरेखण जांचने के लिए ([[डेटा स्टार्ट सेक्टर] 128 से अधिक होना चाहिए) (क्लस्टर आकार)। यदि आवश्यक हो तो आरक्षित क्षेत्रों (-R) की संख्या समायोजित करें।

डिफ़ॉल्ट max_sector (240) सस्ते नए ड्राइव में से कुछ पर उच्च लेखन प्रवर्धन का कारण बनते हैं। लेकिन इस तरह की उच्च सेटिंग के साथ बहुत सावधान रहें, समान प्रभाव 2048 क्षेत्रों (शायद 1 एम मिटा ब्लॉक) पर प्राप्त होता है:

SUBSYSTEMS=="scsi", ATTR{max_sectors}=="240", ATTR{max_sectors}="2048"

अपने सभी पुराने यूएसबी उपकरणों का परीक्षण करें, कि वे अभी भी अच्छी तरह से काम करते हैं। अधिक विशिष्ट होने के लिए नियमों की फाइलों में विक्रेता / मॉडल विशेषताओं का उपयोग करें।


1

हार्डवेयर बनाम सॉफ्टवेयर

मैं USB थंबड्राइव के साथ इसी तरह की अजीब समस्या में चला गया हूं, और मेरे शोध में यह लगभग हमेशा या तो एक ड्राइवर समस्या या पीसी / मदरबोर्ड के भीतर विशिष्ट हार्डवेयर है।

मुझे यह पता है क्योंकि मुझे कई सिस्टम मिले हैं जो समान हार्डवेयर हैं, और एक पर, मैं इस ऑपरेशन को बिना समस्या के कर सकता हूं, जबकि दूसरी समस्या पर दिखाई देता है।

क्या करें?

आप विकल्प वास्तव में यहाँ सीमित हैं। केवल उन चीजों के बारे में जो आप कर सकते हैं सुनिश्चित करें कि आपके पास अपने सिस्टम पर नवीनतम BIOS / फर्मवेयर स्थापित है, और सुनिश्चित करें कि आपके पास अपने डिस्टो के पैकेजों के नवीनतम संस्करण हैं।

इससे परे कि मैं जो भी सुझाव दे सकता हूं, वह सुनिश्चित कर रहा है कि आप फ़ाइलों की प्रतिलिपि बनाने का प्रयास न करके इस स्थिति से बचें, जबकि एक अन्य प्रतिलिपि जारी है।

यदि आपके पास उस प्रकार का व्यक्तित्व है जहां चीजें इस तरह से आपको परेशान करती हैं, तो आप लिनक्स का एक और लाइव डिस्ट्रो प्रयास कर सकते हैं और उन चरणों को दोहरा सकते हैं जो आपकी समस्या का कारण बनते हैं। जैसा कि मैंने ऊपर वर्णित किया है यह सिर्फ एक विशिष्ट विशिष्ट समस्या या हार्डवेयर समस्या है या नहीं। यह एक छोटी सांत्वना होगी, लेकिन मैं हमेशा अपने सिर को रेत में दफनाने के बजाय चीजों को जानना पसंद करता हूं, और नहीं।

और कुछ?

यदि आप वास्तव में जुनूनी हैं, तो आप उस एप्लिकेशन को चलाने का प्रयास कर सकते हैं जिसे आप straceसिस्टम में कैच करने की आशा के साथ कॉपी कर रहे हैं, जो भी सिस्टम कॉल फ्रीजिंग है। आपको कमांड लाइन से भी ऐसा करने में सक्षम होना चाहिए।

उदाहरण

$ strace -o cp1.log cp -r /path/to/dir1 /path/to/usb/. 

तब जबकि वह एक और शुरू कर रहा है।

$ strace -o cp2.log cp -r /path/to/dir2 /path/to/usb/. 

इस ऑपरेशन के दौरान सिस्टम उम्मीद से जम जाएगा और शायद आप भाग्यशाली हो जाएंगे और उन लॉग फ़ाइलों में से कुछ में धुआं पाएंगे।


मैं हमेशा फ़ाइल कॉपी करने के केवल एक उदाहरण का उपयोग करता हूं। मेरे पास BIOS अद्यतन (2008) है, और तब से कोई नया संस्करण नहीं है। मुझे लगता है कि यह BIOS नहीं है। मेरा डेबियन डिस्ट्रो भी परीक्षण शाखा में अपडेट किया गया है। मैंने प्रयोग करने की कोशिश की straceऔर यह लगभग तुरंत जम गया, इसलिए मैंने कुछ सेकंड इंतजार किया और इस प्रक्रिया को मार दिया। मुझे 1Mb लॉग मिला, लेकिन मैं इसे नहीं पढ़ सकता, मुझे नहीं पता कि क्या देखना है। आप इसे pastebin.com/u29RvqgC पर देख सकते हैं - यह पूर्ण लॉग (500Kb तक सीमित) नहीं है, लेकिन अंत में उन लोगों के लिए समान लाइनें थीं। मैं ubuntu लाइव सीडी के साथ इस मुद्दे को पुन: पेश करने की कोशिश करूंगा।
मिखाइल मोरफिकोव

मैंने लाइव सीडी परीक्षण के रूप में प्रश्न को अद्यतन किया।
मिखाइल मोरफिकोव

@MikhailMorfikov - मुझे लगता है कि आप जो करने की उम्मीद कर सकते हैं उसके अंत में आप बहुत सुंदर हैं। आपका हार्डवेयर बहुत पुराना (2008) है और वास्तव में बहुत ज्यादा नहीं है जो आप ऊपर बताए गए से परे कर सकते हैं।
SLM

लेकिन यहां तक ​​कि पुराने पीसी समस्याओं के बिना फ़ाइलों को कॉपी करने में सक्षम हैं।
मिखाइल मोरफिकोव

@MikhailMorfikov - आयु एकमात्र कारक नहीं है, लेकिन फर्मवेयर या पुराने हार्डवेयर के लिए सॉफ़्टवेयर के किसी भी अपडेट को प्राप्त करने की संभावना कम है, यही मेरा मतलब है।
SLM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.