如何使用 megacli 创建 Raid 10

Hen*_*nno 8 raid megaraid raid10 megacli

我有 OpenFiler 存储服务器。

在不安装 Windows 和 MSM 的情况下,我想从磁盘 2 到 21 创建 raid10 阵列。

我已经成功地将 MegaCli 安装到 OpenFiler,但我一直在寻找用于创建 raid 10 阵列的正确命令行。

文档说创建raid 10的语法是:

MegaCli -CfgSpanAdd -r10 -Array0[E:S,E:S] -Array1[E:S,E:S] -aN
Run Code Online (Sandbox Code Playgroud)

我的机箱 ID 是 25,所以:

[root@linux-h5ut ~]# MegaCli -CfgSpanAdd -r10 -Array0[E25:S02,E25:S21] -Array1[E25:S02,E25:S21] WB Cached NoCachedBadBBU -a0
Invalid input at or near token E
Run Code Online (Sandbox Code Playgroud)

我在谷歌上搜索了高低,但似乎没有任何例子用 megaraid 做 raid10(只有语法)。

任何人都可以解释什么是错的?

abk*_*rim 7

响应 Create Raid 10(不是 Raid 6)

  1. 首先获取适配器#

    # MegaCli Adpallinfo -aall | grep '^Adapter'  
    Adapter #0   
    
    Run Code Online (Sandbox Code Playgroud)

    MegaCli 或 megacli 取决于发行版 *nix

    在这种情况下,适配器是 Adapter #0

  2. 获取设备 ID 和插槽磁盘值:

     # MegaCli64 -PDlist -aall | grep -e '^Enclosure Device ID:' -e '^Slot Number:'
     Enclosure Device ID: 252
     Slot Number: 0
     Enclosure Device ID: 252
     Slot Number: 1
     Enclosure Device ID: 252
     Slot Number: 2
     Enclosure Device ID: 252
     Slot Number: 3
    
    Run Code Online (Sandbox Code Playgroud)

    在这种情况下,ID 全部为 252

  3. 根据 用于创建 RAID 10 的MegaCli命令,它是MegaCli -CfgSpanAdd -r10 -Array0[E:S,E:S] -Array1[E:S,E:S] -aN

    MegaCli -CfgSpanAdd -R10 -Array0[252:0,252:2] -Array1[252:1,252:3] -a0
    
    Run Code Online (Sandbox Code Playgroud)

    在这种情况下,创建一个 RAID 10,为具有磁盘 0 和 2 的 Raid1 创建一个阵列,并为具有磁盘 1 和 3 且 N = 0 (-a0) 的 Raid1 创建另一个阵列

  4. 验证 RAID

     # megasasctl
     a0       LSI MegaRAID SAS 9271-4i encl:1 ldrv:1  batt:FAULT, low voltage, charge failed
     a0d0      1489GiB RAID 10  2x2  optimal
     a0e252s0    745GiB  a0d0  online
     a0e252s1    745GiB  a0d0  online
     a0e252s2    745GiB  a0d0  online
     a0e252s3    745GiB  a0d0  online
    
    Run Code Online (Sandbox Code Playgroud)

    或者如果megasasctl不可用:

     # MegaCli -LDInfo -Lall -aALL
     Adapter 0 -- Virtual Drive Information:
     Virtual Disk: 0 (Target Id: 0)
     Name:
     RAID Level: Primary-1, Secondary-0, RAID Level Qualifier-0
     Size:1.454 TB
     State: Optimal
     Stripe Size: 256 KB
     Number Of Drives per span:2
     Span Depth:2
     Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
     Current Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
     Access Policy: Read/Write
     Disk Cache Policy: Enabled
     Encryption Type: None
    
    Run Code Online (Sandbox Code Playgroud)


小智 6

你没有理解手册页。E25:S02 - 它应该具有 int 值的类似变量。一切你需要的:

1.获取适配器 ID(在我的示例中为 0):

root@sto# megacli Adpallinfo -aall | grep '^Adapter'                                                    
Adapter #0
Run Code Online (Sandbox Code Playgroud)

2. 获取 E 和 S 值:

megacli -PDlist -aall | grep -e '^Enclosure Device ID:' -e '^Slot Number:'
Run Code Online (Sandbox Code Playgroud)

你会得到这样的东西:

Enclosure Device ID: 20
Slot Number: 0
Enclosure Device ID: 20
Slot Number: 1
Enclosure Device ID: 20
Slot Number: 2
Enclosure Device ID: 20
Slot Number: 3
Enclosure Device ID: 20
Slot Number: 4
Run Code Online (Sandbox Code Playgroud)

这是您的 E 和 S 编号,ig 20:0,20:1,20:2,20:3,20:4 所以创建例如 RAID6 的命令将是:

megacli -CfgLdAdd -r6 [20:0,20:1,20:2,20:3,20:4] -a0
Run Code Online (Sandbox Code Playgroud)


Hen*_*nno 0

看来我不应该应该使用E和S字母。

\n\n

起初我理解正确并无字地尝试了它,但也得到了无效令牌错误,因为我使用的是 -aALL 而不是 -a0 (“如果你只有一个控制器,则可以安全地使用 ALL 而不是特定 ID ” ),然后从中读取站点读取“E 是驱动器所在的机箱设备 ID,S 是插槽号”,因此得出结论,我应该用实际 ID 替换 E 和 S。:(

\n