xfs บน lvm บนฮาร์ดแวร์ RAID: แก้ไขพารามิเตอร์ได้หรือไม่


10

ฉันมี 10 ดิสก์ที่มี 8 TB แต่ละตัวใน RAID6 ฮาร์ดแวร์ (ดังนั้น 8 ดิสก์ข้อมูล + 2 พาริตี้) ตามคำตอบของคำถามที่คล้ายกันมากฉันหวังว่าจะตรวจหาพารามิเตอร์ที่จำเป็นทั้งหมดโดยอัตโนมัติ อย่างไรก็ตามเมื่อสร้างระบบไฟล์ XFS ในตอนท้ายฉันก็ได้

# mkfs.xfs /dev/vgdata/lvscratch 
meta-data=/dev/vgdata/lvscratch  isize=256    agcount=40, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10737418200, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

ดูเหมือนว่าแถบดังกล่าวไม่ได้ถูกใช้งาน เนื่องจากคำต่าง ๆ ที่ฉันพบในไซต์ต่าง ๆ (ขนาดแถบ, ขนาดแถบ, แถบแถบ, ... ), ฉันต้องการถามว่าฉันได้รับพารามิเตอร์ด้วยตนเองหรือไม่

RAID 6 ได้รับการตั้งค่าด้วยขนาดแถบ 256KB:

# ./storcli64 /c0/v1 show all | grep Strip
Strip Size = 256 KB

ดังนั้นขนาดแถบคือ 8 * 256KB = 2048KB = 2MB ถูกต้องหรือไม่ ตามนี้ (และถ้าฉันเข้าใจมันอย่างถูกต้อง) pvcreateมีการใช้ขนาดแถบ (หรืออัน) เป็นอาร์กิวเมนต์เพื่อdataalignment:

# pvcreate --dataalignment 256K /dev/sdb
  Physical volume "/dev/sdb" successfully created

โปรดทราบว่าฉันใช้อุปกรณ์ RAID ทั้งหมดโดยไม่มีพาร์ติชัน ตอนนี้

# vgcreate vgdata /dev/sdb
  Volume group "vgdata" successfully created

ด้วยค่าเริ่มต้น PE ขนาด 4 เมกะไบต์ควรปรับเนื่องจากขนาดของแถบเป็น 2MB แก้ไข?

ตอนนี้ส่วนหนึ่งของ vgroup ถูกกำหนดให้กับโลจิคัลวอลุ่ม:

# lvcreate -L 40T vgdata -n lvscratch 
  Logical volume "lvscratch" created.

สุดท้ายระบบไฟล์จะถูกสร้างขึ้น แต่ตอนนี้มีอาร์กิวเมนต์ที่ถูกต้อง (ขนาดสไทรพ์ของ 2MB, ความกว้างสตริป 8):

# mkfs.xfs -d su=2048k,sw=8 /dev/vgdata/lvscratch 
meta-data=/dev/vgdata/lvscratch  isize=256    agcount=41, agsize=268434944 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10737418240, imaxpct=5
         =                       sunit=512    swidth=4096 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

วิธีนี้ถูกต้องหรือไม่ มีสิ่งใดที่ต้องคำนึงถึงสำหรับการขยายโลจิคัลวอลุ่มหรือกลุ่มวอลุ่มหรือไม่? ฉันสมมติว่าหากกลุ่มวอลุ่มจะถูกขยายด้วยระบบ RAID6 อื่นขนาดของแถบควรเท่ากับ RAID6 ปัจจุบัน

แก้ไข : ความสับสนของฉันดูเหมือนจะขึ้นอยู่กับการใช้งานที่แตกต่างกันของคำที่เชื่อมต่อกับแถบ ผู้ผลิตของคอนโทรลเลอร์ RAID ของฉัน, LSI หรือ Avago กำหนดเงื่อนไขด้วยวิธีดังต่อไปนี้ :

แถบกว้าง

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

ขนาดลาย

ขนาดสไทรพ์คือความยาวของเซกเมนต์ข้อมูลแบบแทรกที่คอนโทรลเลอร์ RAID เขียนข้ามไดรฟ์หลาย ๆ ตัวไม่รวมถึงไดรฟ์แบบพาริตี้ ตัวอย่างเช่นให้พิจารณาแถบที่มีเนื้อที่ว่างบนดิสก์ 64 KB และมีข้อมูลอยู่ที่ 16 KB บนดิสก์แต่ละตัวในแถบนั้น ในกรณีนี้ขนาดสตริปคือ 64 KB และขนาดสตริปคือ 16 KB

ขนาดแถบ

ขนาดสตริปเป็นส่วนของสตริปที่อยู่บนไดรฟ์เดียว

Wikipedia (และIBM ) ดูเหมือนจะใช้คำจำกัดความอื่น ๆ :

เซ็กเมนต์ของข้อมูลตามลำดับที่เขียนหรืออ่านจากดิสก์ก่อนที่การดำเนินการต่อบนดิสก์ต่อไปมักจะเรียกว่า chunks, strides หรือหน่วยแถบในขณะที่กลุ่มตรรกะของพวกเขาสร้างการดำเนินงานสไทรพ์เดียวจะเรียกว่าแถบหรือแถบ จำนวนข้อมูลในก้อนเดียว (หน่วยแถบ) ซึ่งมักจะเป็นหน่วยเป็นไบต์เรียกว่าขนาดก้อนขนาดก้าวย่างขนาดแถบความลึกของแถบหรือความยาวแถบ จำนวนข้อมูลดิสก์ในอาเรย์บางครั้งเรียกว่าความกว้างของสไทรพ์ แต่ก็อาจอ้างถึงจำนวนข้อมูลภายในสไทรพ์

จำนวนข้อมูลในหนึ่งก้าวคูณด้วยจำนวนข้อมูลดิสก์ในอาร์เรย์ (เช่นความลึกของแถบคูณความกว้างของแถบซึ่งในการเปรียบเทียบเชิงเรขาคณิตจะให้พื้นที่) บางครั้งเรียกว่าขนาดแถบหรือความกว้างของแถบ การสตริปไวด์เกิดขึ้นเมื่อมีการกระจายของข้อมูลในหลาย ๆ อาร์เรย์ซึ่งอาจเป็นไดรฟ์ทั้งหมดในระบบ การสตริปแคบเกิดขึ้นเมื่อชิ้นส่วนของข้อมูลกระจายไปทั่วไดรฟ์ในอาร์เรย์เดียว

แม้ในข้อความของ Wikipedia ข้างต้นขนาดแถบจะใช้กับความหมายที่แตกต่างกันสองแบบ อย่างไรก็ตามฉันคิดว่าตอนนี้เมื่อสร้างระบบไฟล์ xfs ขนาดของก้อนเดียวที่เก็บไว้ในไดรฟ์เดียวจะต้องได้รับการโต้แย้งเป็น su สิ่งนี้ควรอยู่mkfs.xfs -d su=256k,sw=8ในคำสั่งด้านบน แก้ไข?

คำตอบ:


12

แทนที่จะเป็น "ขนาดสตริป" และ "ขนาดสตริป" หน้า XFS จะใช้คำว่า "สตริปหน่วย" และ "ความกว้างสตริป" ตามลำดับ

สิ่งนี้ทำให้สามารถถอดรหัสข้อความที่สับสนในmkfs.xfs(8)หน้า man:

               sunit=value
                      This is used to specify the stripe unit for  a  RAID
                      device  or  a  logical  volume.  The value has to be
                      specified in 512-byte block units. Use the su subop‐
                      tion  to specify the stripe unit size in bytes. This
                      suboption ensures  that  data  allocations  will  be
                      stripe  unit aligned when the current end of file is
                      being extended and the  file  size  is  larger  than
                      512KiB.  Also inode allocations and the internal log
                      will be stripe unit aligned.

               su=value
                      This is an alternative to using sunit.  The su  sub‐
                      option is used to specify the stripe unit for a RAID
                      device or a striped logical volume. The value has to
                      be  specified  in  bytes,  (usually using the m or g
                      suffixes). This value must  be  a  multiple  of  the
                      filesystem block size.

ดังนั้นเมื่ออาร์เรย์ของคุณรายงานขนาดแถบ 256KiB คุณจะต้องระบุอย่างใดอย่างหนึ่งsu=256Kหรือsunit=512(เนื่องจากบล็อก 512 512- ไบต์เท่ากับ 256KiB)

               swidth=value
                      This  is used to specify the stripe width for a RAID
                      device or a striped logical volume. The value has to
                      be  specified  in  512-byte  block units. Use the sw
                      suboption to specify the stripe width size in bytes.
                      This  suboption  is  required  if  -d sunit has been
                      specified and it has to be  a  multiple  of  the  -d
                      sunit suboption.

               sw=value
                      suboption is an alternative to using swidth.  The sw
                      suboption is used to specify the stripe width for  a
                      RAID  device or striped logical volume. The value is
                      expressed as a multiplier of the stripe  unit,  usu‐
                      ally the same as the number of stripe members in the
                      logical volume configuration, or  data  disks  in  a
                      RAID device.

                      When  a  filesystem  is  created on a logical volume
                      device, mkfs.xfs will automatically query the  logi‐
                      cal volume for appropriate sunit and swidth values.

ด้วย 10 แกนหมุน (8 data, 2 parity) คุณสามารถระบุsw=8(แกนหมุนข้อมูล) หรือswidth=2M(ขนาดสตริปคูณด้วยแกนหมุนข้อมูล)

โปรดทราบว่า xfs_infoและmkfs.xfsตีความsunitและswidthตามที่ระบุไว้ในหน่วยของภาค 512B; อย่างไรก็ตามน่าเสียดายที่ไม่ใช่หน่วยโฆษณาที่รายงาน xfs_infoและmkfs.xfsรายงานเป็นทวีคูณของขนาดบล็อกพื้นฐานของคุณ ( bsize) และไม่ได้อยู่ในเซกเตอร์ 512B

TL; DR:

วิธีที่ง่ายที่สุดในการระบุสิ่งเหล่านี้มักเกิดจากขนาดของแถบและจำนวนแกนดังนั้นsu=ขนาดของแถบและsw=จำนวนแกน


ขอบคุณมากสำหรับการชี้แจง! การใช้ขนาดแถบคำศัพท์ที่แตกต่างกัน (สำหรับก้อนบนดิสก์หนึ่งแผ่นหรือดิสก์ข้อมูลทั้งหมดเข้าด้วยกัน) ค่อนข้างสับสน ... คุณช่วยอธิบายรายละเอียดเกี่ยวกับการใช้แถบขนาดแถบเป็นข้อโต้แย้งpvcreateได้ --dataalignmentหรือไม่?
sebschub

1
การจัดตำแหน่งข้อมูลควรเป็นความกว้างแถบเต็มของคุณในกรณีนี้ 2M และขนาดขอบเขตทางกายภาพของคุณที่คุณใช้vgcreateควรจะเท่ากันหรือหลายเท่า
Michael Hampton

1

โลจิคัลวอลุ่มไม่ได้ถูกสไทรพ์ (-i 8 -I 256k) ดังนั้นระบบไฟล์ xfs ของคุณไม่เห็นอะไรเลยนอกจากดิสก์เดียวที่ต่อเนื่องกัน

คำถามเก่า แต่บันทึกผู้ค้นหาอื่น ๆ จากความผิดพลาดเดียวกัน

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