收起左侧

关于飞牛在虚拟化下的存储硬盘扩容

4
回复
3213
查看
[ 复制链接 ]

1

主题

6

回帖

0

牛值

江湖小虾

2025-1-23 17:43:02 显示全部楼层 阅读模式
悬赏1飞牛币未解决

关于飞牛在虚拟化下的存储硬盘扩容

1.背景

由于没有多余的硬件或不想购买多余的硬件组NAS,使用PVE和EXSi或其他虚拟化方式的创建并使用NAS系统;在不考虑直通的情况下,使用虚拟化硬盘存在可能存储不足的情况,这时可通过宿主机控制台对系统进行磁盘扩容(磁盘扩容后需要进行相对于的操作,详见下文);注意:这里由于飞牛OS使用的逻辑卷技术,只推荐进行扩容,不建议缩容

啰嗦下,飞牛OS创建存储空间中的两种模式分别是:Basic和Linear,其中 Basic 只适合单个硬盘使用,即没有阵列; Linear 可单盘也适合两个硬盘以上,既可以组成阵列也可以将两块硬盘融合成一块硬盘使用(无阵列)。

环境如下:

操作系统 版本 说明
Proxmox 8.0.2 虚拟化平台
飞牛OS 0.34 基于Debian12
- - N块硬盘

3.实现操作

3.1 RAID0

重点:由于RAID0本身不支持直接扩容,因为它没有冗余机制,且数据是分散存储在各个磁盘上,当需要扩容时,需要对数据进行备份!备份!备份!如需扩容,需重新组阵列会导致数据丢失

容量计算公式:N块硬盘容量之和;例如:4块1TB容量,即是4TB容量

通过WEB界面先进行关机,对硬盘容量进行调整并正常开机启动。下图是在PVE中进行扩容:

image.png

image.png

重启后,会发现在web中“系统设置”里面“硬盘信息”中发现硬盘容量已经改变。

image.png

由于RAID0不支持直接扩容,故需要在WEB界面下先将原有的RAID0进行删除(提前备份好数据),然后再WEB界面下重新新建 RAID即可。

重审一遍:需提前备份

3.2 RAID1

容量计算公式:*可用容量 = 最小磁盘容量 1,例如有三块磁盘,容量分别为 500GB、1TB 和 1TB,那么 RAID 1 的可用容量为 500GB**。

如下图,已经组成 RAID1且已创建存储空间有数据,对其进行扩容。

image.png

通过WEB界面先进行关机,对硬盘容量进行调整并正常开机启动。下图是扩容的后结果:

image.png

WEB界面上看存储空间容量未发生变化,这会需要进去系统进行更改,首先在“系统设置”里面找到“SSH”并开启“SSH功能”

image.png

使用远程工具(Xshell)连接后查看确认已增加的硬盘容量,使用 sudo -i切换到超级用户下面进行操作:

# lsblk |grep -A 3 -E "sde |sdc"
sdc                                                 8:32   0   30G  0 disk  
**─sdc1                                              8:33   0   26G  0 part  
  **─md127                                           9:127  0   26G  0 raid1 
    **─trim_8a8c99a2_9f84_4dad_bdc8_96826af2414e-0 253:1    0   26G  0 lvm   /vol1
sdd                                                 8:48   0   40G  0 disk  
--
sde                                                 8:64   0   50G  0 disk  
**─sde1                                              8:65   0   45G  0 part  
  **─md127                                           9:127  0   26G  0 raid1 
    **─trim_8a8c99a2_9f84_4dad_bdc8_96826af2414e-0 253:1    0   26G  0 lvm   /vol1

先通过 fdisk对硬盘(sdc,sde)进行重新分区打标签

# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p   # 打印当前分区
# 已增加到30G
Disk /dev/sdc: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4ADAA90E-5FFA-43F2-8DE3-D3E9E93B6FB3
# 26G 实际分区
Device     Start      End  Sectors Size Type
/dev/sdc1   2048 54523903 54521856  26G Linux RAID

Command (m for help): d  # 删除当前分区
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n  # 创建新分区
Partition number (1-128, default 1): 
First sector (34-62914526, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-62914526, default 62912511): 

Created a new partition 1 of type 'Linux filesystem' and of size 30 GiB.
Partition #1 contains a linux_raid_member signature.

Do you want to remove the signature? [Y]es/[N]o: N  # 保留当前签名,这里必须选择N

Command (m for help): t  # 修改磁盘类型

Selected partition 1
Partition type or alias (type L to list all): 42  # 42为软RAID
Changed type of partition 'Linux filesystem' to 'Linux RAID'.

Command (m for help): w  # 写入磁盘
The partition table has been altered.
Syncing disks.

Command (m for help): p # 再次检查已分区磁盘

Disk /dev/sdc: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4ADAA90E-5FFA-43F2-8DE3-D3E9E93B6FB3

Device     Start      End  Sectors Size Type
/dev/sdc1   2048 62912511 62910464  30G Linux RAID

Command (m for help): q  # 退出磁盘管理

将两块原硬盘扩容进行同样操作

下一步则对 RAID1进行扩容扩容;pvresize对阵列进行更新大小;lvresize将剩余空间分配给实际使用的卷,其中卷位置可通过 lvdisplay进行查找;

# mdadm --grow /dev/md127 --size=max
# pvresize /dev/md127
# lvresize -l +100%FREE /dev/trim_8a8c99a2_9f84_4dad_bdc8_96826af2414e/0

由于飞牛OS使用的 brtfs文件系统,故还需对挂载磁盘进行分配,其中 vol1通过 df -hlsblk进行确认

# btrfs filesystem resize max /vol1/

扩容后通过web访问发现存储空间已经更改

3.2 RAID5

容量计算公式 = (磁盘数量 - 1) × 最小磁盘容量

  • 磁盘数量:5 块
  • 每块磁盘容量:2TB
  • 可用容量 = (5 - 1) × 2TB = 8TB

环境如下图:

image.png

对磁盘进行扩容,如下:

image.png

对磁盘进行扩容,与 RAID1同样的操作,

# lsblk |grep -A 3 -E "sda |sdd|sdb"
sda                                                 8:0    0   30G  0 disk  
**─sda1                                              8:1    0   10G  0 part  
  **─md127                                           9:127  0   20G  0 raid5 
    **─trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0 253:0    0   20G  0 lvm   /vol2
sdb                                                 8:16   0   15G  0 disk  
**─sdb1                                              8:17   0   15G  0 part  
  **─md127                                           9:127  0   20G  0 raid5 
    **─trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0 253:0    0   20G  0 lvm   /vol2
sdd                                                 8:48   0   30G  0 disk  
**─sdd1                                              8:49   0   10G  0 part  
  **─md127                                           9:127  0   20G  0 raid5 
    **─trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0 253:0    0   20G  0 lvm   /vol2

检查阵列是否正常,State: clean表示RAID阵列处于正常状态,没有正在进行的重建或校验操作,active sync表示正常工作并且数据是同步。

# mdadm --grow /dev/md127 --size=max
# mdadm --detail /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Thu Jan 23 15:23:38 2025
        Raid Level : raid5
        Array Size : 31434752 (29.98 GiB 32.19 GB)
     Used Dev Size : 15717376 (14.99 GiB 16.09 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Thu Jan 23 15:40:39 2025
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : testPC:0  (local to host testPC)
              UUID : b1566e98:0ef12406:910fba5c:fdfcd3e0
            Events : 12

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       49        2      active sync   /dev/sdd1

更新pv组,后更新逻辑卷(lv)

# pvresize /dev/md127
  Physical volume "/dev/md127" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/md127
  VG Name               trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d
  PV Size               <29.98 GiB / not usable 0   
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              7674
  Free PE               2560
  Allocated PE          5114
  PV UUID               0MeA2Y-U4zs-VRUN-pRAA-siiS-NQmx-5xisAW
# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d/0
  ......
  LV Size                <19.98 GiB
  .....

root@testPC:~# lvresize -l +100%FREE /dev/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d/0
  Size of logical volume trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d/0 changed from <19.98 GiB (5114 extents) to <29.98 GiB (7674 extents).
  Logical volume trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d/0 successfully resized.

 # lvdisplay 
  --- Logical volume ---
  LV Path                /dev/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d/0
  ....
  LV Size                <29.98 GiB
  ....

由于飞牛OS使用的 brtfs文件系统,故还需对挂载磁盘进行分配,其中 vol1通过 df -hlsblk进行确认

# df -h|grep vol2
/dev/mapper/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0   20G  478M   20G   3% /vol2
# btrfs filesystem resize max /vol2/
Resize device id 1 (/dev/mapper/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0) from 19.98GiB to max
# df -h|grep vol2
/dev/mapper/trim_b1e2b528_6bd2_4f52_b2d8_0ace300c075d-0   30G  478M   30G   2% /vol2

扩容后通过web访问发现存储空间已经更改

image.png

3.3 RAID6

容量计算公式:(磁盘数量 - 2) × 单个磁盘容量

  • 磁盘数量:8 块
  • 每块磁盘容量:3TB
  • 可用容量 = (8 - 2) × 3TB = 18TB

3.4 RAID10

容量计算公式:(磁盘数量 / 2) × 最小磁盘容量

  • 磁盘数量:6 块
  • 每块磁盘容量:2TB
  • 可用容量 = (6 / 2) × 2TB = 6TB

image.png

对磁盘进行扩容,如下:

image.png

对磁盘进行扩容,与 RAID1同样的操作,

# lsblk
....
sdb                                                 8:16   0   20G  0 disk   
**─sdb1                                              8:17   0   10G  0 part   
  **─md127                                           9:127  0   25G  0 raid10 
    **─trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350-0 253:0    0 24.9G  0 lvm    /vol1
....

# 重新分配后
# lsblk
....
sdb                                                 8:16   0   20G  0 disk   
**─sdb1                                              8:17   0   20G  0 part   
  **─md127                                           9:127  0   25G  0 raid10 
    **─trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350-0 253:0    0 24.9G  0 lvm    /vol1
....

执行相关命令

# mdadm --grow /dev/md127 --size=max
# pvresize /dev/md127
# lvextend -l +100%FREE /dev/trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350/0
  Size of logical volume trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350/0 changed from <24.95 GiB (6387 extents) to <49.95 GiB (12787 extents).
  Logical volume trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350/0 successfully resized.

# btrfs filesystem resize max /vol1
Resize device id 1 (/dev/mapper/trim_4e5ad6ca_4091_4e19_ad28_e616a8dcd350-0) from 24.95GiB to max

image.png

3.5 Basic以及Linear

下述X为真实字母或数字

使用 Basic需使用先 mdadm命令进行扩容

# Basic
# 按顺序执行
# fdisk /dev/sdX  --> d  --> n(一路回车直到提示signature? [Y]es/[N]) --> No --> t --> 42 --> w --> q
# mdadm --grow /dev/mdX--size=max
# pvresize /dev/mdX
############## lvdisplay查询实际路径和df -h 配合 ####################
# lvresize -l +100%FREE /dev/trim_8a8c99a2_9f84_4dad_bdc8_96826af2414e/0
# btrfs filesystem resize max /volX/

使用 Linear则和普通的逻辑卷操作

# Linear
# 按顺序执行
# fdisk /dev/sdX  --> d  --> n(一路回车直到提示signature? [Y]es/[N]) --> No --> t --> 42 --> w --> q
# pvresize /dev/mdX
############## lvdisplay查询实际路径和df -h 配合 ####################
# lvresize -l +100%FREE /dev/trim_8a8c99a2_9f84_4dad_bdc8_96826af2414e/0
# btrfs filesystem resize max /volX/

2.相关技术

目前飞牛OS支持组成0,1,5,6,10这五种阵列,如下表格:

阵列类型 至少所需硬盘 优点 缺点
RAID0 2块 磁盘利用率高,容量为硬盘总和 无冗余,任意硬盘损坏导致数据丢失
RAID1 2块 数据安全性高,磁盘互为镜像 磁盘利用率只50%
RAID5 3块 存储效率高,容量利用率高于RAID1 写入较慢,只允许单块硬盘故障
RAID6 4块 数据安全性高,允许两块硬盘故障 写入慢,需多块硬盘以上,成本高
RAID10 4块 高性能存储,数据安全性高,允许多块硬盘故障 需多块硬盘以上,成本高

飞牛使用的文件系统格式是:Btrfs(B-Tree Filesystem),是一种现代的写时复制(Copy-On-Write, COW)。Btrfs融合了文件系统和卷管理器的功能,主要在实现高级功能的同时,注重容错性、修复性和易于管理性,这也说明了为什么飞牛OS用的逻辑卷为底层。

逻辑卷知识:PV-->VG-->LV

物理卷-->卷组-->逻辑卷

补充:

使用飞牛OS存储管理中自带的扩容,发现出错

image.png

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

39

主题

2915

回帖

405

牛值

共建版主

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家

2025-1-24 11:49:50 显示全部楼层
你这是教程,应该发到攻略区去。
感谢提醒  详情 回复
2025-1-24 15:45

1

主题

6

回帖

0

牛值

江湖小虾

2025-1-24 15:45:48 楼主 显示全部楼层
感谢提醒

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-13 10:21:31 显示全部楼层

好!!!!!basic无损扩容换盘

不过basic部分第四条命令漏掉了个空格,应该是 mdadm --grow /dev/mdX --size=max  详情 回复
2025-4-13 10:22

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-13 10:22:18 显示全部楼层
张伟杰 发表于 2025-4-13 10:21
好!!!!!basic无损扩容换盘

不过basic部分第四条命令漏掉了个空格,应该是 mdadm --grow /dev/mdX --size=max
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则