วิธีการขัดจังหวะการโจมตีซอฟต์แวร์ resync?


50

ฉันต้องการขัดจังหวะการดำเนินการ resync ที่ทำงานอยู่บนการจู่โจมซอฟต์แวร์เดเบียนบีบ (นี่คือ resync เปรียบเทียบที่กำหนดเวลาปกติอาร์เรย์การโจมตียังคงสะอาดในกรณีเช่นนี้อย่าสับสนกับการสร้างใหม่หลังจากดิสก์ล้มเหลวและถูกแทนที่)

วิธีหยุดการซิงค์ซ้ำตามกำหนดเวลานี้ในขณะที่กำลังทำงานอยู่ อาร์เรย์การโจมตีอีกรายการหนึ่งคือ "รอการซิงค์อีกครั้ง" เพราะทุกคนจะได้รับการตรวจสอบในวันเดียวกัน (คืนวันอาทิตย์) อีกครั้งหนึ่ง ฉันต้องการหยุดที่สมบูรณ์ของคืนวันอาทิตย์นี้ resyncing

[แก้ไข: sudo kill -9 1010ไม่หยุด 1010 เป็น PID ของกระบวนการ md2_resync]

ฉันต้องการทราบว่าฉันสามารถควบคุมช่วงเวลาระหว่างการเรนซินและเวลาที่เหลือจนถึงช่วงเวลาถัดไปได้อย่างไร

[Edit2: สิ่งที่ฉันทำตอนนี้คือการทำให้การซิงค์ช้าลงมากดังนั้นจึงไม่รบกวนอีกต่อไป:

sudo sysctl -w dev.raid.speed_limit_max=1000

นำมาจากhttp://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html

ในตอนกลางคืนฉันจะตั้งค่ากลับเป็นค่าสูงดังนั้น resync จึงสามารถยุติได้

วิธีแก้ปัญหานี้ใช้ได้สำหรับสถานการณ์ส่วนใหญ่อย่างไรก็ตามมันจะน่าสนใจที่จะทราบว่าสิ่งที่ฉันถามเป็นไปได้ ตัวอย่างเช่นดูเหมือนว่าจะไม่สามารถสร้างอาร์เรย์ได้ในขณะที่กำลังซิงค์หรือซิงค์ "รอ"


ฉันไม่คิดว่าฉันมีลูกบอลที่จะยกเลิกการซิงค์ซ้ำ ฉันกลัวว่ามันจะไม่เริ่มต้นอีกครั้ง
Tom O'Connor

1
@Tom: นี่เป็นเพียงการซิงค์ปกติที่จะตรวจสอบทุกวันอาทิตย์หากทุกอย่างตรงกัน ถ้ามันถูกหยุด (เช่นโดยการปิดเครื่อง) มันจะยังคงอยู่ในการบูทครั้งต่อไป
Adam5

โอวตกลง. ไม่เป็นไรแล้ว
Tom O'Connor

คำตอบ:


48

ถ้าอาเรย์ของคุณmd0นั้นecho "idle" > /sys/block/md0/md/sync_action

'ไม่ได้ใช้งาน' จะหยุด resync / การกู้คืนที่ใช้งานอยู่ ฯลฯ ไม่รับประกันว่า resync / การกู้คืนอื่นอาจไม่เริ่มต้นโดยอัตโนมัติอีกครั้งแม้ว่าเหตุการณ์บางอย่างจะต้องเรียกสิ่งนี้

http://www.mjmwired.net/kernel/Documentation/md.txt#477


ฉันสามารถอัปเดตไฟล์ข้อความหลังจากเปลี่ยนการอนุญาต แต่เนื้อหาของไฟล์ถูกเปลี่ยนกลับเป็น "resync" จากด้านหลังในอินสแตนซ์เดียวกัน และ resync จะดำเนินการต่อที่อาร์เรย์อื่น ๆ (ซึ่งก่อนหน้านี้ "ค้างอยู่") เมื่อฉันเขียน "ไม่ได้ใช้งาน" ไปยังไฟล์ของอาเรย์อื่นมันจะสลับอีกครั้ง แต่จะไม่หยุด
Adam5

2
หากคุณมีการโจมตีหลายครั้ง: echo idle | sudo tee / sys / block / md * / md / sync_action
Ole Tange

ที่จริง "ว่าง" เท่านั้นหยุดการตรวจสอบชั่วคราว "เช็ค" ถัดไปจะทำต่อที่ /sys/block/md0/md/sync_min’. To reset this write 0` กับไฟล์นี้
rudimeier

33

ฉันต้องการชะลอหรือหยุดกระบวนการซิงค์ชั่วคราวเพื่อบันทึก I / O บางอย่างเพื่อสำรองข้อมูลบางอย่างในคอมพิวเตอร์เครื่องอื่น หัวข้อนี้ช่วยฉัน แต่ฉันพบวิธีแก้ไขปัญหาอื่น

ใน Debian Lenny ของฉัน:

  • echo "idle" > /sys/block/md0/md/sync_action ใช้งานได้ แต่กระบวนการ resync จะเริ่มต้นใหม่ทันที

  • checkarray -x --all : ใช้งานได้ แต่ให้ผลเหมือนกัน: กระบวนการ resync จะเริ่มต้นใหม่ทันที

ดังนั้นฉันใช้วิธีนี้: echo 0 > /proc/sys/dev/raid/speed_limit_max


1
แนวทางที่น่าสนใจ ฉันพบว่าคุณต้องลดค่าใน speed_limit_min ด้วย
Diomidis Spinellis

1
ฉันต้องตั้งค่าspeed_limit_minเป็น 0 เพื่อหยุดการซิงค์ซ้ำทั้งหมด
njahnke

12

คุณสามารถยกเลิกการซิงค์อาเรย์ใหม่ได้โดยใช้ลำดับของคำสั่งต่อไปนี้

echo frozen > /sys/block/md0/md/sync_action
echo none > /sys/block/md0/md/resync_start
echo idle > /sys/block/md0/md/sync_action

โปรดทราบว่านี้อาจจะออกจากอาร์เรย์ของคุณอยู่ในสถานะที่ไม่สอดคล้องกัน อย่าทำเช่นนี้จนกว่าคุณจะแน่ใจว่าอาร์เรย์อยู่ในสภาพดีและรันการซิงค์อีกครั้งในภายหลัง

(เครดิตที่เครดิตครบกำหนด: พบคาถานี้ในชุดข้อความนี้)


8

ดังกล่าวข้างต้นบนระบบ Debian / Ubuntu /etc/cron.d/mdadmสคริปต์จะเรียกใช้/usr/share/mdadm/checkarrayสคริปต์เพื่อเริ่มการตรวจสอบการซิงค์อีกครั้ง

สคริปต์นี้มีตัวเลือกสำหรับการยกเลิกการตรวจสอบการซิงค์ทั้งหมดที่ทำงานอยู่:

/usr/share/mdadm/checkarray -x --all

3

ไม่แน่ใจเกี่ยวกับวิธีการยกเลิกการซิงค์อีกครั้ง แต่กำหนดการถูกควบคุมโดย/etc/cron.d/mdadmระบบ Debian / Ubuntu

สคริปต์/usr/share/mdadm/checkarrayอาจทำให้เกิดแสงสว่างในส่วนอื่น ๆ ของคำถามของคุณเนื่องจากเป็นสิ่งที่ถูกเรียกโดย cron


3

หากอุปกรณ์ md ของคุณคือ md0 และคุณต้องการหยุดการเขียน resync อีกครั้ง:

echo "idle" > /sys/block/md0/md/sync_action

3

วิธีแก้ปัญหาที่เป็นไปได้นี้ใช้เวลาสักครู่เพื่อรับรายละเอียด

ระบบของฉัน: CentOS 6.5 mdadm v3.3.2

ตรวจสอบอย่างต่อเนื่องทุกสัปดาห์ต้องการหยุดหนึ่งในนั้น RAID สะอาดตรวจสอบถูกเรียกผ่านสคริปต์ /etc/cron.d/raid-check ซึ่งทำงานทุกสัปดาห์

หากต้องการยกเลิกการตรวจสอบคุณใช้ฟังก์ชัน --misc --action สมมติว่าอุปกรณ์ RAID คือ / dev / md0 และนี่เป็นเพียงการตรวจสอบความสอดคล้องรายสัปดาห์และไม่ใช่ความล้มเหลวของอุปกรณ์คุณจะเป็นผู้รูท:

mdadm --misc --action = idle / dev / md0

เพื่อเริ่มการตรวจสอบความสอดคล้อง

mdadm --misc --action = check / dev / md0


2
echo "idle" > /sys/block/md0/md/sync_action

ไม่ทำงานเมื่อ / sys / block / md * / md / sync_action เป็น "resync" (ซึ่งแตกต่างจากสถานะเป็น "ตรวจสอบ" หรือ "ซ่อมแซม" คุณสามารถ echo "idle" ลงในไฟล์ sync_action ได้ แต่จะไม่มีผลกับ ความคืบหน้าไฟล์เอกสารเคอร์เนลนี้ที่นี่อย่างไม่ถูกต้องระบุว่ามันจะทำงาน แต่มันไม่เคยทำงานให้ฉัน:

'ไม่ได้ใช้งาน' จะหยุด resync / การกู้คืนที่ใช้งานอยู่ ฯลฯ ไม่รับประกันว่า resync / การกู้คืนอื่นอาจไม่เริ่มต้นโดยอัตโนมัติอีกครั้งแม้ว่าเหตุการณ์บางอย่างจะต้องเรียกสิ่งนี้


1
อย่างไรก็ตามคุณสามารถกำหนดอัตรา "resync" ด้วย / sys / block / md * / md / sync_speed_max ในสถานะนี้ ฉันไม่แน่ใจว่าทำไม Documenation ไม่ถูกต้องอาจจะไม่มีใครรู้
ไบรอัน

โปรดสละเวลาสักครู่เพื่อเรียนรู้ไวยากรณ์Markdown Stack Exchange ( meta.serverfault.com/editing-help )
Sven

0

ฉันรู้ว่านี่เป็นโพสต์เก่า 4 ปี แต่คุณสามารถทำได้ (สมมติว่า md0 เป็น array และ sdb4 เป็น resyncing "disk"):

    mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4

คำสั่งนี้แสร้งทำเป็น sdb4 เป็นดิสก์ที่ล้มเหลวดังนั้นจึงเตะจากอาร์เรย์หยุดการซิงค์ซ้ำ หากไม่มีข้อผิดพลาดระหว่างการดำเนินการ resync-stop คำสั่งนี้จะลบ sdb4 ออกจากอาร์เรย์ md0 หากมีข้อผิดพลาดใด ๆ แสดงว่าดิสก์อยู่ในสถานะล้มเหลว แต่ยังคงอยู่ในอาร์เรย์

หากคุณล้มเหลวในดิสก์ที่ใดก็ได้ในmdadmคุณตั้งค่ามันล้มเหลวทางตรรกะ ถ้าอาเรย์นั้นสะอาด (ไม่ลดลง) แสดงว่าดิสก์อยู่ในสภาพที่สอดคล้องกันและสามารถเพิ่มได้อีกครั้งโดย - เพิ่ม << disk >> - ตัวเลือกที่สะอาดโดยไม่ต้องกลัว หากมีการกระทำใด ๆหลังจากที่แยกออก (เช่น resync สร้างใหม่หรือแม้กระทั่งการเขียน) จากนั้น - ทำความสะอาดสมมติว่าจะ probalby ล้มเหลวและเริ่มการดำเนินการ resync ทันที

การเปลี่ยนแปลงraid.speed_limit_minและraid.speed_limit_maxเป็นความคิดที่ไม่ดีเพราะมันไม่เพียงส่งผลกระทบต่อความเร็วในการซิงค์ / สร้างใหม่ แต่ยังรวมถึงความเร็วในการทำงานปกติและอาจเป็นไปได้ว่าคุณจะสูญเสียประสิทธิภาพที่ได้รับจากการใช้อาร์เรย์ RAID


5
ฉันคิดว่าเป็นความคิดที่ดีที่จะลบดิสก์ที่มีประโยชน์จาก RAID เวลาส่วนใหญ่นั้นอาจไม่ทำให้เกิดปัญหาใด ๆ แต่ทุกครั้งที่คุณทำมีความเสี่ยงที่จะทำให้ข้อมูลสูญหายหรือข้อมูลเสียหาย
kasperd

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