สำหรับผู้ที่สะดุดในคำถามนี้ในปี 2016 ... ใช้ ext4 ฉันลอง btrfs และความแตกต่างนั้นมีนัยสำคัญ ระยะเวลา 10 วันในการเขียน IOs ไปยัง ext4 มีจำนวน 17,800 เซกเตอร์ Btrfs? ภาค 490,400 SSD เดียวกันระบบไฟล์ที่เหมือนกันพาร์ติชันที่แตกต่างกัน โดยทั่วไปปริมาณงานเดียวกัน
ทั้ง ext4 และ btrfs ไป "เงียบ" เมื่อไม่มีกิจกรรมการเขียนบนไดรฟ์ ดีแล้ว.
Ext4 จะเขียนข้อมูลที่แก้ไขรวมทั้งค่าใช้จ่าย ค่าโสหุ้ยเกี่ยวข้องกับข้อมูลที่เขียน การเขียนขนาด 4K (1 บล็อก) จะเพิ่มค่าใช้จ่ายประมาณ 50-80 บล็อกในการส่งครั้งถัดไป (ext4 Journal เปิดใช้งานอย่างสมบูรณ์)
ปรับเปลี่ยนบล็อก 4K หนึ่งบล็อกบน btrfs และคุณจะผลักดันค่าใช้จ่ายระหว่าง 4,000-5,000 บล็อกของค่าใช้จ่ายในการส่งครั้งถัดไป ความมุ่งมั่นเริ่มต้นคือ 30 วินาทีฉันเชื่อ ฉันใช้ 120
ตอนนี้มันขึ้นอยู่กับวิธีที่คุณใช้ SSD ในฐานะที่เป็นรูทมักจะมีระดับคงที่ค่อนข้างต่ำกระแสการเขียนที่เกิดขึ้น ล็อกไฟล์, ไฟล์ดริฟท์ ntp, man db rebuilds, การอัพเดตโทโพโลยี opensm, ฯลฯ ฯลฯ แต่ละเหตุการณ์จะใช้ไดรฟ์ btrfs พร้อมกับการเขียนอีก 4,000-5,000 รายการ
หมายเลข 10 วันข้างต้นใช้สำหรับ "จำกัด การเขียน" ของฉัน ส่วนใหญ่ของภาค 17,800 นั้นเป็นผลมาจากการปรับปรุงระบบขนาดเล็ก หนึ่งสำเนา btrfs ไม่ประสบ นักเขียนของฉันคือ ntp drift, opensm topology และ man db updates (nightly) ไม่มีสิ่งใดที่กระทบกับดิสก์นั้นยกเว้นสิ่งที่เริ่มต้นอย่างแข็งขันเช่นการอัพเกรดระบบvim /etc/whatever
ฯลฯ
สำหรับ SSD ทั้งหมดนั้นจะมีงานเขียนจำนวนมากจริงๆ ฉันไม่สามารถเห็นจุดที่ทำให้พวกเขาสูญเสียเพียงเพราะสื่อมวลชนกำลังไล่ล่ากระต่ายและสายรุ้ง หากคุณต้องการจ่ายราคานี้สำหรับ COW ไปเลย สำหรับ "ประสิทธิภาพ" ไม่มาก มันเป็น SSD และคุณอาจใส่ "ระบบไฟล์" ที่เลวร้ายที่สุดที่คนรู้จักบนมันและยังคงได้ประสิทธิภาพในระดับหนึ่ง - เพียงแค่กำลังดุร้าย Ext4 คือระบบไฟล์ที่แย่ที่สุดที่มนุษย์รู้จัก
ไม่มีการตรวจสอบ fs รายเดือน ลองใช้สคริปต์ด้านล่าง มันเป็นการแฮ็ค 100% จะไม่ทำงานสำหรับ md mountpoints
#! /bin/bash
dev=`cat /proc/mounts | grep " $1 " | awk '{print $1}'`
x=`basename $dev`
vmnam=`lsblk $dev -o MOUNTPOINT,PKNAME | grep "$1" | awk '{print $2}'`
vmx=`vmstat -d | grep $vmnam | awk '{print $8}'`
lbax=`smartctl -a $dev | grep LBA | awk '{print $10}'`
tmpnam=`mktemp XXX`
echo "Tracking device: $dev, mounted on $1 (vmstat on $vmnam)"
tim=`date +%s`
timx=`date +%s`
while true
do
vm=`vmstat -d | grep "$vmnam" | awk '{print $8}'`
lba=`smartctl -a $dev | grep LBA | awk '{print $10}'`
if [ "$vm" != "$vmx" ]
then
tim=`date +%s`
dif=`dc <<< "$vm $vmx - p"`
lbad=`dc <<< "$lba $lbax - p"`
timd=`dc <<< "$tim $timx - p"`
echo `date` " (sec=$timd) writes=$vm (dif=$dif) (lba=$lbad)"
vmx="$vm"
lbax="$lba"
timx="$tim"
find "$1" -mount -newer "$tmpnam" -print | grep -v "/tmp"
touch "$tmpnam"
fi
sleep 1
done
มันจะบอกคุณว่ามีกี่บล็อกที่ถูกเขียนตามตัวไดรฟ์และไฟล์ที่ถูกอัพเดต ต้องการสิทธิ์รูท ดูด้วยตัวคุณเอง ฉันเรียกใช้ SSD บนระบบไฟล์รูทและเรียกใช้สคริปต์ stat.sh ดังนั้น...sudo ./stat.sh /