我正在尝试构build一个服务器,它将成为我的NAS /媒体服务器以及XBMC前端。 我正在计划使用Ubuntu与Btrfs的NAS部分。 目前的设置包括操作系统等的1TB硬盘和两个2TB硬盘的数据。 我计划将2TB硬盘用作JBOD btrfs系统,在这个系统中,我可以根据需要添加硬盘,基本上可以在线扩展文件系统。 他们安装文件系统进行testing的方式是在安装操作系统时,只需要连接一个硬盘,并在其上挂载btrfs作为/ data。 稍后在此文件系统中添加另一个hdd。 当第二块磁盘添加了作为RAID 0的btrfs,元数据为RAID 1.但是,这提出了一个问题:即使其中一个磁盘出现故障,我也将丢失所有数据(主要是介质)。 另外大多数情况下,服务器在没有进行任何磁盘访问的情况下运行,也就是说可以closures硬盘,当访问请求出现在当前的RAID 0设置中时,两个磁盘都将启动。 在我pipe理JBOD的情况下,只有具有该文件的磁盘需要被启动。 这应该有希望减less每个磁盘的MTBF。 那么, 有没有一种方法可以让btrfs设置为元数据镜像,但是数据保持在JBODarrays中 ?
另一个问题是,我了解到JBOD中的全驱故障会丢失驱动器上的数据,但在所有驱动器上都有metadeta镜像,这是否有助于更正文件系统中的错误(如出现错误?) btrfs能够做到这一点。
看来你的问题最好在这里回答:
https://serverfault.com/a/438181/89037
基本上,是的,“单一”数据configuration文件允许不同大小的磁盘,并以JBOD方式将它们组合在一起。 不要更改元数据,保留为RAID1。
来自Btrfs维基
当前状态
Btrfs可以在线添加和删除设备。 在mkfs时间添加设备可以最大程度地控制所使用的RAID级别。
Btrfs可以执行raid0,raid1,raid10,它可以在单个主轴上复制元数据。 读取块时,校验和将被validation,如果有任何错误,Btrfs会尝试从备用副本读取。
在RAID1样式设置中使用具有多个不同大小的卷的btrfs时,请参阅Gotchas页面。
创build多设备FS
mkfs.btrfs将在命令行上接受多个设备。 它有选项来控制数据和元数据的RAIDconfiguration。 有效的select是raid0,raid1,raid10和single。 单一意味着没有重复的元数据,这是可能需要使用硬件RAID时。
所以不,你不能为数据做JBOD(或者Wiki没有更新,Btrfs正在大量的开发中)。
我喜欢Btrfs校验数据和元数据,它将使您免于沉默的数据损坏(好吧,它会通知您,您的文件已被破坏,但应防止元数据损坏)。 尽pipe如此,我还是不相信这件事。 就个人而言,我会用3个磁盘和一个软件RAID 5去。你可以根据需要以后再增加数组。 对于文件系统,我会select更成熟的东西,比如ext4或XFS。
如果您更关心磁盘旋转而不是数据持久性,则可以使用LVM从两个磁盘中创build一个逻辑卷,并在其上创build一个Btrfs文件系统。 LVM允许一个线性模式,这可能会或可能不会导致刚刚启动的相关驱动器(如果数据和元数据都驻留在同一个主轴上),但是如果驱动器发生故障,则会丢失所有数据。
你可以运行这样的东西:
mkfs.btrfs -L data /dev/sdc /dev/sdd
跨多个磁盘跨越btrfs。 一定要使用正确的设备名称。 只要知道你正在失去这样的设置冗余,你的数据是不安全的。