ハードウェアRAID上のlvm上のxfs:正しいパラメーター?


10

ハードウェアRAID6にそれぞれ8 TBのディスクが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 は、次のように用語を定義しています

ストライプ幅

ストライプ幅は、ストライピングが実装されているドライブグループに含まれるドライブの数です。たとえば、ディスクストライピングを備えた4つのディスクドライブグループのストライプ幅は4です。

ストライプサイズ

ストライプサイズは、RAIDドライブがパリティドライブを含まない複数のドライブにわたって書き込むインターリーブデータセグメントの長さです。たとえば、64 KBのディスク領域を含み、ストライプ内の各ディスクに16 KBのデータが存在するストライプを考えてみます。この場合、ストライプサイズは64 KBで、ストリップサイズは16 KBです。

ストリップサイズ

ストリップサイズは、1つのドライブに存在するストライプの部分です。

ウィキペディア(およびIBM)は他の定義を使用しているようです:

操作が次のディスクで続行される前にディスクに読み書きされるシーケンシャルデータのセグメントは、通常、チャンク、ストライド、またはストライプユニットと呼ばれ、シングルストライプオペレーションを形成する論理グループは、ストリップまたはストライプと呼ばれます。1チャンク(ストライプユニット)内のデータ量は、多くの場合バイト単位で表され、チャンクサイズ、ストライドサイズ、ストライプサイズ、ストライプ深度、またはストライプ長とさまざまに呼ばれます。アレイ内のデータディスクの数は、ストライプ幅と呼ばれることもありますが、ストライプ内のデータ量を表す場合もあります。

1つのストライドのデータ量にアレイ内のデータディスクの数を掛けたもの(つまり、ストライプの深さ×ストライプ幅。これは、幾何学的な類推では領域を生成します)は、ストライプサイズまたはストライプ幅と呼ばれることがあります。ワイドストライピングは、データのチャンクが複数のアレイ(システム内のすべてのドライブ)に分散している場合に発生します。狭いストライピングは、データのチャンクが1つのアレイのドライブ全体に分散している場合に発生します。

Wikipediaのテキストでも、ストライプサイズは2つの異なる意味で使用されています。ただし、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データ、2パリティ)では、sw=8(データスピンドル)またはswidth=2M(ストリップサイズにデータスピンドルを掛けたもの)を指定します。

なお xfs_infomkfs.xfs解釈sunit及びswidth512Bセクタの単位で指定されるような、残念ながら、それは彼らが報告されたユニットではありません。512Bセクターではなく、基本ブロックサイズ()の倍数でそれらxfs_infomkfs.xfs報告しbsizeます。

TL; DR:

これらを指定する最も簡単な方法は、通常、ストリップサイズとスピンドル数、つまりsu=ストリップサイズとsw=スピンドル数です。


説明してくれてありがとう!用語のストライプサイズ(1枚のディスク上のチャンクまたはすべてのデータディスクのため一緒に)の異なる使用は非常に混乱している...あなたはまたのための引数としてストライプのチャンクサイズの使用法について詳しく説明してもらえpvcreateさん --dataalignment
sebschub

1
データの配置はストライプ幅全体(この場合は2M)であるvgcreate必要があり、使用する物理エクステントサイズは同じか、またはこの倍数である必要があります。
マイケルハンプトン

1

論理ボリュームはストライプ化されていなかったため(-i 8 -I 256k)、xfsファイルシステムには連続した単一のディスクしか表示されません

古い質問ですが、同じ間違いから他の検索者を救います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.