我有一个由一个 500GB 磁盘组成的现有 BTRFS 文件系统,我刚刚购买了一个 2TB 磁盘来增加我的家庭服务器的存储容量,我想将新磁盘添加到现有文件系统中。从我读到的内容来看,似乎没有 BTRFS 设置可以处理不同大小的磁盘而不会浪费较大磁盘和较小磁盘之间的大小差异,但我是 BTRFS 的新手,我可能错过了一些东西,所以有没有设置这可以让我在文件系统中组合两个磁盘而不浪费空间吗?
Chr*_*use 17
这取决于您对多设备 Btrfs 文件系统的数据块使用的配置文件。
当您使用 RAID0(数据块的默认值)时,每个磁盘只能填充到阵列中最小磁盘的容量。
当您对数据块使用“单一”配置文件时,每个磁盘都将填满它的全部容量。例如mkfs.btrfs -d single /dev/sda /dev/sdb
我有一个带有 2TB 和 3TB 磁盘的文件服务器。它从 USB 闪存驱动器启动 Ubuntu 12.10。首先,我创建了没有-d single
选项的 Btrfs 文件系统:
mkfs.btrfs /dev/sda /dev/sdb
Run Code Online (Sandbox Code Playgroud)
结果是我只能存储大约 4TB(3.45 二进制 TB 文件数据)。
# btrfs fi show
Label: none uuid: 3a63a407-dd3c-46b6-8902-ede4b2b79465
Total devices 2 FS bytes used 3.22TB
devid 2 size 2.73TB used 1.82TB path /dev/sdb
devid 1 size 1.82TB used 1.82TB path /dev/sda
# btrfs fi df /mnt/btrfs1/
Data, RAID0: total=3.45TB, used=3.22TB
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=264.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=94.00GB, used=4.29GB
Metadata: total=8.00MB, used=0.00
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 4.6T 3.3T 241G 94% /mnt/btrfs1
Run Code Online (Sandbox Code Playgroud)
请注意used 1.82TB
3TB 驱动器的 。
然后我使用“平衡”命令将数据块从 RAID0 转换为“单一”配置文件:
btrfs balance start -dconvert=single /mnt/btrfs1
Run Code Online (Sandbox Code Playgroud)
平衡4TB数据花了很长时间(大约30个小时)。但完成后,我可以使用完整的 5TB(4.36 二进制 TB 文件数据)。
# btrfs fi show
Label: none uuid: 3a63a407-dd3c-46b6-8902-ede4b2b79465
Total devices 2 FS bytes used 4.34TB
devid 2 size 2.73TB used 2.73TB path /dev/sdb
devid 1 size 1.82TB used 1.82TB path /dev/sda
# btrfs fi df /mnt/btrfs1/
Data: total=4.36TB, used=4.34TB
System, RAID1: total=40.00MB, used=500.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=94.00GB, used=4.01GB
Metadata: total=8.00MB, used=0.00
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 4.6T 4.4T 27G 100% /mnt/btrfs1
Run Code Online (Sandbox Code Playgroud)
Btrfs 可以对数据和元数据使用不同的raid 级别:
默认(即使对于一个磁盘)元数据(目录等)为 raid1,数据为 raid0。
如果您没有更改它,那么添加第二张光盘并运行重新平衡可能没有问题。因为只有元数据会被复制到两张光盘(你可以用 看到你的元数据大小btrfs filesystem df /
)。请注意,如果您的任何一个磁盘出现故障,您都会丢失数据。
因为 2tb 磁盘比 500g 大得多,如果您添加新磁盘然后删除旧磁盘,可能会给您带来更好的机会(一个特定驱动器发生故障的几率远低于任何一个驱动器的几率)失败)。
如果您计划稍后拥有一个 RAID 阵列(具有更多类似大小的驱动器),您可能需要使用 raid1 在新驱动器上为数据和元数据重新创建文件系统,然后复制所有内容。然后当你有更多的钱买第二个 2tb 驱动器。
ps:在单个驱动器上使用 raid1 意味着数据将存储在该驱动器上的两个位置(以防止损坏)并且会减少您的存储空间(对于元数据来说这是一个非常好的主意)。
pss:说真的,不要试图不将raid1 用于元数据。psss:btrfs 很有可能获得动态更改raid 级别的能力。
归档时间: |
|
查看次数: |
24977 次 |
最近记录: |