เป็นไปได้ไหมที่จะเปลี่ยนขนาดเซกเตอร์ของพาร์ติชั่นสำหรับ zfs raidz pool ใน linux?


9

ฉันได้ทำการโยกย้าย zfs raidz pool บน linux ไปยังดิสก์ใหม่ผ่านอุปกรณ์เสมือนซึ่งเป็นไฟล์ที่กระจัดกระจาย ฉันใช้พาร์ติชั่นบนแผ่นดิสก์เพราะแผ่นแต่ละแผ่นมีขนาดต่างกัน 1.9T ดิสก์สุดท้ายที่จะเพิ่มคือดิสก์ 4Tb และฉันแบ่งพาร์ติชันเป็นดิสก์อื่นที่มีพาร์ติชัน 1.9T เพื่อเพิ่มลงในพูล กำลังใช้ตารางพาร์ติชัน GPT เมื่อฉันพยายามแทนที่ไฟล์ล่าสุดด้วยพาร์ติชัน 1.9T ในดิสก์ 4T ฉันได้รับต่อไปนี้

zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 
cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment

ฉันจะเปลี่ยนขนาดเซกเตอร์ของพาร์ติชันเป็น 512 เหมือนขนาดอื่นได้หรือไม่สามารถเปลี่ยนอุปกรณ์พูลอื่นเป็น 4024 ได้ เห็นได้ชัดว่าขนาดเซกเตอร์ตรรกะทั้งหมด 512

cat /sys/block/sdd/queue/hw_sector_size
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

เนื่องจากฉันได้แบ่งดิสก์ที่มีอุปกรณ์ที่ใช้ไฟล์ต้นฉบับที่ 4 ซึ่งฉันพยายามแทนที่ แต่มันไม่ทำงานฉันจึงสร้างไฟล์อุปกรณ์ขึ้นใหม่เพื่อให้สามารถใช้งานได้ในปัจจุบัน

สถานะ zpool:

NAME                            STATE     READ WRITE CKSUM
zfs_raid                        DEGRADED     0     0     0
  raidz1-0                      DEGRADED     0     0     0
    sda3                        ONLINE       0     0     0
    sdc2                        ONLINE       0     0     0
    sdb1                        ONLINE       0     0     0
    replacing-3                 OFFLINE      0     0     0
      /zfs_jbod/zfs_raid/zfs.2  OFFLINE      0     0     0
      /mnt/butter2/zfs.4        ONLINE       0     0     0  (resilvering)

คุณไม่สามารถทำแทน zfs ได้แนบ zfs_raid <file> <device> และหลังจากซิงค์ zfs แยก zfs_raid <file>
BitsOfNix

จะไม่แนบอุปกรณ์ที่ 5 ขยายอาร์เรย์กลับไม่ได้ใช่ไหม หรือคุณอาจหมายถึงการเติมอะไหล่?
barrymac

ไม่เพิ่มอะไหล่หรือเพิ่มดิสก์ใหม่โดยใช้ zpool แนบพูล old_device new_device สิ่งนี้จะทำมิรเรอร์ old_device ไปยัง new_device จากนั้นคุณแยก old_device ออกจากมิเรอร์ของคุณหลังจากตัวเรล: docs.oracle.com/cd/E26502_01/html/E29007/ gayrd.html # scrolltoc <- ข้อมูลเกี่ยวกับสิ่งที่แนบ / แยกออกและความแตกต่างระหว่างการเพิ่มและการแนบ
BitsOfNix

ที่ดูมีแนวโน้มโดยโชคร้ายกลับ "ไม่สามารถแนบ / dev / sdd1 เพื่อ /zfs_jbod/zfs_raid/zfs.2: สามารถแนบกับกระจกและดิสก์ระดับบนสุดเท่านั้น"
barrymac

คุณสามารถใส่สถานะ zpool ปัจจุบันของคุณเพื่อส่งออก zfs_raid เพื่อดูรูปแบบการโจมตีได้หรือไม่?
BitsOfNix

คำตอบ:


4

ฉันพบตัวเลือกที่จำเป็น! ขณะนี้พูลกำลัง resilvering พาร์ติชันใหม่หลังจากออกคำสั่งต่อไปนี้:

 zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1

แม้ว่าจะเป็นไปได้ แต่ก็ไม่แนะนำให้เลือกเพราะคุณจะได้รับประสิทธิภาพที่แย่มากโดยการบังคับให้เขียนไดรฟ์ชนิด 4k เป็น 512b ฉันได้เรียนรู้วิธีที่ยากที่ควรเพิ่ม

-o ashift=12 

เมื่อสร้างพูลเพื่อหลีกเลี่ยงไม่ต้องสร้างใหม่ในภายหลังเนื่องจากไม่สามารถ 'ย้าย' เป็นขนาดเซกเตอร์ 4k ในขณะนี้

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