xfs trên lvm trên RAID phần cứng: tham số chính xác?


10

Tôi có 10 đĩa với 8 TB mỗi đĩa trong RAID6 phần cứng (do đó, 8 đĩa dữ liệu + 2 chẵn lẻ). Theo câu trả lời của một câu hỏi rất giống nhau , tôi hy vọng sẽ tự động phát hiện tất cả các thông số cần thiết. Tuy nhiên, khi tạo hệ thống tệp XFS ở cuối, tôi đã nhận được

# 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

Điều này có vẻ như phân chia đã không được sử dụng. Do các thuật ngữ khác nhau tôi tìm thấy trên các trang web khác nhau (kích thước dải, kích thước sọc, khối sọc, ...), tôi muốn hỏi liệu tôi có nhận được các thông số thủ công không.

RAID 6 đã được thiết lập với kích thước dải 256KB:

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

Do đó, kích thước sọc là 8 * 256KB = 2048KB = 2MB. Điều này có đúng không? Theo điều này (và nếu tôi hiểu chính xác), thì pvcreatephải sử dụng kích thước dải (hoặc đoạn) làm đối số để dataalignment:

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

Lưu ý rằng tôi đã sử dụng toàn bộ thiết bị RAID mà không có phân vùng. Bây giờ một

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

với kích thước PE mặc định là 4MB sẽ ổn vì nó là bội số của kích thước sọc là 2MB. Chính xác?

Bây giờ, một phần của vgroup được gán cho một khối hợp lý:

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

Cuối cùng, hệ thống tệp được tạo nhưng bây giờ với các đối số chính xác (kích thước sọc là 2MB, chiều rộng sọc là 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

Cách tiếp cận này có đúng không? Có bất cứ điều gì cần lưu ý cho việc mở rộng âm lượng hợp lý hoặc nhóm âm lượng không? Tôi cho rằng nếu nhóm âm lượng sẽ được mở rộng với một hệ thống RAID6 khác, kích thước dải phải bằng với RAID6 hiện tại.

EDIT : Sự nhầm lẫn của tôi dường như chủ yếu dựa trên việc sử dụng các thuật ngữ khác nhau được kết nối với sọc. Nhà sản xuất bộ điều khiển RAID của tôi, LSI hoặc Avago, định nghĩa các thuật ngữ theo cách sau :

Sọc rộng

Độ rộng sọc là số lượng ổ đĩa tham gia vào một nhóm ổ đĩa, nơi thực hiện phân chia. Ví dụ, một nhóm ổ đĩa bốn đĩa với dải đĩa có chiều rộng sọc là bốn.

Kích thước sọc

Kích thước sọc là chiều dài của các phân đoạn dữ liệu xen kẽ mà bộ điều khiển RAID ghi trên nhiều ổ đĩa, không bao gồm các ổ đĩa chẵn lẻ. Ví dụ, hãy xem xét một dải chứa 64 KB không gian đĩa và có 16 KB dữ liệu cư trú trên mỗi đĩa trong dải. Trong trường hợp này, kích thước sọc là 64 KB và kích thước dải là 16 KB.

Kích thước dải

Kích thước dải là phần của một dải nằm trên một ổ đĩa.

Wikipedia (và IBM ) dường như sử dụng các định nghĩa khác:

Các phân đoạn dữ liệu tuần tự được ghi hoặc đọc từ đĩa trước khi hoạt động tiếp tục trên đĩa tiếp theo thường được gọi là khối, chuỗi hoặc đơn vị sọc, trong khi các nhóm logic của chúng tạo thành các hoạt động sọc đơn được gọi là dải hoặc sọc. Lượng dữ liệu trong một khối (đơn vị sọc), thường được tính bằng byte, được gọi khác nhau là kích thước khối, kích thước sải chân, kích thước sọc, độ sâu sọc hoặc chiều dài sọc. Số lượng đĩa dữ liệu trong mảng đôi khi được gọi là chiều rộng sọc, nhưng nó cũng có thể đề cập đến lượng dữ liệu trong một dải.

Lượng dữ liệu trong một bước được nhân với số lượng đĩa dữ liệu trong mảng (nghĩa là độ sâu sọc lần chiều rộng sọc, trong tương tự hình học sẽ mang lại một diện tích) đôi khi được gọi là kích thước sọc hoặc chiều rộng sọc. Dải rộng xảy ra khi các khối dữ liệu được trải rộng trên nhiều mảng, có thể là tất cả các ổ đĩa trong hệ thống. Dải hẹp xảy ra khi các khối dữ liệu được trải trên các ổ đĩa trong một mảng duy nhất.

Ngay cả trong văn bản Wikipedia ở trên kích thước sọc được sử dụng với hai ý nghĩa khác nhau. Tuy nhiên, tôi cho rằng bây giờ, khi tạo hệ thống tệp xfs, kích thước của một đoạn đơn được lưu trữ trên một ổ đĩa phải được đưa ra làm đối số cho su. Điều này, nó nên được mkfs.xfs -d su=256k,sw=8trong lệnh trên. Chính xác?

Câu trả lời:


12

Thay vì "kích thước dải" và "kích thước sọc", các trang man XFS sử dụng thuật ngữ "đơn vị sọc" và "chiều rộng sọc" tương ứng.

Điều này cho phép giải mã văn bản khó hiểu khác trong mkfs.xfs(8)trang 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.

Như vậy, với báo cáo mảng của bạn một kích thước dải 256KiB, bạn sẽ xác định một trong hai su=256Khoặc sunit=512(vì 512 512-byte khối bằng 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.

Với 10 trục xoay (8 dữ liệu, 2 chẵn lẻ), bạn sẽ chỉ định sw=8(trục dữ liệu) hoặc swidth=2M(kích thước dải nhân với trục chính dữ liệu).

Lưu ý rằng xfs_infomkfs.xfsgiải thích sunitswidthnhư được chỉ định trong các đơn vị của các lĩnh vực 512B; thật không may, không phải đơn vị họ đã báo cáo, tuy nhiên. xfs_infomkfs.xfsbáo cáo chúng theo bội số của kích thước khối cơ bản của bạn ( bsize) chứ không phải trong các lĩnh vực 512B.

TL; DR:

Cách dễ nhất để xác định chúng thường là theo kích thước dải và số lượng trục chính, do đó su=kích thước dải và sw=số lượng trục chính.


Cảm ơn rất nhiều vì đã làm rõ! Việc sử dụng khác nhau của kích thước sọc hạn (đối với đoạn trên một đĩa hoặc cho tất cả các đĩa dữ liệu với nhau) là khá khó hiểu ... Có thể bạn cũng xin hãy giải thích về việc sử dụng kích thước đoạn sọc như một đối số cho pvcreate's --dataalignment?
sebschub

1
Căn chỉnh dữ liệu phải là chiều rộng sọc đầy đủ của bạn, trong trường hợp này là 2M và kích thước phạm vi vật lý mà bạn sử dụng vgcreatephải giống nhau hoặc là bội số của điều này.
Michael Hampton

1

Âm lượng logic không bị sọc, (-i 8 -I 256k) vì vậy hệ thống tệp xfs của bạn không nhìn thấy gì ngoài một đĩa đơn liền kề

Câu hỏi cũ nhưng lưu người tìm kiếm khác từ cùng một sai lầm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.