Donanım RAID üzerinde lvm üzerinde xfs: doğru parametreler?


10

Bir donanım RAID6'da 8 TB'lık 10 diskim var (bu nedenle 8 veri diski + 2 eşlik). Çok benzer bir sorunun cevabını takiben, gerekli tüm parametrelerin otomatik olarak algılanmasını umdum. Ancak, sonunda XFS dosya sistemi oluştururken,

# 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

Bu şerit kullanılmamış gibi görünüyor. Farklı sitelerde bulduğum farklı terimler nedeniyle (şerit boyutu, şerit boyutu, şerit yığını, ...), manuel parametreleri doğru alıp almadığımı sormak istiyorum.

RAID 6, 256 KB şerit boyutuyla ayarlanmıştır:

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

Böylece, şerit boyutu 8 * 256KB = 2048KB = 2MB'dir. Bu doğru mu? Göre , bu (o doğru anlamak ve benzeri), pvcreateargüman olarak şeridin (veya yığın) boyutu kullanmak zorundadır dataalignment:

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

Tüm RAID aygıtını bölümler olmadan kullandığımı unutmayın. Şimdi bir

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

varsayılan 4MB PE boyutu ile iyi olmalı çünkü 2MB şerit boyutunun katıdır. Doğru?

Şimdi, vgroup'un bir kısmı mantıksal bir birime atanmıştır:

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

Son olarak, dosya sistemi oluşturulur ancak şimdi doğru bağımsız değişkenlerle (şerit boyutu 2 MB, şerit genişliği 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

Bu yaklaşım doğru mu? Mantıksal birimin veya birim grubunun bir uzantısı için akılda tutulması gereken bir şey var mı? Birim grubu başka bir RAID6 sistemiyle genişletilecekse, şerit boyutunun mevcut RAID6'ya eşit olması gerektiğini düşünüyorum.

EDIT : Benim karışıklık esas olarak şerit bağlı terimlerin farklı kullanımına dayalı gibi görünüyor. RAID denetleyicim LSI veya Avago'nun üreticisi , şartları şu şekilde tanımlar :

Şerit Genişliği

Şerit genişliği, şeritlemenin uygulandığı bir sürücü grubunda yer alan sürücü sayısıdır. Örneğin, disk şeritli dört diskli bir sürücü grubunun şerit genişliği dörttür.

Şerit Boyutu

Şerit boyutu, RAID denetleyicisinin eşlik sürücüleri dahil değil, birden çok sürücüye yazdığı aralıklı veri segmentlerinin uzunluğudur. Örneğin, 64 KB disk alanı içeren ve şeritteki her diskte bulunan 16 KB veri içeren bir şerit düşünün. Bu durumda, şerit boyutu 64 KB ve şerit boyutu 16 KB'dir.

Şerit Boyutu

Şerit boyutu, şeridin tek bir sürücüde bulunan kısmıdır.

Wikipedia (ve IBM ) diğer tanımları kullanıyor gibi görünüyor:

İşlem bir sonraki diskte devam etmeden önce bir diske yazılan veya diskten okunan sıralı veri segmentlerine genellikle yığınlar, çizgiler veya şerit birimleri, tek şeritli işlemleri oluşturan mantıksal gruplarına şerit veya şerit denir. Bir bayttaki (şerit birimi), genellikle bayt cinsinden veri miktarı, yığın boyutu, adım boyutu, şerit boyutu, şerit derinliği veya şerit uzunluğu olarak adlandırılır. Dizideki veri disklerinin sayısına bazen şerit genişliği denir, ancak şerit içindeki veri miktarına da işaret edebilir.

Bir adımdaki veri miktarına, dizideki veri disklerinin sayısıyla (yani, geometrik analojide bir alan verecek olan şerit derinliği çarpı şerit genişliği) bazen şerit boyutu veya şerit genişliği denir. Veri dizileri birden çok diziye, muhtemelen sistemdeki tüm sürücülere yayıldığında geniş çizgi oluşur. Dar çizgiler, veri parçaları tek bir dizideki sürücüler arasında yayıldığında oluşur.

Wikipedia metninde bile şerit boyutunun iki farklı anlamı vardır. Ancak, şimdi, xfs dosya sistemini oluştururken, tek bir sürücüde depolanan tek bir yığının boyutunun su için argüman olarak verilmesi gerektiğini varsayalım. Bu, mkfs.xfs -d su=256k,sw=8yukarıdaki komutta olmalıdır . Doğru?

Yanıtlar:


12

"Şerit boyutu" ve "şerit boyutu" yerine, XFS kılavuz sayfaları sırasıyla "şerit birimi" ve "şerit genişliği" terimlerini kullanır.

Bu, mkfs.xfs(8)man sayfasındaki aksi takdirde kafa karıştırıcı metnin kodunun çözülmesini mümkün kılar :

               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.

Yani, dizi 256KiB bir şerit boyutunu raporlama, belirttiğiniz olur ya su=256Kya sunit=512(512 512 bayt blok 256KiB eşittir çünkü).

               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 iğ (8 veri, 2 parite) ile sw=8(veri iğleri) veya swidth=2M(şerit boyutu veri iğleriyle çarpılır ) belirtirsiniz .

Unutmayın xfs_info ve mkfs.xfsyorumlayın sunitve swidth512B sektör birimlerinde belirtildiği gibi; ancak bu maalesef rapor edildikleri birim değil. xfs_infove mkfs.xfsbunları bsize512B sektörlerinde değil , temel blok boyutunuzun ( ) katları halinde bildirin.

TL; DR:

Bunları belirtmenin en kolay yolu genellikle şerit boyutu ve iğ sayısıdır, dolayısıyla su=şerit boyutu ve sw=iğ sayısıdır.


Açıklama için çok teşekkürler! Vadeli şerit boyutunun farklı kullanım oldukça kafa karıştırıcı (bir diskte ya da birlikte tüm veri diskleri için yığın için) ... ayrıca bir argüman olarak şerit yığın boyutu kullanımı üzerinde durmak misiniz pvcreate's --dataalignment?
sebschub

1
Veri hizalaması, tam şerit genişliğiniz, bu durumda 2M vgcreateolmalıdır ve birlikte kullandığınız fiziksel boyut boyutunuz aynı veya bunun katları olmalıdır.
Michael Hampton

1

Mantıksal birim çizgili değildi, (-i 8 -I 256k), bu nedenle xfs dosya sisteminiz bitişik tek bir diskten başka bir şey görmüyor

Eski soru ama diğer hataları aynı hatadan kurtarın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.