পুনরায় বুট না করে পার্টিশন টেবিলটি আবার পড়বেন?


71

কখনও কখনও, যখন আকার পরিবর্তন বা অন্যথায় ডিস্কে পার্টিশনগুলি নিয়ে মাতামাতি করা হয়, সিএফডিস্ক বলবে:

Wrote partition table, but re-read table failed. Reboot to update table.

(এটি অন্যান্য বিভাজন সরঞ্জামের সাথেও ঘটে তাই আমি ভাবছি এটি সিএফডিস্ক সমস্যা নয় বরং এটি একটি লিনাক্স সমস্যা)) কেন এটি হয় এবং কেন এটি কেবল কখনও কখনও ঘটে থাকে এবং আমি এড়াতে কী করতে পারি?

দ্রষ্টব্য: অনুগ্রহ করে ধরে নিন যে আমি যে পার্টিশনটি সম্পাদনা করছি তার কোনওটিই খোলা, মাউন্ট করা বা অন্যথায় ব্যবহারে নেই।


হালনাগাদ:

cfdisk ioctl(fd, BLKRRPART, NULL)পার্টিশন টেবিলটি পুনরায় পড়তে লিনাক্সকে জানাতে ব্যবহার করে। এখনও অবধি সুপারিশ করা অন্যান্য দুটি সরঞ্জামের মধ্যে ( hdparm -z DEVICE, sfdisk -R DEVICE) ঠিক একই কাজ করে। partprobe DEVICEকমান্ড, অপরপক্ষে, একটি নতুন ioctl BLKPG বলা হয়, কোনটা ভাল হতে পারে ব্যবহার করতে হচ্ছে; আমি জানি না। (বিএলকেপিজি ব্যর্থ হলে এটি বিএলকেআরআরপার্টেও ফিরে আসে))

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


1
man sfdiskবলেছেন:Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.
টম হেল

উত্তর:


66

সবচেয়ে নির্ভরযোগ্য / সেরা উত্তর হ'ল আইএমএইচও

partprobe /dev/sdX

1
আমি কেবল উবুন্টু সার্ভারের অধীনে একটি ডেভ প্রসারিত করেছি, এই দেব একটি হার্ডওয়্যার রাইড। রাইডকন্ট্রোলার ব্যবহার করে অন্তর্নিহিত অভিযানটি প্রসারিত করার পরে, আমি ফাইল সিস্টেমটি বাতিল করে দিয়ে "পার্টপ্রোব / দেব / এসডিএ" চেষ্টা করেছিলাম - এটি কার্যকর হয়নি। "fdisk -l" এখনও পুরানো আকার দেখায়। আমি তখন "hdparm -z / dev / sda" চালিয়েছিলাম এবং এটি কৌশলটি করেছে। তারপরে আমি কোনও পুনরায় বুট না করে আমার ফাইল সিস্টেমটি মাউন্ট এবং আকার পরিবর্তন করতে পারি। আমি জানি আমি ওয়াইএমএমভি ব্যতীত অন্য কিছু যুক্ত করছি না।
মেওয়ান্নো

আমি সেন্টোস 6.5 এ আছি; কার্নেল ২.6.৩২। নিম্নলিখিত সমস্ত কমান্ডগুলি কার্নেল পুনর্নির্মাণের পার্টিশন তৈরি করে নি: - partprobe / dev / sda (সতর্কীকরণ: কার্নেল পুনরায় পড়তে ব্যর্থ হয়েছে)
ম্যাক্স

@ ম্যাক্স, আমি আরও লক্ষ্য করেছি যে মাঝে মাঝে পার্টপ্রোব এমন কোনও ত্রুটিও প্রিন্ট করে যা কাজ করে না। কখনও কখনও একটি পুনরায় বুট করা নিশ্চিত হওয়ার একমাত্র বিকল্প। অনেক সময় এটি আমার পক্ষে কাজ করে বলে মনে হয়।
ম্যাট

এটি আমার পক্ষে কাজ করে না কারণ এখনও কিছু ডিরেক্টরি ছিল --bind দিয়ে মাউন্ট করা। পার্টিশনটি নিজেই ইতিমধ্যে আনমাউন্ট করা ছিল কিন্তু সেই বিভাজনের দিকে নির্দেশিত বাইন্ড-মাউন্টগুলি এখনও সেখানে ছিল। অদ্ভুত যে umount কাজ করেছে এবং পার্টপ্রোব নয়, তবে বাইন্ড-মাউন্টগুলিও খুব বড় করে দেওয়ার পরে, আমি ডিস্কটি পার্টপ্রোবও করতে পারি।
ইথান লেরয়

এই নিয়ে flagellating পর সেন্টওএস 6 আমার জন্য কাজ kpartxএবং udevadm trigger10 মিনিটের জন্য। ধন্যবাদ!
মাইক অ্যান্ড্রুজ

19

পার্টিশন সারণীর তথ্য পড়ার কাজ সর্বদা কার্যকর হয় না, তবে চেষ্টা করুন

hdparm -z /dev/sda

অথবা

sfdisk -R /dev/sda

যদি এটি / proc / পার্টিশনের মানগুলি কাজ করে তবে পরিবর্তন হবে।


hdparm আমার জন্য কাজ করেছে।
অধ্যাপক ফ্যালকেন

3
sfdisk -R বিকল্পটি বিদ্যমান নেই।
ম্যাট

এটি লক্ষ করা উচিত যে hdparmকমান্ড কেবলমাত্র পার্টিশনগুলি মাউন্ট না করা হলে কাজ করবে।

... প্রকৃতপক্ষে, দেখে মনে হচ্ছে sfdisk -Rইউট-লিনাক্স ২.২৪.২ এবং ২.২26.১.১ এর মধ্যে কোথাও সরানো হয়েছে
চার্লস ডাফি

1
man sfdiskবলেছেন:Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.
টম হেল

10

Centos7 এ:

Https://access.redhat.com/solutions/199573 অনুসারে

আপনার চেষ্টা করা উচিত্ :

partx -u <partition>

এটা আমার জন্য কাজ করেছে।


1
এটাই ছিল আমার পক্ষে একমাত্র কাজ। ভাগ করে নেওয়ার জন্য আপনাকে অনেক ধন্যবাদ!! দিনের শীর্ষে আপনাকে, স্যার!
নটগেইল

8

দ্রষ্টব্য: অনুগ্রহ করে ধরে নিন যে আমি যে পার্টিশনটি সম্পাদনা করছি তার কোনওটিই খোলা, মাউন্ট করা বা অন্যথায় ব্যবহারে নেই।

যে ধৃষ্টতা দেওয়া, পার্টিশন টেবিল পারেন সফলভাবে rescanned হবে, এবং ইস্যু উঠা করা হবে না। আপনি যে ত্রুটি পেয়ে থাকেন, তবে কারণ পার্টিশন টেবিল হয় বর্তমানে ব্যবহৃত, তাই না অসঙ্গতি তৈরি ছাড়া পুনরায় স্ক্যান করা যাবে।


কিছু পার্টিশন ব্যবহৃত হতে পারে, তবে সেগুলির কোনওটিই আমি প্রকৃতপক্ষে পরিবর্তন করছি, যদিও সেগুলি একই পার্টিশন সারণীতে থাকতে পারে।
টেডি 1

8
কার্নেলটি তেমন স্মার্ট নয়। যদি টেবিলের কোনও বিভাজন ব্যবহৃত হয়, কার্নেলটি পুনরায় পুনরুদ্ধার করে না। অন্য দিকে ভুল হওয়াটা বিপর্যয়কর হতে পারে, তাই এটি নিরাপদ। আপনি যদি ইচ্ছামত পার্টিশন দিয়ে আশেপাশে স্টাফ করতে চান তবে LVM ব্যবহার করুন।
ওম্বল

6

আপনি সম্পাদনা করছেন এমন বিভাজনের ভিত্তিতে নয়।

ধরুন আপনার কাছে কেবল একটি হার্ডডিস্ক ( /dev/sda) এবং দুটি পার্টিশন ( /dev/sda1, /dev/sda2) রয়েছে এবং আপনি কেবল একটি পার্টিশন ( /dev/sda1) মাউন্ট করেছেন । /dev/sda2পার্টিশন টেবিলটি পুনরায় পড়তে ব্যর্থ হয়েছে এবং কার্নেলটি পুরানো সারণী ব্যবহার করবে এমন ত্রুটিটি আপনি পাবে না যা এমন কোনও পার্টিশন যা এমনকি মাউন্ট করা নেই ( ) এটি মুছলে বা পরিবর্তন করতে পারলে ।

তবে আপনার যদি দুটি হার্ডডিস্ক ( /dev/sda, /dev/sdb) থাকে এবং ( /dev/sdb) এর পার্টিশনের কোনওটিই ব্যবহারে আসে না। তারপরে আপনি পার্টিশনের পার্টিশন যুক্ত / মুছা / পুনরায় আকার / সম্পাদনা করতে পারেন /dev/sdbএবং এগুলি কোনও সমস্যা ছাড়াই পুনরায় পড়তে হবে। এমনকি পরিবর্তনের সময় / dev / sdb এর একটি পার্টিশন মাউন্ট করা থাকলেও। তারপরে কার্নেল পুরানো টেবিলটি ব্যবহার করতে থাকবে।


5

আমার (মূল প্রশ্নকারী) কিছুদিন আগে এমন পরিস্থিতি হয়েছিল যখন অন্যান্য উত্তরগুলির মধ্যে ( partprobe /dev/sdXবর্তমানে স্বীকৃত এবং সর্বাধিক-উত্তরযুক্ত উত্তর সহ) কোনও কাজ করেনি । তবে কী কাজ করেছিল তা হ'ল:

blockdev --rereadpt /dev/sdX

(কেন এটি কাজ করেছিল এবং অন্যেরা কেন করল তা আমি জানি না, তবে আমি আনন্দিত এটি কাজ করেছে, কারণ এটি একটি ব্যস্ত সার্ভারে আমার পুনরায় বুট সংরক্ষণ করেছিল))


5

আমি সেন্টোস 6.5 এক্স 64 এ আছি; কার্নেল ২.6.৩২। এবং আমি আকার পরিবর্তন করতে fdisk কৌশল পরীক্ষা করছি।

/dev/sda1 /boot
/dev/sda2 /

সকল নিম্নলিখিত কমান্ড হয়নি না করতে কার্নেল পুনরায় পাঠ পার্টিশন:

  • partprobe / dev / sda (সতর্কতা: কার্নেল পুনরায় পড়তে ব্যর্থ হয়েছে ....)
  • hdparm -z / dev / sda (বিএলকেআরআরপার্ট ব্যর্থ হয়েছে: ডিভাইস বা রিসোর্স ব্যস্ত)
  • blockdev -rereadpt / dev / sda (বিএলকেআরআরপিআর্ট ব্যর্থ হয়েছে: ডিভাইস বা রিসোর্স ব্যস্ত)
  • sfdisk -R / dev / sda (বিএলকেআরআরপিআর্ট ব্যর্থ হয়েছে: ডিভাইস বা রিসোর্স ব্যস্ত)

এটি কাজ করতে আমার এখনও একটি রিবুট দরকার


এর কোনওটিই আমার পক্ষে কাজ করেনি (প্রক্সমক্স ভিএম, সেন্টোস,, এক্সএফএস পার্টিশন, কোনও এলভিএম)। @ ইউস উত্তরটি কাজ করেছে, যদিও: সার্ভারসফল্ট
23২২8686/10

উপরের সমস্ত কমান্ডগুলি আমার পক্ষেও কার্যকর হয়নি।
ফাদি আসবিহ

আমি মনে করি কার্নেল ২.6.৩২ এর সমস্যা আছে, আমি এটি অন্য মেশিনে আগে ব্যবহার করেছি, এটি পুরানো পার্টিশনের মধ্যে আরও বেশি সংখ্যার সাথে পার্টিশন যুক্ত করার পরেও ঠিক কাজ করেছিল। অর্থাৎ sdb1 sdb2 sdb3 - sdb2 মুছুন, তারপরে sdb1 sdb4 sdb5 sdb3। উপরের পাশাপাশি, পার্টেক্স, কেপার্টস, ব্লকদেব পাশাপাশি কাজ করে না।
sdkks

আমি মনে করি না যে এটি অস্বাভাবিক যে কোনও কমান্ড পার্টিশনগুলি পুনরায় পড়তে ব্যর্থ হলে, সমস্ত ব্যর্থ হয় - এর কয়েকটি কারণগুলি কীভাবে দূর করতে হয় তার জন্য আমার উত্তরও দেখুন
ম্যাক্সচলেপজিগ

3

সমস্ত মাউন্ট পয়েন্টগুলি আনমাউন্ট ছাড়াই, ইয়োক্টো ২.৪ চলছে:

partprobe /dev/sda 

ডিভাইসে পার্টিশনগুলি মোছার পরে পার্টিশন টেবিলটি পুনরায় লোড করতে ব্যর্থ হয়েছে। এছাড়াও চেষ্টা করা হয়েছিল - এবং ব্যর্থ হয়েছে:

udevadm trigger --subsystem-match=block; udevadm settle
hdparm -z /dev/sda
blockdev --rereadpt /dev/sda

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

systemctl restart systemd-udevd.service

এবং হঠাৎ আমার ডিস্কটি পুনরায় বুট ছাড়াই আবার পাওয়া যায় !


শীর্ষ গৃহীত উত্তর অসম্পূর্ণ: আধুনিক systemdবিশ্বে এই সঠিক উত্তর answer দয়া করে মনে রাখবেন আপনারও তাদের (বা উভয়) এর একটি পুনরায় চালু করতে হবে systemd-udev-settleএবং systemd-udev-triggersystemd-udevdক্যাম্প বলেছে ঠিক তেমন পুনরায় চালু করা আমার পক্ষে যথেষ্ট ছিল না। তবে আবার দু'জন আবার চালু করেও কৌতুক করলেন!
কস্টিন গুয়ে

1

যখন একটি কমান্ড মত blockdev --rereadpt /dev/sdXব্যর্থ হয়

blockdev: ioctl error on BLKRRPART: Device or resource busy

এর অর্থ সাধারণত কিছু (পুরানো) পার্টিশন এখনও কার্নেলের দ্বারা ব্যবহৃত হয়।

সম্ভাব্য কারণ / সংশোধন:

  1. একটি এসডিএক্স বিভাজন - বলুন sdX1- এখনও মাউন্ট করা আছে - mountএটি দিয়ে পরীক্ষা করুন এবং এটি অমাউন্ট করুন
  2. /dev/sdX1একটি সফ্টওয়্যার অভিযানের অংশ - cat /proc/mdstatপ্রাসঙ্গিক অ্যারেগুলি পরীক্ষা করুন এবং সম্ভবত বন্ধ করুন, যেমনmdadm --stop /dev/md126
  3. /dev/sdX1LVM প্রকৃত ভলিউম অংশ - সঙ্গে চেক pvdisplay/ vgdisplayএবং সম্ভবত সঙ্গে নিষ্ক্রিয়vgchange
  4. /dev/sdX1যেমন মাধ্যমে - কিছু ডিভাইস ম্যাপিং অংশ cryptsetupপরীক্ষা - /dev/mapperএবং lsblk(যেমন এবং সম্ভবত ম্যাপিং অপসারণ cryptsetup luksClose)
  5. কিছু উদেব অনুসন্ধানের সাথে রেসের শর্ত - চলমান প্রক্রিয়াগুলি পরীক্ষা করুন psএবং সম্ভবত একজনকে হত্যা করুন

যে সরঞ্জামটি থাকে - তাহলে বলতে blockdev --rereadptমত সাধারণত অনুরূপ (ব্যর্থ partx -uv, kpartx, partprobe, kpartprobe) একইভাবে ব্যর্থ পর্যন্ত মূল কারণ দূর হয়ে যায়।


0

আপনিও চেষ্টা করতে পারেন:

echo 1 > /sys/block/sdX/device/rescan

(তবে কাজ করবে না, নীচের মন্তব্যটি দেখুন)


3
এটি পার্টিশন টেবিলটি পুনরায় পড়বে না। এটি ঠিক জ্যামিতির তথ্য, ক্যাশে মোড, ইত্যাদি আপডেট করে S
দিমিত্রি চুবারভ

0

kpartx -a <partition> নতুন তৈরি করা পার্টিশনে দুইবার চালানো যেতে পারে .... সিস্টেমটি রিবুট করার পরিবর্তে।


2
দুই বার? আপনি কি " sync; sync; sync" চালাবেন ? ☺ আমি কুসংস্কারের গন্ধ পেয়েছি…
টেডি

1
আমি মনে করি এই কুসংস্কার আসলেই এসেছিল যে আপনি দ্বিতীয় সিঙ্ক করে আপনার সিঙ্ক কিনা তা পরীক্ষা করে দেখেন। অপারেটরটির জন্য দ্বিতীয়টি কেবল মূল্যবান বলে বাদে তাৎক্ষণিকভাবে প্রম্পটে ফিরে আসে তা নিশ্চিত করার জন্য, প্রত্যাশিতভাবে প্রথম সিঙ্কটি সম্পন্ন হওয়ার ইঙ্গিত দেয়। পরে কয়েকটি ব্লগ এবং টিউটোরিয়াল, এবং ....
জেএম বেকার

0

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


0

আমিও না জন্য partprobeবা blockdevসমাধান কাজ করেন। যদিও, এটি কাজ করে:

udevadm settle --exit-if-exists=/dev/sdb1

-3

আপনি যদি 'ম্যান ওরাকলিজম-স্ক্যান্ডিস্কস' এর ম্যানপেজটি পড়েন তবে নীচের পাঠ্যটি নোট করুন। Oracleasm / proc / পার্টিশনগুলি সমস্ত স্ক্যানিং সঞ্চালনের উত্স হিসাবে ব্যবহার করছে। কোনও স্ক্যান্ডিস্ক করার আগে আপনাকে অবশ্যই আপনার কাঁচা ডিভাইসগুলি / proc / পার্টিশনে তালিকাভুক্ত করতে হবে। আপনি / etc / sysconfig / oracleasm এ যে স্ক্যানারর্ডার এবং স্ক্যানেক্সক্লুড প্যারামিটার রাখেন সেগুলি / proc / পার্টিশন (!!!!) এ পাওয়া নামের সাথে সম্পর্কিত।

---------- মানুষ ওরাকলিজম-স্ক্যান্ডিস্কস ------ ...

কীভাবে স্ক্যান করা হচ্ছে স্ক্যানটি চারটি প্রাথমিক পর্যায়ে এগিয়ে যায়।

   First, the list of disks to scan is created. If disks were specified on the command line, this is the list.
   If not, /proc/partitions is read, and each block device is added, subject to the -o and -x options.

   Second, the partition tables of each disk in the scan are reloaded unless the -s option was specified. Any
   disks that no longer exist are dropped.

   Third, the list of disks is recreated based on the new partition tables.

   Finally, each disk in the list is checked to see if it is marked for ASM use. Disks that are marked are
   instantiated.

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