하드웨어 RAID의 lvm에서 xfs : 올바른 매개 변수?


10

하드웨어 RAID6에 각각 8TB의 디스크 10 개가 있습니다 (따라서 데이터 디스크 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 크기가 4MB 인 경우 스트라이프 크기가 ​​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의 제조자 는 다음과 같은 방식으로 용어를 정의합니다 .

스트라이프 폭

Stripe width는 스트라이핑이 구현되는 드라이브 그룹에 관련된 드라이브 수입니다. 예를 들어, 디스크 스트라이핑이있는 4 디스크 드라이브 그룹의 스트라이프 너비는 4입니다.

스트라이프 크기

스트라이프 크기는 RAID 컨트롤러가 패리티 드라이브를 포함하지 않고 여러 드라이브에 쓰는 인터리빙 된 데이터 세그먼트의 길이입니다. 예를 들어, 64KB의 디스크 공간을 포함하고 스트라이프의 각 디스크에 16KB의 데이터가있는 스트라이프를 고려하십시오. 이 경우 스트라이프 크기는 64KB이고 스트립 크기는 16KB입니다.

스트립 크기

스트립 크기는 단일 드라이브에있는 스트라이프 부분입니다.

Wikipedia (및 IBM )는 다른 정의를 사용하는 것 같습니다.

다음 디스크에서 작업을 계속하기 전에 디스크에 쓰거나 읽은 순차적 데이터 세그먼트를 일반적으로 청크, 보폭 또는 스트라이프 단위라고하며 단일 스트라이프 작업을 형성하는 논리 그룹을 스트립 또는 스트라이프라고합니다. 바이트 단위로 표시되는 한 청크 (스트라이프 단위)의 데이터 양을 청크 크기, 보폭, 스트라이프 크기, 스트라이프 깊이 또는 스트라이프 길이라고합니다. 어레이의 데이터 디스크 수를 스트라이프 너비라고도하지만 스트라이프 내의 데이터 양을 나타낼 수도 있습니다.

한 보폭의 데이터 양에 배열의 데이터 디스크 수 (즉, 기하학적 비유로 면적을 산출하는 스트라이프 깊이 시간 스트라이프 폭)를 곱한 것을 스트라이프 크기 또는 스트라이프 너비라고도합니다. 와이드 스트라이핑은 데이터 청크가 여러 어레이, 시스템의 모든 드라이브에 분산 될 때 발생합니다. 좁은 스트라이핑은 데이터 청크가 단일 어레이의 드라이브에 분산 될 때 발생합니다.

위의 Wikipedia 텍스트에서도 스트라이프 크기는 두 가지 다른 의미로 사용됩니다. 그러나 이제 xfs 파일 시스템을 만들 때 단일 드라이브에 저장된 단일 청크의 크기를 su에 대한 인수로 제공해야한다고 가정합니다. 이것은 mkfs.xfs -d su=256k,sw=8위의 명령에 있어야합니다 . 옳은?

답변:


12

XFS 매뉴얼 페이지는 "스트립 크기"및 "스트라이프 크기"대신 "스트라이프 단위"및 "스트라이프 너비"라는 용어를 각각 사용합니다.

이렇게하면 mkfs.xfs(8)매뉴얼 페이지 에서 혼동되는 텍스트를 해독 할 수 있습니다 .

               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의 스트립 크기를보고하면 512 512 바이트 블록이 256KiB와 같기 때문에 su=256K또는 중 하나를 지정하게됩니다 sunit=512.

               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 개, 패리티 2 개)를 사용하면 sw=8(데이터 스핀들) 또는 swidth=2M스트립 크기에 데이터 스핀들을 곱한 값을 지정할 수 있습니다 .

참고 xfs_infomkfs.xfs해석 sunitswidth512B의 섹터 단위로 지정되는 등; 그러나 불행히도 그들이보고 한 단위는 아닙니다. xfs_info그리고 mkfs.xfs당신의 기본 블록 크기 (의 배수로를보고 bsize512B 분야에서)하지.

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.