去年我build立了一个带有5x3TB的软件RAID5,产生12TB的可用容量。 就在今天,需要更多的存储空间,我已经完成了增加到另外两个3TB磁盘的RAID:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdd1[7] sde1[6] sdb1[4] sda1[5] sdc1[2] sdg1[1] sdf1[0] 17580801024 blocks super 1.2 level 5, 512k chunk, algorithm 2 [7/7] [UUUUUUU] unused devices: <none>
这意味着我现在应该在/dev/md0上有大约6x3TB = 18TB的空间。 resize2fs ,没有大小参数调用,现在告诉我,新的大小是不可能在32位模式。 一些研究表明,这是一个普遍的问题,不容易解决,没有重大的修补,我不愿意做。
tune2fs确认64bit标志确实丢失了:-(虽然在configuration文件中设置了auto_64-bit_support = 1 (当创build文件系统时也应该设置)。但是我没有办法抱怨事后再改变。
不幸的是,完整的备份和恢复不是一个选项(我知道, 应该存在所有数据的备份,但只有足够的钱来备份真正重要的部分)。
然后我试图resize2fs -S 128 /dev/md0 16T的文件系统调整到16TB这似乎工作,但回来一个错误,告诉我没有足够的空间在设备上,并build议我运行e2fsck -fy /dev/md0 – 奇怪的事情。 我的心脏疯狂地疯狂,直到检查回来没问题! 尽pipe告诉它调整到15T工作。
我想我们可以在15TB左右生活几个月,但是大概有3TB左右,没有用处,这是我真正不喜欢的。 我现在的问题是,我怎么能把这些3TB使用。 我的研究方向是
/dev/md0在其余3TB上创build第二个文件系统 – 似乎是不可能的(分区表typesloop ) 但是这些“解决scheme”都没有足够的文档logging/testing,或者不是上述的选项,所以我现在坚持使用18TB的/dev/md0包含一个只有15TB和3TB空闲空间的ext4文件系统。 有没有人有一个想法还有什么我可以尝试/做/考虑?
我在CentOS 6机器上遇到了完全相同的SNAFU。 我的内核有64位支持,但是文件系统最初并没有用64位标志设置格式化。 没有> 16TB支持。 :-(我可以确认tune2fs在这里没有帮助,你不能把ext2 / 3/4文件系统转换成64位。
我很幸运,因为我在我的MDarrays顶部使用了LVM,所以我已经开始通过在MDarrays中创build另一个具有空余空间的LV来为我的arrays添加空间,并且格式化即使用64位选项。 然后,我将一些数据从旧的文件系统移动到新的文件系统,然后缩小旧的文件系统,重新resize(缩小旧的,增长新的)LVM卷组,生长64位文件系统,并重复(几次) 。 这不是理想的,但我的build议是重新分区的MDarrays,这样做。 有可能的。 (GParted会在这里很有帮助)
为了解决您的研究方向,从我的系统pipe理经验:
转换到BTRFS可能不是一个选项。 正如文档所build议的,BTRFS仍然在开发中(甚至包含在3.1内核中的3.12版本),不应该用来存储关键数据(而不是备份数据)。 虽然没有什么build议您的文件系统会自发地破坏自己,但比使用ext4有点冒险。
分区是要走的路,使用像GParted这样的工具变得更容易。 在LVM之上更容易…
您可以安装LVM,您可以尝试使用名为Blocks的第三方工具将您的mdarrays(块设备)转换为LVM卷和存储组。 这将使重新分区和重新调整容易一点。 虽然您不需要转换根文件系统,但该工具可能有助于将LVM融入其中。 如果有东西变成FUBAR的话,我会在这条路线上走错路。 我会事先在testing台上练习。
也许只是坚持使用GParted重新分区(以及使用mkfs.ext4 -O 64bit …的新分区的手动格式)并手动移动数据。 请检查以确保您的文件大小均小于3 TB,否则您需要在外部存储空间。