นี่คือ "ความต่อเนื่อง" ของคำตอบของ ewwhite:
คุณจะต้องเขียนข้อมูลของคุณไปยัง zpool ที่ขยายเพิ่มอีกครั้งเพื่อปรับสมดุล
ฉันเขียนสคริปต์ PHP ( มีอยู่บน github ) เพื่อทำสิ่งนี้บน Ubuntu 14.04 ของฉันโดยอัตโนมัติ
มีเพียงแค่ต้องการติดตั้งเครื่องมือ PHP CLI ด้วยsudo apt-get install php5-cli
และเรียกใช้สคริปต์ผ่านเส้นทางไปยังข้อมูลกลุ่มของคุณเป็นอาร์กิวเมนต์แรก เช่น
php main.php /path/to/my/files
เป็นการดีที่คุณควรเรียกใช้สคริปต์สองครั้งในข้อมูลทั้งหมดในกลุ่ม การเรียกใช้ครั้งแรกจะทำให้เกิดความสมดุลในการใช้งานไดรฟ์ แต่ไฟล์แต่ละไฟล์จะได้รับการจัดสรรมากเกินไปไปยังไดรฟ์ที่ถูกเพิ่มล่าสุด การรันครั้งที่สองจะทำให้แน่ใจว่าแต่ละไฟล์จะ "กระจาย" อย่างเป็นธรรมในไดรฟ์ ฉันพูดอย่างยุติธรรมแทนที่จะให้เท่า ๆ กันเพราะมันจะกระจายเท่า ๆ กันถ้าคุณไม่ได้ผสมความจุของไดรฟ์เพราะฉันกับการจู่โจม 10 คู่ที่มีขนาดต่างกัน (กระจก 4tb + 3TB กระจก + 3TB กระจก)
เหตุผลในการใช้งานสคริปต์
- ฉันต้องแก้ไขปัญหา "ในสถานที่" เช่นฉันไม่สามารถเขียนข้อมูลออกไปยังระบบอื่นลบได้ที่นี่และเขียนข้อมูลทั้งหมดกลับมาอีกครั้ง
- ฉันเติมเต็มพูลของฉันเกิน 50% ดังนั้นฉันจึงไม่สามารถคัดลอกทั้งระบบไฟล์พร้อมกันก่อนที่จะลบต้นฉบับ
- หากมีไฟล์บางไฟล์ที่ต้องทำงานได้ดีแล้วก็สามารถเรียกใช้สคริปต์ได้สองครั้งเหนือไฟล์เหล่านั้น อย่างไรก็ตามการรันครั้งที่สองจะมีผลก็ต่อเมื่อการรันครั้งแรกได้รับการจัดการเพื่อให้เกิดความสมดุลในการใช้งานไดรฟ์
- ฉันมีข้อมูลจำนวนมากและต้องการเห็นการบ่งชี้ความคืบหน้า
ฉันจะบอกได้อย่างไรว่าถึงแม้การใช้งานไดรฟ์จะทำได้หรือไม่
ใช้เครื่องมือ iostat ในช่วงเวลาหนึ่ง (เช่นiostat -m 5
) และตรวจสอบการเขียน หากพวกเขาเหมือนกันคุณก็จะประสบความสำเร็จได้ พวกเขาไม่ได้สมบูรณ์แบบแม้กระทั่งในภาพหน้าจอด้านล่างเพราะฉันใช้งานคู่ของ 4TBs กับไดรฟ์ 3TB 2 คู่ใน RAID 10 ดังนั้นทั้งสองของ 4 จะถูกเขียนเพิ่มขึ้นเล็กน้อย
หากการใช้งานไดรฟ์ของคุณ "ไม่สมดุล" iostat จะแสดงภาพหน้าจอด้านล่างซึ่งมีการเขียนไดรฟ์ใหม่ให้ไม่สมส่วน คุณสามารถบอกได้ว่าพวกเขาเป็นไดรฟ์ใหม่เพราะการอ่านอยู่ที่ 0 เพราะพวกเขาไม่มีข้อมูล
สคริปต์ไม่ได้สมบูรณ์แบบเพียงวิธีแก้ปัญหาเท่านั้น แต่มันทำงานได้ดีสำหรับฉันในขณะนี้จนกระทั่ง ZFS วันหนึ่งใช้คุณลักษณะการปรับสมดุลเช่น BTRFS มี (นิ้วไขว้)