ชิ้นส่วนทำงานอย่างไร


12

ฉันกำลังมองหาวิธีรีเฟรชบัส scsi (หรือรถบัสอื่น ๆ สำหรับเรื่องนั้น) ที่จะทำให้เคอร์เนลของฉัน (2.6.18-194-el5 บน CentOS 5.5) รู้เกี่ยวกับพาร์ติชั่นบนไดรฟ์และฉันก็ไม่สามารถทำได้ หาทาง partprobe ทำได้ทันที อย่างไร?

เนื่องจากเป็นสิ่งสำคัญนี่คือสิ่งที่ฉันทำ:

ฉันต้องการได้รับการฝึกฝนในสิ่งเฉพาะพาร์ติชันเช่นการปรับขนาดการสำรองข้อมูล MBR และการกู้คืนและอื่น ๆ ฉันสร้างพาร์ติชั่น 20GB บน / dev / sdb, สำรองข้อมูล MBR:

dd if = / dev / sdb ของ = sdb.mbr bs = 512 count = 1

จากนั้นฉันไปที่ fdisk ลบพาร์ทิชันเขียนและออก

ls / dev / sdb *

แสดงให้เห็นว่าไม่มีพาร์ติชันและ

fdisk -l / dev / sdb '

จับคู่ดังนั้นฉันคิดว่าฉันเป็นคนดี

จากนั้นฉันกลับรายการวันที่:

dd if = sdb.mbr ของ = / dev / sdb bs = 512 count = 1

แน่นอนว่าฉันไม่ได้ทำอะไรเลยในตอนนั้น

ls / dev / sdb *

ไม่ได้แสดงรายการพาร์ติชันใด ๆ แต่

fdisk -l

แสดงพาร์ติชันน่าจะเป็นเพราะมันอ่าน 512 ไบต์แรกบนดิสก์และไม่ต้องพึ่งพาเคอร์เนล ฉันรู้ว่าฉันต้องรีเฟรชรถบัสดังนั้นฉันจึงเข้าสู่ / sys / class / scsi_host / host1 และทำ

echo "- - -"> สแกน

และทำ

ls / dev / sdb

ไม่ได้แสดงอะไรใหม่ดังนั้นฉันจึงไปที่ / sys / bus / scsi / อุปกรณ์และสำหรับแต่ละอุปกรณ์ที่ระบุฉันทำ

echo 1> rescan

และนั่นก็ไม่ได้ผล

จากนั้นฉันก็ทำการวิจัยเพิ่มเติมเกี่ยวกับปัญหาและเจอ 'partprobe' ซึ่งมาพร้อมกับการแยก ฉันวิ่งแล้วก็ใช้งานได้ทันที

ถ้าฉันไม่ได้รับคำตอบที่นี่ฉันอาจจะแค่ไปหาที่มาและค้นหามัน แต่ฉันคิดว่ามีพ่อมดที่นี่ฉัน

คำตอบ:


12

Partprobe เรียกBLKRRPARTioctl ซึ่งมีการบันทึกไว้ใน, err include/linux/fs.h, และเกินกว่าที่เคอร์เนลแหล่งที่มา (เนื้ออยู่ในrescan_partitions()):

#define BLKRRPART  _IO(0x12,95) /* re-read partition table */

strace -e raw=ioctl -e open,ioctl partprobe /dev/sdbวิธีที่ง่ายที่สุดที่จะหานี้คือการทำงาน

ฉันคิดว่าสิ่งที่คุณพยายาม/sys/*/*scanบอกเคอร์เนลเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงของไดรฟ์ มันไม่ได้ช่วยอะไรถ้าไดรฟ์ไม่เปลี่ยนแปลง (หรือ hotswapped ในลักษณะที่เคอร์เนลตรวจไม่พบ?) แต่โครงสร้างพาร์ติชั่นนั้นเปลี่ยนไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.