web-dev-qa-db-ja.com

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

8個のディスクが10個あります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です。これは正しいです? this (そして私が正しく理解していれば)によれば、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と同じである必要があると思います。

[〜#〜] edit [〜#〜]:私の混乱は、主にストライプに接続された用語のさまざまな使用法に基づいているようです。私のRAIDコントローラーの製造元、LSIまたはAvago 次のように用語を定義します

ストライプ幅

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

ストライプサイズ

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

ストリップサイズ

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

Wikipedia (そして [〜#〜] ibm [〜#〜] )は他の定義を使用しているようです:

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

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

ウィキペディアのテキストでも、ストライプサイズは2つの異なる意味で使用されています。ただし、xfsファイルシステムを作成するときに、単一のドライブに格納されている単一のチャンクのサイズをsuの引数として指定する必要があると思います。これは、mkfs.xfs -d su=256k,sw=8上記のコマンドで。正しい?

10
sebschub

「ストリップサイズ」と「ストライプサイズ」ではなく、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のストリップサイズを報告している場合は、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_infoおよびmkfs.xfssunitおよびswidthを512Bセクターの単位で指定されていると解釈します。残念ながら、それは彼らが報告されたユニットではありません。 xfs_infoおよびmkfs.xfs 512Bセクターではなく、基本ブロックサイズ(bsize)の倍数でそれらを報告します。

TL; DR:

これらを指定する最も簡単な方法は、通常、ストリップサイズとスピンドル数によって、したがってsu=ストリップサイズとsw=スピンドル数。

12
Michael Hampton

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

古い質問ですが、同じ間違いから他の検索者を救ってください。

1
mwk