ทำให้ลายทางเป็นแบบถาวร


15

ฉันทำ

echo 8192 > /sys/block/md0/md/stripe_cache_size

เพื่อปรับปรุงประสิทธิภาพ RAID ของฉันและช่วยได้มาก

แต่ฉันก็ยังไม่สามารถหาวิธีที่จะทำให้มันถาวร

ฉันพยายามตั้งค่าเป็น /etc/rc.local - คำสั่งอื่น ๆ จะถูกดำเนินการ แต่มันถูกเขียนทับเป็น 256 ที่อื่น ... คำแนะนำใด ๆ ?


โพสต์ความคิดเห็นใหม่จากคำตอบของฉันด้านล่าง; ฉันไม่แน่ใจว่าคุณเห็นหรือไม่เนื่องจากฉันไม่แน่ใจว่า StackExchange ทำงานอย่างไร: อืมม ... ฉันไม่มี RAID ดังนั้นมันจึงเป็นช็อตที่ยาวนาน แต่คุณสามารถลอง 'grep -R 256 / etc / init.d 'และ' grep -R Stripe_cache_size /etc/init.d 'หรือไม่
zpletan

1
แพ็คเกจ sysfsutils ช่วยแก้ปัญหาของคุณหรือไม่?
zpletan

คำตอบ:


16

เพิ่มกฎ udev เช่นไปที่/etc/udev/rules.d/60-md-stripe-cache.rules:

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

ฉันไม่ได้ลองทำสิ่งนี้จริง ๆ แล้วมันอาจจะไม่ถูกต้อง 100% (อาจเป็นตัวพิมพ์ผิด) แต่มันควรจะปิด ตรวจสอบman udevเพื่อทำความเข้าใจเพิ่มเติม

คุณอาจต้องการเรียกใช้คำสั่งต่อไปนี้ในภายหลังเพื่อใช้กฎใหม่ทันที:

udevadm trigger
udevadm control --reload-rules

1
ขอบคุณมากนี่เป็นทางออกที่สมบูรณ์แบบในที่สุด :-) ไวยากรณ์ก็โอเคฉันต้องเพิ่ม 60- ก่อนชื่อและสร้าง ramfs ใหม่
BarsMonster

1
ขอบคุณ ฉันไม่อยากเชื่อว่านี่จะเป็นปัญหาใน Ubuntu 13.10 เพิ่งไปจาก <10MB / s และทำแฮงค์ให้สมบูรณ์> 100MB / s ในขณะที่คัดลอกจาก RAID ที่เข้ารหัสหนึ่งไปยังอีกเพียงแค่เปลี่ยนขนาดแคชของแถบเป็นค่าใจกว้างมากขึ้น
frostschutz

เพียงเพื่อให้ชัดเจนสำหรับผู้อื่น: ในระบบ Ubuntu ที่ทันสมัยอย่างน้อย (17.04 ในกรณีของฉัน) หรืออาจเป็นอย่างอื่นคุณต้องสร้าง initramfs ของคุณใหม่ ("sudo update-initramfs -u") หลังจากสร้างกฎใหม่นี้แล้ว มีผลโดยอัตโนมัติ
ไบรอันเฮนรี่

1

เพียงเพื่อขยายในโพสต์ล่าสุด; สคริปต์ที่อยู่ภายใต้ใช้งานได้สำหรับฉัน เพียงสลับรายละเอียดระหว่าง "<... >" สนุก!


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#################NOTE######################
##  You are limited by CPU and memory too #
##  <Your Name> <Date of Modification>    #
##  stripe cache size and read-ahead      #
###########################################
echo 16384 > /sys/block/<Your RAID5 or 6 Volume>/md/stripe_cache_size
blockdev --setra 16384 /dev/<Your RAID5 or 6 Volume>

exit 0

3
อย่าพูดว่า "เพียงแค่ขยายในโพสต์สุดท้าย" เพราะคำตอบมักจะได้รับการจัดอันดับด้วยคะแนนโหวตดังนั้นคำตอบของคุณอาจปรากฏขึ้นเหนือคำตอบที่คุณอ้างถึง อ้างถึงโพสต์โดยชื่อผู้เขียน มันชัดเจนกว่ามาก
Warren Hill

0

ฉันยังพยายามที่จะคิดออกนี้ ฉันใส่ของฉันใน rc.local และไม่มีโชค ฉันเริ่มต้นด้วยตนเองหลังจากเข้าสู่ระบบฉันคิดว่าคุณสามารถเขียนสคริปต์เพื่อจัดการเรื่องนี้และวางไว้ใน "การสมัครใช้งานเริ่มต้น" ของคุณ แต่นั่นไม่ได้ช่วยอะไรเลยถ้าคุณไม่ได้เข้าสู่ระบบ gnome


มันเป็นเซิร์ฟเวอร์อูบุนตูจึงไม่มีโชคนี่
BarsMonster

0

แพ็คเกจ sysfsutils ช่วยแก้ปัญหาของคุณหรือไม่?

คำตอบเดิม:

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

คุณสามารถโพสต์ (หรือ pastebin ถ้ามันยาว) ผลลัพธ์ของ

grep -R md0 /etc/init.d

ไม่พบสิ่งใดที่นั่น
BarsMonster

อืม ... ฉันไม่มี RAID ดังนั้นมันจึงค่อนข้างไกล แต่คุณสามารถลอง 'grep -R 256 /etc/init.d' และ 'grep -R Stripe_cache_size /etc/init.d' ได้หรือไม่
zpletan

ทั้งสองไม่มีผลลัพธ์กลับมา
BarsMonster

0

ฉันไม่มีคำตอบที่แท้จริงสำหรับคุณ แต่บางทีคุณอาจลองสร้างสคริปต์เริ่มต้นง่ายๆ สร้างไฟล์ใน / etc / init ด้วยนามสกุล. config ในไฟล์ใส่:

start on started tty1

exec echo 8192 > /sys/block/md0/md/stripe_cache_size

ความคิดของฉันคือการที่ควรรันคำสั่งในช่วงเวลาที่เทอร์มินัลเริ่มทำงานซึ่งอาจเป็นเวลาเดียวกันกับที่คุณกำลังรันคำสั่ง


ฉันได้ลองใส่มันในสคริปต์เริ่มต้น (rc.local) และสิ่งนี้ไม่ได้ช่วย นอกจากนี้เนื่องจากเป็นเซิร์ฟเวอร์ Ubuntu จึงไม่มีเทอร์มินัลหลังจากรีบูต AFAIK
BarsMonster

ฉันเสนอสิ่งนี้เป็นทางเลือกแทนวิธี rc.local บางทีมันอาจจะเริ่มในภายหลัง ฉันไม่รู้จริงๆว่า
user1974

สำหรับการขาดอาคารฉันไม่มีความคิด ทำไมเซิร์ฟเวอร์ถึงไม่มี ttys หลังจากเริ่มทำงาน? เราหมายถึงสิ่งเดียวกันเมื่อเราพูด terminal? ไม่ว่าคุณจะใช้บริการที่แตกต่างกันเพื่อทริกเกอร์คำสั่งเพียงแค่เปลี่ยนtty1
user1974

0

การถ่ายภาพโดยรวมในที่มืดเนื่องจากฉันไม่มีการติดตั้ง RAID 5 เพื่อทดสอบด้วย: อาจเพิ่มบรรทัดด้วย

chmod -w /sys/block/md0/md/stripe_cache_size

ใน rc.local เพื่อลบสิทธิ์การเขียนหลังจากที่ตั้งค่าไว้ บางทีนั่นอาจจะทำให้มันหยุดการเปลี่ยนแปลงที่อื่นได้บ้าง?


ความคิดที่ดี แต่ดูเหมือนว่ามีบางอย่างผิดพลาดในกระบวนการบูตของ Ubuntu: -S ฉันจะลองและโพสต์วันนี้
BarsMonster

ไม่ได้ช่วย: - |
BarsMonster

0

ผนวก

echo 8192 > /sys/block/mdX/md/stripe_cache_size

/etc/rc.localไปยัง


ดูคำถาม - นี่เป็นสิ่งแรกที่ฉันได้ลองและมันใช้งานไม่ได้เห็นได้ชัดว่า md-driver ถูกเริ่มต้นใหม่หรือบางสิ่งหลังจาก rc.local ถูกเรียกใช้งาน
BarsMonster

-1

หน้านี้แสดงให้เห็นว่าควรมีการตั้งค่าขนาดแถบ (หรือความกว้าง) เมื่อตั้งค่า fs บางทีอุโมงค์อาจช่วยได้ที่นี่


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