AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 789870
Accepted
sebschub
sebschub
Asked: 2016-07-15 08:36:17 +0800 CST2016-07-15 08:36:17 +0800 CST 2016-07-15 08:36:17 +0800 CST

xfs on lvm on hardware RAID: 参数正确吗?

  • 772

我在硬件 RAID6 中有 10 个磁盘,每个磁盘 8 TB(因此,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 的制造商以下列方式定义术语:

条纹宽度

条带宽度是实施条带化的驱动器组中涉及的驱动器数量。例如,具有磁盘条带化的四磁盘驱动器组的条带宽度为四。

条纹尺寸

条带大小是 RAID 控制器跨多个驱动器写入的交错数据段的长度,不包括奇偶校验驱动器。例如,考虑一个包含 64 KB 磁盘空间的条带,并且在条带中的每个磁盘上都有 16 KB 的数据。在这种情况下,条带大小为 64 KB,条带大小为 16 KB。

带材尺寸

条带大小是位于单个驱动器上的条带部分。

维基百科(和IBM)似乎使用其他定义:

在操作继续在下一个磁盘上之前写入或从磁盘读取的顺序数据段通常称为块、跨度或条带单元,而它们形成单个条带操作的逻辑组称为条带或条带。一个块(条带单元)中的数据量,通常以字节为单位,被不同地称为块大小、跨度大小、条带大小、条带深度或条带长度。阵列中数据磁盘的数量有时称为条带宽度,但也可能指条带内的数据量。

一个步长中的数据量乘以阵列中数据磁盘的数量(即,条带深度乘以条带宽度,在几何类比中将产生一个区域)有时称为条带大小或条带宽度。当数据块分布在多个阵列(可能是系统中的所有驱动器)上时,就会发生宽条带化。当数据块分布在单个阵列中的驱动器上时,就会出现窄条带化。

即使在 Wikipedia 上面的文字中,条纹大小也有两种不同的含义。但是,我现在想,在创建 xfs 文件系统时,必须将存储在单个驱动器上的单个块的大小作为参数提供给 su。这个,它应该mkfs.xfs -d su=256k,sw=8在上面的命令中。正确的?

lvm raid xfs
  • 2 2 个回答
  • 6841 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2016-07-16T23:32:01+08:002016-07-16T23:32:01+08:00

    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.xfs解释sunit为swidth以 512B 扇区为单位指定;然而,不幸的是,这不是他们报告的单位。xfs_info并mkfs.xfs以基本块大小 ( ) 的倍数bsize而不是 512B 扇区报告它们。

    TL;博士:

    指定这些的最简单方法通常是通过条带尺寸和锭数,即su=条带尺寸和sw=锭数。

    • 12
  2. mwk
    2020-01-11T08:12:13+08:002020-01-11T08:12:13+08:00

    逻辑卷没有条带化( -i 8 -I 256k ),因此您的 xfs 文件系统只看到一个连续的单个磁盘

    老问题,但可以避免其他搜索者犯同样的错误。

    • 0

相关问题

  • OpenBSD 和文件系统快照

  • 卷组空间不足。我该如何收回它?

  • LVM 快照是这样工作的吗?

  • LVM 和快照

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve