之前写过一篇关于在centos中使用btrfs的文章,现在如果在实际生产环境中使用还是会出现很多问题
我把我所遇到的问题总结了一下:
因为centos6.3内核版本是2.6.32,如果单纯不升级内核而使用这个文件系统,在一些命令使用上会是系统存在风险
比如:
我用btrfsctl建立的快照无法使用命令删除,用rm暴力删除的话,会留下许多目录,仔细读了文档后才知道,还不支持rm删除快照卷
如果用btrfs命令建立快照卷的话
btrfs sub delete SUB_NAME
在我执行这条命令后,等几秒后机器就会down掉,弹出下图的信息
明显是内核太低了,官网给的解释是0.19一定要结合目前main line版本的内核,因为btrfs还在密集开发中,所以一有改变就会更新到内核中去,现在内核稳定版本是 3.5.3
如果你已经按照我之前的文章做了实验,建议升级内核版本后,这类问题就不复存在了
其实我在后来的使用中发现 在Ubuntu上使用btrfs更简单,单从btrfs-tools工具安装就能看出来 下面是我在Ubuntu12.04上做的实验
环境 Ubuntu 12.04
工具:btrfs-tools
安装方法 :apt-get build-dep btrfs-tools
apt-get install btrfs-tools
加载模块:modprobe btrfs
查看:
- root@test:~# lsmod |grep btrfs
- btrfs 652957 2
- zlib_deflate 27139 1 btrfs
- libcrc32c 12644 1 btrfs
- 格式化:
- root@test:~# mkfs.btrfs -L DB_BAK /dev/sde
-
- WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
- WARNING! - see http://btrfs.wiki.kernel.org before using
-
- fs created label DB_BAK on /dev/sde
- nodesize 4096 leafsize 4096 sectorsize 4096 size 465.76GB
- Btrfs Btrfs v0.19
- 挂载:
- mount /dev/sde /disk3
使用方法:
创建子卷:
- btrfs sub create /disk3/web_bak
为子卷创建快照
- btrfs sub snap /disk3/web_bak /disk3/web_old_bak/
其实快照卷也是个子卷,所以想要删除快照卷,命令和删除子卷是一样的
- btrfs sub delete /disk3/web_old_bak
你也可以使用btrfs --help 获得命令帮助
如果还是顾虑内核问题你可以将Ubuntu升级到3.5
wget -O linux-kernel-3.5.2 http://dl.dropbox.com/u/47950494/upubuntu.com/linux-kernel-3.5.2
手动执行一下这个脚本,重启机器后就可以使用新内核了
btrfs问题纠结了我两周,因为一直被升级内核困扰.我用的服务器型号是Dell R510的,使用新内核一直无法成功启动机器,机器启动报错截图如下
我确定我的配置参数没有问题,cpu选择的是
但是在R410上使用这些配置选项编译的内核却能正常开机。问dell技术支持,他们回答是不提供软件系统方面的支持。
因为老大催的紧,没办法,后来直接就从Centos换成Ubuntu系统,因为服务器上有sda盘是系统 ,sdc和sdb磁盘都是些重要的备份数据,忌惮换系统后磁盘数据无法识别,从后来的实践证明是多虑了,因为有一个是ext4,一个是btrfs格式的文件系统,不过Ubuntu12.04还蛮给力的,都能识别出来。
如果你运行了linux-kernel-3.5.2这个脚本,成功升级了内核,btrfs模块已经编译进了内核,你就不需要再重新执行modprobe btrfs这个动作
root@server54:/disk3# lsmod |grep btrfs
btrfs 781025 1
zlib_deflate 27139 1 btrfs
libcrc32c 12644 1 btrfs
Ubuntu系统也是第一次接触,不过感觉和CentOS区别不是很大,就是网卡配置感觉很别扭。关于R510上在centos系统上升级3.5.2内核,我至今还没有成功,如果可以的话,可以尝试使用Ubuntu上3.5.2的config文件配置来升级centos,因为现在服务器都在做备份,不能再随意关机重启了,以后如果有机会的话,可以尝试一下