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 / 问题 / 782054
Accepted
Chris
Chris
Asked: 2016-06-06 01:24:53 +0800 CST2016-06-06 01:24:53 +0800 CST 2016-06-06 01:24:53 +0800 CST

btrfs 通过更换磁盘(而不是添加磁盘!)来增加 raid 容量

  • 772

我对 btrfs 的新功能感到非常兴奋,并想开始对其进行测试。在开始之前,我想问一下 btrfs 是否支持通过用更大的磁盘替换磁盘(而不是添加额外的磁盘)来增加 RAID 容量。示例:由 8 个 2TB 驱动器组成的 RAID10 导致容量为 8 TB。然后,每个 2TB 驱动器被一个 6 TB 驱动器替换。每次更换磁盘后,都会执行重建/重新平衡。我想知道,如果在最后一次磁盘更换和重新平衡后容量从 8TB 跃升至 24TB?

互联网上有一些关于它的讲座,但没有像“是的,重新平衡后,容量增加!”这样的 100% 声明。 https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices#Adding_new_devices

Synology 的 NAS 设备完全支持我所询问的功能:https ://www.synology.com/en-global/knowledgebase/DSM/help/DSM/StorageManager/volume_diskgroup_expand_replace_disk 但是,我不确定,如果这功能是 btrfs 的本机功能,或者如果 Synology 的开发人员专门为他们的磁盘站操作系统创建了它。

hard-drive raid capacity btrfs
  • 2 2 个回答
  • 4734 Views

2 个回答

  • Voted
  1. basic6
    2017-01-20T03:25:12+08:002017-01-20T03:25:12+08:00

    它应该像你描述的那样工作。但是,可能需要额外的步骤。

    例如,如果您在 raid1 配置中放置 4 个每个 3 GB 的驱动器,您最终将获得 6 GB 的容量。用 4 GB 驱动器替换其中两个驱动器应该会给您 7 GB 的容量(btrfs 磁盘使用计算器)。

    第 1 步:创建 4x 3G = 6G 容量的 BTRFS RAID1 卷:

    # mkfs.btrfs -f -draid1 -mraid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde >/dev/null 
    # mount /dev/sdb BTRFS/
    # btrfs fi show BTRFS/
    Label: none  uuid: e6dc6a95-ae5e-49c4-bded-77001b445ac7
        Total devices 4 FS bytes used 192.00KiB
        devid    1 size 3.00GiB used 331.12MiB path /dev/sdb
        devid    2 size 3.00GiB used 0.00B path /dev/sdc
        devid    3 size 3.00GiB used 0.00B path /dev/sdd
        devid    4 size 3.00GiB used 0.00B path /dev/sde
    
    # parted -s /dev/sdb print | grep Disk
    Disk /dev/sdb: 3221MB
    Disk Flags: 
    # parted -s /dev/sdc print | grep Disk
    Disk /dev/sdc: 3221MB
    Disk Flags: 
    # parted -s /dev/sdd print | grep Disk
    Disk /dev/sdd: 3221MB
    Disk Flags: 
    # parted -s /dev/sde print | grep Disk
    Disk /dev/sde: 3221MB
    Disk Flags: 
    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        6.0G   17M  5.3G   1% /mnt/BTRFS
    # btrfs fi df BTRFS/
    Data, RAID1: total=1.00GiB, used=320.00KiB
    Data, single: total=1.00GiB, used=0.00B
    System, RAID1: total=32.00MiB, used=16.00KiB
    Metadata, RAID1: total=256.00MiB, used=112.00KiB
    GlobalReserve, single: total=16.00MiB, used=0.00B
    

    第 2 步:将 2 个 3G 驱动器(第 3 和第 4 个驱动器)更换为 4G 驱动器:

    # parted -s /dev/sdf print | grep Disk
    Disk /dev/sdf: 4295MB
    Disk Flags: 
    # parted -s /dev/sdg print | grep Disk
    Disk /dev/sdg: 4295MB
    Disk Flags: 
    # btrfs replace start -f 3 /dev/sdf BTRFS/
    # btrfs replace start -f 4 /dev/sdg BTRFS/
    # btrfs fi show BTRFS/
    Label: none  uuid: e6dc6a95-ae5e-49c4-bded-77001b445ac7
        Total devices 4 FS bytes used 512.00KiB
        devid    1 size 3.00GiB used 1.28GiB path /dev/sdb
        devid    2 size 3.00GiB used 1.25GiB path /dev/sdc
        devid    3 size 3.00GiB used 1.06GiB path /dev/sdf
        devid    4 size 3.00GiB used 544.00MiB path /dev/sdg
    
    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        6.0G   17M  5.2G   1% /mnt/BTRFS
    

    RAID1 文件系统应该有 7 GB 的容量,但它只有 6 GB。

    解决方案

    它需要调整大小以使用所有可用空间(平衡无济于事)。需要在已更换的每台设备上调整其大小,例如设备#3 和#4。

    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        6.0G   17M  5.8G   1% /mnt/BTRFS
    # btrfs fi show BTRFS/
    Label: none  uuid: e71b4996-5f7c-4b08-b8d8-87163430b643
        Total devices 4 FS bytes used 448.00KiB
        devid    1 size 3.00GiB used 1.00GiB path /dev/sdb
        devid    2 size 3.00GiB used 1.00GiB path /dev/sdc
        devid    3 size 3.00GiB used 288.00MiB path /dev/sdf
        devid    4 size 3.00GiB used 288.00MiB path /dev/sdg
    
    # btrfs fi resize 3:max BTRFS/
    Resize 'BTRFS/' of '3:max'
    # btrfs fi resize 4:max BTRFS/
    Resize 'BTRFS/' of '4:max'
    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        7.0G   17M  6.8G   1% /mnt/BTRFS
    

    文件系统现在的预期容量为 7 GB。

    第 2 步(替代):移除驱动器(旧方式,不推荐)

    在添加替换命令之前,更换驱动器的唯一解决方法是添加新驱动器并移除旧驱动器。但是,这可能需要更多时间。它的缺点是会给你留下一个漏洞,即,被移除的设备的 id 将不再被使用,并且设备 id 不再匹配它们在 raid 阵列中的各自位置。

    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        6.0G   17M  5.3G   1% /mnt/BTRFS
    # btrfs dev add -f /dev/sdf BTRFS/
    # btrfs dev add -f /dev/sdg BTRFS/
    # btrfs fi show BTRFS/
    Label: none  uuid: ac40a98a-ac3b-4563-9ec9-6135332e5cdc
        Total devices 6 FS bytes used 448.00KiB
        devid    1 size 3.00GiB used 1.03GiB path /dev/sdb
        devid    2 size 3.00GiB used 1.25GiB path /dev/sdc
        devid    3 size 3.00GiB used 1.03GiB path /dev/sdd
        devid    4 size 3.00GiB used 256.00MiB path /dev/sde
        devid    5 size 4.00GiB used 0.00B path /dev/sdf
        devid    6 size 4.00GiB used 0.00B path /dev/sdg
    
    # btrfs dev rem /dev/sdd BTRFS/
    # btrfs dev rem /dev/sde BTRFS/
    # df -h BTRFS/
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdb        7.0G   17M  6.8G   1% /mnt/BTRFS
    # btrfs fi show BTRFS/
    Label: none  uuid: efc5d80a-54c6-4bb9-ba8f-f9d392415d3f
        Total devices 4 FS bytes used 640.00KiB
        devid    1 size 3.00GiB used 1.00GiB path /dev/sdb
        devid    2 size 3.00GiB used 1.00GiB path /dev/sdc
        devid    5 size 4.00GiB used 1.03GiB path /dev/sdf
        devid    6 size 4.00GiB used 1.03GiB path /dev/sdg
    

    使用添加/删除时,无需手动增加卷。

    请注意,当使用添加/删除时,raid 阵列中的第 3 个驱动器的索引为 5 而不是 3,当您需要根据机架中的插槽识别驱动器时,这可能会造成混淆。


    这是 BTRFS 4.4 版。未来版本的行为可能会有所不同。

    • 3
  2. Best Answer
    Gerald
    2016-07-25T08:42:41+08:002016-07-25T08:42:41+08:00

    是的,当您用更大的驱动器替换驱动器时,容量会在 btrfs 中增长。但请确保您始终有备份!虽然 RAID0/1 代码不像 btrfs 中的 RAID5/6 代码那样有缺陷(截至 2016 年 7 月),但您的设备更换不会是第一个出现严重错误的设备。

    • 1

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • Linux:“发现重复的 PV XXXXYYYYY:用户 /dev/sdb1 而不是 /dev/sda1”

  • Windows C:驱动器大小

  • 了解磁盘队列长度

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

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