เพิ่ม / ลดขนาด RAID เมื่ออัพเกรดขนาดที่มองเห็นได้ของดิสก์


10

ตอนแรกฉันสร้างซอฟต์แวร์ RAID โดยใช้คอนโทรลเลอร์ที่สามารถทำได้เพียง 2TB ต่อดิสก์ ดิสก์คือดิสก์ 3 TB มันใช้งานได้ดี แต่ใช้ดิสก์ 2TB แรกเท่านั้น

ตอนนี้ฉันได้เปลี่ยนคอนโทรลเลอร์เพื่อดูเต็ม 3TB แล้ว ดังนั้นฉันต้องการ/dev/md0ใช้ 1 TB ล่าสุด

ฉันเหนื่อย:

# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 2147479552K

แต่อย่างที่คุณเห็นมันเห็นแค่ 2TB เท่านั้น หากฉันพยายามบังคับให้สูงกว่า:

# mdadm --grow /dev/md0 --size=2147483648
mdadm: Cannot set device size for /dev/md0: No space left on device

ดังนั้นระบบสามารถดูดิสก์ได้ 3TB (ใน/proc/partitions) แต่ RAID ไม่สามารถมองเห็นเป็น 3TB

รายละเอียด mdadm:

# mdadm --detail /dev/md0
/dev/md0:
    Version : 1.2
Creation Time : Fri Mar  2 15:14:46 2012
 Raid Level : raid6
 Array Size : 38654631936 (36863.93 GiB 39582.34 GB)
Used Dev Size : 2147479552 (2048.00 GiB 2199.02 GB)
Raid Devices : 20
Total Devices : 21
Persistence : Superblock is persistent

Update Time : Wed Apr 25 19:47:09 2012
      State : active
Active Devices : 20
Working Devices : 21
Failed Devices : 0
Spare Devices : 1

     Layout : left-symmetric
 Chunk Size : 4096K

       Name : node5:1
       UUID : 8603c3df:b740ba22:8c9c82fd:a18b3133
     Events : 845

Number   Major   Minor   RaidDevice State
  20      65       32        0      active sync   /dev/sds
   1      65       64        1      active sync   /dev/sdu
   2      65       80        2      active sync   /dev/sdv
   3      65       96        3      active sync   /dev/sdw
   4       8      192        4      active sync   /dev/sdm
   5       8       32        5      active sync   /dev/sdc
   6       8       48        6      active sync   /dev/sdd
   7       8       64        7      active sync   /dev/sde
   8       8       80        8      active sync   /dev/sdf
   9       8       96        9      active sync   /dev/sdg
  10       8      112       10      active sync   /dev/sdh
  11       8      128       11      active sync   /dev/sdi
  12       8      144       12      active sync   /dev/sdj
  13       8      160       13      active sync   /dev/sdk
  14       8      176       14      active sync   /dev/sdl
  15       8      208       15      active sync   /dev/sdn
  16       8      224       16      active sync   /dev/sdo
  17       8      240       17      active sync   /dev/sdp
  18      65        0       18      active sync   /dev/sdq
  19      65       16       19      active sync   /dev/sdr

  21      65       48        -      spare   /dev/sdt

ขนาดดิสก์:

# cat /proc/partitions |grep 2930266584
   8       48 2930266584 sdd
   8       32 2930266584 sdc
   8      112 2930266584 sdh
   8       96 2930266584 sdg
   8       80 2930266584 sdf
   8      128 2930266584 sdi
   8      176 2930266584 sdl
   8       64 2930266584 sde
  65       32 2930266584 sds
   8      192 2930266584 sdm
   8      144 2930266584 sdj
  65       80 2930266584 sdv
   8      224 2930266584 sdo
   8      208 2930266584 sdn
   8      160 2930266584 sdk
   8      240 2930266584 sdp
  65        0 2930266584 sdq
  65       64 2930266584 sdu
  65       16 2930266584 sdr
  65       48 2930266584 sdt
  65       96 2930266584 sdw

แก้ไข:

# mdadm --version
mdadm - v3.1.4 - 31st August 2010
# uname -a
Linux lemaitre 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux

RAID6 ใช้ดิสก์แบบเต็ม (เช่นไม่มีพาร์ติชัน)

เช้านี้ระบบล่ม หลังจากรีบูทระบบไม่พบ RAID (ซึ่งแย่มาก) ดิสก์ทั้งหมดปรากฏเป็นสำรอง (S):

cat /proc/mdstat 
Personalities : 
md0 : inactive sdr[20](S) sds[21](S) sdq[18](S) sdp[17](S) sdo[16](S) sdn[15](S) sdl[14](S) sdk[13](S) sdj[12](S) sdi[11](S) sdh[10](S) sdg[9](S) sdf[8](S) sde[7](S) sdd[6](S) sdc[5](S) sdm[4](S) sdv[3](S) sdu[2](S) sdt[1](S)
      42949652460 blocks super 1.2

แม้ที่นี่จะเห็นได้ชัดว่าmdadmไม่พบขนาด 3 TB

mdadm --stop /dev/md0ฉันวิ่ง ลบรายการใน /etc/mdadm/mdadm.conf รัน mdadm -A --scan --forceซึ่งทำให้ RAID ออนไลน์และสร้างใหม่


คุณใช้ 20 ดิสก์ทั้งหมดสำหรับ RAID6 - ถูกต้องหรือไม่ ไม่มีพาร์ติชั่นในแต่ละดิสก์? อะไรfdisk -l /dev/sddแสดง คุณใช้ระบบปฏิบัติการรุ่นใด mdadm-version คืออะไร
นิลส์

คำตอบ:


5

ฉันแหย่ไปรอบ ๆ / sys และเข้าใกล้คำตอบมากขึ้น

# cd /sys/block/md0/md
# cat component_size
2147479552

เห็นด้วยกับสิ่งที่เราเคยเห็นมาก่อน แต่นี่:

# grep . dev-sd*/size
dev-sdc/size:2147482623
dev-sdd/size:2147482623
dev-sde/size:2147482623
dev-sdf/size:2930265560
dev-sdg/size:2147482623
dev-sdh/size:2147482623
dev-sdi/size:2147482623
dev-sdj/size:2147482623
dev-sdk/size:2147482623
dev-sdl/size:2147483648
dev-sdm/size:2147482623
dev-sdn/size:2147482623
dev-sdo/size:2147482623
dev-sdp/size:2147482623
dev-sdq/size:2147482623
dev-sdr/size:2147482623
dev-sds/size:2147482623
dev-sdt/size:2147482623
dev-sdu/size:2147482623
dev-sdv/size:2147482623
dev-sdw/size:2930265560

ดูเหมือนจะอธิบายว่าทำไม RAID เห็นขนาดผิดปกติ: ไดรฟ์ส่วนใหญ่แสดงเป็น 2TB ในขณะที่ 2 ที่ถูกแทนที่แสดงขึ้นเป็น 3TB ไดรฟ์ทั้งหมดเป็นรุ่นเดียวกันดังนั้นให้เราดูถ้าเราสามารถเปลี่ยนขนาดการรับรู้:

# parallel echo 2930265560 \> ::: dev-sd*/size
# grep . dev-sd*/size
dev-sdc/size:2930265560
dev-sdd/size:2930265560
dev-sde/size:2930265560
dev-sdf/size:2930265560
dev-sdg/size:2930265560
dev-sdh/size:2930265560
dev-sdi/size:2930265560
dev-sdj/size:2930265560
dev-sdk/size:2930265560
dev-sdl/size:2930265560
dev-sdm/size:2930265560
dev-sdn/size:2930265560
dev-sdo/size:2930265560
dev-sdp/size:2930265560
dev-sdq/size:2930265560
dev-sdr/size:2930265560
dev-sds/size:2930265560
dev-sdt/size:2930265560
dev-sdu/size:2930265560
dev-sdv/size:2930265560
dev-sdw/size:2930265560

voila Component_size ยังคงมีขนาดเล็กแม้ว่า:

# cat component_size
2147479552

อาจจะสามารถเปลี่ยนแปลงได้โดย mdadm:

# mdadm --grow /dev/md0 --size=max

ขออภัยนี่ล็อคmdadmและการเข้าถึง / dev / md0 ที่ตามมาถูกบล็อค และเพื่อเข้าถึง component_size:

# cat component_size   # This blocks

Sucks แต่ส่วนที่ดีคือใน syslog มันบอกว่า:

Apr 27 20:45:50 server kernel: [124731.725019] md0: detected capacity change from 39582343102464 to 54010589478912

ระบบไฟล์ใน / dev / md0 ยังคงทำงานอยู่

หลังจากรีบูตฉันต้องทำ 'mdadm --grow / dev / md0 --size = max' อีกครั้ง จากนั้นรอresyncให้เสร็จสมบูรณ์ การเข้าถึง / dev / md0 อีกครั้งถูกบล็อค ดังนั้นยังมีการรีบูตอีกครั้งแล้วตามด้วยxfs_growfs /dev/md0การปรับขนาดเสร็จสมบูรณ์


ฉันชอบปลั๊กแบบขนาน (1), Ole :) ขอบคุณสำหรับการสอบสวนเพียงแค่พบเคสที่คล้ายกัน
Michael Shigorin

1
ฉันเดาว่า "mdadm --update = devicesize" ก็ทำเช่นกันดู man page: "นี่จะทำให้ mdadm ระบุจำนวนพื้นที่ที่สามารถใช้งานได้สูงสุดในแต่ละอุปกรณ์และอัพเดทฟิลด์ที่เกี่ยวข้องในข้อมูลเมตา"
rudimeier

3

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

นำชิ้นส่วนสำรองออกจาก md จากนั้นเพิ่มใหม่เข้าไปในชุด RAID เป็นไดรฟ์ใหม่ คุณอาจต้องลบข้อมูลเมตา (ตรวจสอบหน้าคนสำหรับ --zero-superblock หรือล้างดิสก์ทั้งหมด) หากใช้งานได้กับดิสก์เดียวให้ทำซ้ำขั้นตอนสำหรับไดรฟ์ที่เหลือทั้งหมดด้วย ในที่สุดก็ทำ - โกรว์

อย่าลบดิสก์เพิ่มเติมจนกว่าการซิงค์จะเสร็จสิ้น !!


มันไม่ชัดเจนสำหรับฉันถ้าคุณทดสอบว่ามันใช้งานได้จริง การสร้างใหม่ใช้เวลาประมาณ 1.5 วัน การเปลี่ยนไดรฟ์ทั้ง 20 ตัวจะทำให้การใช้งานลดลงตลอดทั้งเดือน เมื่อคุณเขียน "หากใช้งานได้กับดิสก์เดียว" คุณจะทดสอบได้อย่างไรว่าใช้งานได้กับดิสก์แผ่นเดียว
Ole Tange

ไม่ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ฉันเคยเห็นปัญหา md มาก่อนและฉันมีความรู้สึกเกี่ยวกับวิธีการทำงาน ... และล้มเหลว ฉันไม่มีไดรฟ์ที่มีข้อมูลเมตาที่ไม่ดีวางอยู่รอบ ๆ เพื่อทดสอบ ฉันรู้ถึงเวลาที่ซิงค์นานนั่นคือเหตุผลที่ฉันแนะนำให้ใช้อะไหล่ คุณมี RAID6 ซึ่งหมายความว่า 2 ไดรฟ์สามารถล้มเหลวและคุณมีอะไหล่ นั่นหมายถึงไดรฟ์ทั้งหมด 3 ตัวที่อาจล้มเหลวก่อนที่คุณจะประสบปัญหา คุณสามารถตรวจสอบกับไดรฟ์เดียวอย่างน้อยคุณก็รู้ว่านี่เป็นปัญหาของคุณหรือไม่ ฉันมีข้อมูล จำกัด เกี่ยวกับการตั้งค่าของคุณเท่านั้น อย่าดึงไดรฟ์ออกจากชุด RAID หากคุณไม่สะดวกที่จะทำ
jippie

โอ้ฉันเข้าใจคำถามของคุณ mdadm จะเตือนคุณว่าคุณกำลังพยายามเพิ่มอุปกรณ์ที่ใหญ่กว่าอุปกรณ์อื่น ๆ ไม่สนใจสักสองสามไบต์ แต่มันเตือนคุณเมื่อความแตกต่างค่อนข้างใหญ่
jippie

1
คุณสามารถfailไดรฟ์แล้วremoveมันzero-superblockก็จะลบเมตาดาต้า เนื่องจากชุด RAID ของคุณถูกใช้งานคุณสามารถเพิ่มเป็นอะไหล่ได้ซึ่งหมายความว่าจะไม่ซิงค์จนกว่าไดรฟ์อื่นจะล้มเหลว (นั่นเป็นพฤติกรรมปกติ) แต่ใช้งานได้กับไดรฟ์เดียวหรือคุณaddและต้องมีการซิงค์ ฉันรู้ว่ามันต้องใช้ตลอดไป หรือคุณยอมรับความจริงที่ว่าคุณไม่สามารถเพิ่มที่เก็บข้อมูลทั้งหมดที่มีอยู่ได้ ข้อดีอย่างหนึ่งของการใช้ตารางพาร์ติชันซึ่งคุณไม่ได้ทำ ไม่ใช้ตารางพาร์ทิชันไม่เลว แต่ในกรณีนี้จะช่วยคุณได้
jippie

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