ওপেনসোলারিসের অধীনে কোনও ফাইল সরানোর সময় ডিভাইসে কোনও স্থান নেই


10

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

svc.startd[9] Could not log for svc:/network/dns/mulitcast:default: write(30) failed with No space left on device?

আমার ওএস ব্যতীত বুট ড্রাইভে আর কিছু নেই ... আমি নিশ্চিত না যে ড্রাইভটি কী পূরণ করতে পারে? কোনও ধরণের লগ ফাইল হতে পারে? আমি নির্বিশেষে কিছুই মুছে ফেলতে পারি না। আমি যখন কিছু চেষ্টা ও মুছার চেষ্টা করি তখন এটি আমাকে কোনও স্থান ত্রুটি দেয়:

$ rm filename
cannot remove 'filename' : No space left on device 

আমি "রক্ষণাবেক্ষণ মোড" এ লগইন করতে পারি তবে মানক ব্যবহারকারী প্রম্পট নয়।

এর ফলাফল df:

rpool/ROOT/openindiana-baseline    4133493    4133493          0    100%   /
swap                              83097900      11028  830386872      1%   /etc/svc/volatile
/usr/lib/libc/libc_hwcap1.so.1     4133493    4133493          0    100%   /lib/libc.so.1

এর ফলাফল mount:

/ on rpool/ROOT/openindiana-baseline read/write/setuid/devices/dev:2d9002 on Wed Dec 31 16:00:00 1969
/devices on /devices read/write/setuid/devices/dev:8b40000 on Fri Jul 8 14:56:54 2011
/dev on /dev read/write/setuid/devices/dev:8b80000 on Fri Jul 8 14:56:54 2011
/system/contract on ctfs read/write/setuid/devices/dev:8c40001 on Fri Jul 8 14:56:54 2011
/proc on proc read/write/setuid/devices/dev:8bc0000 on Fri Jul 8 14:56:54 2011
/etc/mnttab on mnttab read/write/setuid/devices/dev:8c80001 on Fri Jul 8 14:56:54 2011
/etc/svc/volatile on swap read/write/setuid/devices/xattr/dev:8cc0001 on Fri Ju8 14:56:54 2011
/system/object on objfs read/write/setuid/devices/dev:8d00001 on Fri Jul 8 14:6:54 2011
/etc/dfs/sharetab on sharefs read/write/setuid/devices/dev:8d40001 on Fri Jul 14:56:54 2011
/lib/libc.s0.1 on /usr/lib/libc/libc_hucap1.s0.1 read/write/setuid/devices/dev:d90002 on Fri Jul 8 14:57:06 2011 

'Zfs list -t all' এর আউটপুট হল:

rpool                                                       36.4G   0       47.5K   /rpool
rpool/ROOT                                                  4.23G   0         31K   legacy
rpool/ROOT/openindiana                                      57.5M   0       3.99G   /
rpool/ROOT/openindiana-baseline                             61K     0       3.94G   /
rpoo1/ROOT/openindiana-system-edge                          4.17G   0       3.98G   /
rpool/ROOT/openindiana-system-edge@install                  19.9M   -       3 38G   -
rpoo1/ROOT/openindiana-system-edge@2011-07-06-20:45:08      73.1M   -       3.57G   -
rpoo1/ROOT/openindiana-system-edge@2011-07-06-20:48:53      75.9M   -       3 82G   -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:14:04      61K     -       3.94G   -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:15:14      61K     -       3.94G   -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:28:14      61K     -       3.94G   -
rpool/ROOT/openindiana-system-stable                        61K     0       3.94G   /
rpoo1/ROOT/pre_first_update_07.06                           108K    0       3 82G   /
rpool/ROOT/pre_second_update_07.06                          90K     0       3.57G   /
rpool/dump                                                  9.07G   0       9.07G   -
rpool/export                                                3.85G   0       32K     /export
rpool/export/home                                           3.85G   0       32K     /export/home
rpool/export/home/admin                                     3.85G   0       3.85G   /export/home/admin
rpool/swap                                                  19.3G   19.1G   126M    -

1
এটি ফাইল সিস্টেম বা পুলের মতো দেখাচ্ছে যেখানে লগগুলি লিখিতভাবে পূর্ণ is সার্ভারে ফাইল সিস্টেম এবং ডিস্ক সংস্থাটি কী? আপনি কি এখনও সার্ভারে লগইন করতে পারেন (আপনি না বলে মনে করছেন, তবে তারপরে আপনি বলছেন যে আপনি ফাইলগুলি মুছতে চেষ্টা করেছেন)? "আমি যখন কিছু চেষ্টা ও মুছতে চাইলে এটি আমাকে কোনও স্পেস ত্রুটি দেয়" এর অর্থ কী: আপনি কোন আদেশটি ঠিক টাইপ করেছিলেন এবং কোন সঠিক ত্রুটি বার্তা পেয়েছেন?
গিলস 21'30

আপনার প্রশ্নের উত্তর দিতে পোস্ট আপডেট হয়েছে
নিক ফ্যারাডে

ঠিক আছে. সুতরাং আউটপুট পোস্ট করুন dfএবং mount। আপনি কি জানেন যে সার্ভারটির কনফিগারেশন সম্পর্কে? বিশেষত, এর লগিং কনফিগারেশন সম্পর্কে?
গিলস 'অশুভ হওয়া বন্ধ করুন'

অনুরোধ করা আউটপুট ডেটা আপডেট এবং সংযুক্ত করেছে ... একবার দেখার জন্য ধন্যবাদ!
নিক ফ্যারাডে

দয়া করেzfs list -t all
jlliagre

উত্তর:


13

ঠিক আছে, এটি একটি অদ্ভুত… কোনও ফাইল সরানোর জন্য পর্যাপ্ত জায়গা নেই!

এটি জেডএফএসের সাথে তুলনামূলকভাবে সাধারণ সমস্যা হিসাবে প্রমাণিত হয়েছে, যদিও এটি স্ন্যাপশট রয়েছে এমন কোনও ফাইল সিস্টেমে সম্ভাব্যভাবে উত্থিত হতে পারে ।

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

একটি স্বল্পমেয়াদী ফিক্স হ'ল সর্বশেষ স্ন্যাপশটের পরে তৈরি করা একটি ফাইল সন্ধান এবং এটি মুছুন। আরেকটি সম্ভাবনা হ'ল সর্বশেষ স্ন্যাপশটের পরে যুক্ত হওয়া ফাইলটি খুঁজে পাওয়া এবং সর্বশেষ স্ন্যাপশটের সময় আকারে এটি কেটে দেওয়া। যদি আপনার ডিস্কটি পূর্ণ হয়ে যায় কারণ কোনও কিছু আপনার লগগুলিকে স্প্যাম করছে তবে বৃহত্তম লগ ফাইলগুলি ছাঁটাই করার চেষ্টা করুন।

আরও সাধারণভাবে প্রযোজ্য ফিক্সটি হ'ল কিছু স্ন্যাপশট অপসারণ করা। আপনি এর সাথে স্ন্যাপশট তালিকা করতে পারেন zfs list -t snapshot। আপনি যদি কোনও নির্দিষ্ট স্ন্যাপশটটি ধ্বংস করেন তবে কত জায়গা ফিরে আসবে তার পূর্বাভাস দেওয়ার সহজ উপায় বলে মনে হয় না, কারণ এটি সংরক্ষণ করে যে ডেটা অন্য স্ন্যাপশটগুলির প্রয়োজন হতে পারে এবং আপনি যদি সেই স্ন্যাপশটটি ধ্বংস করেন তবে তা চলবে। সুতরাং প্রয়োজনে আপনার ডেটাটিকে অন্য ডিস্কে ব্যাক আপ করুন, আপনার প্রয়োজন নেই এমন এক বা একাধিক স্ন্যাপশট শনাক্ত করুন এবং চালান zfs destroy name/of/snap@shot

এই ওপেনসোলারিস ফোরামের থ্রেডে এই সমস্যাটির বর্ধিত আলোচনা রয়েছে ।


3
স্ন্যাপশট ক্ষমতা এই সমস্যার কারণ নয় - নীচে আমার উত্তর দেখুন। তবে একটি স্ন্যাপশট প্রকাশ করতে সক্ষম হওয়ায় এটি সমাধানে অলৌকিক কাজ করতে পারে, যেমনটি আপনি সঠিকভাবে বর্ণনা করেছেন :)
তাতজানা হিউসার

8

এটি অনুলিপি-অন-রাইটিং ফাইল সিস্টেমগুলির সাথে একটি সুপরিচিত সমস্যা: একটি ফাইল মুছে ফেলার জন্য, ফাইল সিস্টেমটি প্রথমে একটি ব্লক বরাদ্দ করতে হবে এবং কেবলমাত্র মোছার আগেই ফাইলটির মধ্যে থাকা স্থানের সম্পদ প্রকাশ করতে সক্ষম হওয়ার আগে নতুন স্থিতিটি ঠিক করতে হবে।

(এটি স্ন্যাপশটগুলির সাথে ফাইল সিস্টেমগুলির কোনও সমস্যা নয় , কারণ কেবল কপি-অন-রাইটিং ব্যতীত এগুলি প্রয়োগ করার অন্যান্য উপায় রয়েছে)

আটকানোর উপায়:

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

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


1

4.Z3G (আরপুল / রুট ইউএসইডি কলাম) সন্দেহজনক।

যাই হোক না কেন, rpool / निर्यात / হোম / অ্যাডমিন খুব বড় (3.85 গিগাবাইট) সম্ভবত এর মূল কারণ হতে পারে। এর সামগ্রীটি দেখুন এবং সেখানে অপ্রয়োজনীয় ফাইলগুলি সরিয়ে ফেলুন। অ্যাডমিন ফাইল সিস্টেমে কোনও স্ন্যাপশট না থাকায় এটি অবিলম্বে পুলের কিছু জায়গা খালি করা উচিত।


হ্যাঁ যা '2' এজেড (ওসিআর'এমিড) হওয়া উচিত ছিল না। অদ্ভুত কি যখন আমি সিডি করতে / rpool সেখানে কিছুই নেই? আমি মনে করি না "রক্ষণাবেক্ষণ মোড" সঠিক লিঙ্কগুলি তৈরি করে! রফতানিতে / তেমন কিছুই নেই।
নিক ফ্যারাডে

অ্যাডমিন / রফুল / হোম / অ্যাডমিনে মাউন্ট করা উচিত, আরপুলে নয় not এটি রক্ষণাবেক্ষণ মোডে না থাকলে আপনি এটি নিজেই মাউন্ট করতে পারেন।
jlliagre

0

আমার এটি ছিল এবং যা প্রয়োজন তা বের করার চেষ্টা করার জন্য কিছুটা সময় ব্যয় করলাম। আমার সমাধানটি ছিল মুছতে চেষ্টা করার আগে ফাইলগুলির স্থান শূন্য করা।

আমাদের কিছু দুর্ব্যবহারকারী প্রক্রিয়া রয়েছে যা মাঝেমধ্যে ক্রেজি হয়ে যায় এবং কোর ফাইলগুলিতে ডিস্কটি পূরণ করে (একটি সংখ্যায় শেষ হয়) তাই আমি একটি লিপি তৈরি করেছি যাতে একটি অনুলিপি রাখতে এই জাতীয় কিছু রয়েছে।

for file in core*[0-9]
do
    coreFile=${file%.[0-9]*}

    mv $file $coreFile
    if [[ $? == 0 ]]
    then
        chmod 644 $coreFile
    else
        truncate -s 0 $file # we can't just delete if disk is full so zero out first
        rm $file
    fi
done

আমি যখন আমার স্ক্রিপ্টটি চালালাম তখন এটি একটি ত্রুটি তৈরি করেছিল:

mv: cannot rename core.200000 to core: No space left on device

এবং কার্যকরী ছিল ফাইল ক্লিয়ারিং।

এটি পরীক্ষা করার জন্য আমি ডিস্কটি ভরে দিয়েছি:

for ((ii=0; ii<100000; ii++))
do
    mkfile 1m core.$ii
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.