免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3434 | 回复: 0
打印 上一主题 下一主题

ZFS文件系统和OpenSolaris的beadm [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-11 12:19 |只看该作者 |倒序浏览

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ZFS文件系统是一个划时代的文件系统,OpenSolaris的默认文件系统就是ZFS。基于ZFS,利用OpenSolaris的beadm命令可以产生和管理多个zfs boot environments。
一台PC机可以装多个Linux,但是只有对磁盘分区和文件系统有一定认识的用户才可以做到。主分区的个数有严格的限制,扩展分区也不能随意多,不然会对磁盘空间会造成极大的浪费,因为一个分区的文件系统是绝不会和另外一个分区文件系统共享磁盘空间的。即使可以安装多块硬盘,在操作系统里用户也避免不了和/dev/sda, /dev/sdc1等底层的设备名称打交道。由于ZFS文件系统独特的设计,普通用户很少或基本不需要和底层设备打交道。想创建多少文件系统就创建多少文件系统,每个文件系统大小可以自动动态调整,用多少空间就给多少空间,所以每个文件系统的空间绝不会浪费,反而由于ZFS文件系统内置的压缩选项极大的节省了磁盘空间。
这一切看似神秘,但是原理又非常简单。我们知道虚拟内存的出现极大的解脱了程序员,程序员再也不需要和物理内存打交道了。ZFS文件系统将所有存储设备放入pool中,如果要创建文件系统就从pool中拿,用多少拿多少,并且不需要和物理设备打交道,文件系统和具体的存储设备没有一一对应的关系。也就是说ZFS文件系统集成了卷管理器的功能。用户或管理员再也不需要fdisk/parted, mkfs, fsck, 手工编辑/etc/fstab。记得在实验室的时候,有一台PC机上面装了Red Hat 9,samba服务器。磁盘空间不够了,我又装了一块硬盘上去,然后格式化,设置挂载点,这活当时很多人干不了,还挺自豪的。在移动文件后发现导师和一师弟的个人目录莫名其妙的没有了,幸亏导师的目录里没什么重要的东西。后来由于小隔间里的空调坏了,硬盘在长时间的高温环境下彻底报废了,数据修复公司张嘴就上千的要,更可气的是中关村的数据修复公司二话不说就当FAT修,根本就没有听说过ext2。如果让我再管理一次服务器,我一定会用ZFS文件系统,添加一块硬盘一个命令就搞定,然后给每个人创建一个文件系统,再限定空间大小,这样再也不需要一个人一个人的检查警告,并且ZFS的多级校验和检查到了每一个磁盘块,绝不会出现文件系统崩溃的情况。
Ubuntu Linux升级后,升级前的内核也可以启动。这看似和OpenSolaris的zfs boot environments一样,但是有本质的区别。Linux升级前和升级后的内核同在一个文件系统里,如果磁盘或者文件系统损坏,两个内核都不可用。OpenSolaris升级后,利用ZFS文件系统创建了新的文件系统,升级前和升级后的内核不在同一个文件系统里。两个文件系统都可以启动。更重要的是,由于ZFS文件系统是一个copy-on-write的文件系统,这两个文件系统相同的磁盘块完全共享,只有不同的部分才会占用磁盘空间。
下面介绍一下普通用户会用到的一些命令:
升级之后,就会多出一个zfs boot environment
# pkg image-update
当前我系统有两个zfs boot environments
# beadm list
BE            Active Mountpoint Space   Policy Created         
--            ------ ---------- -----   ------ -------         
opensolaris   -      -          159.73M static 2009-06-24 09:54
opensolaris-1 NR     /          9.49G   static 2009-06-24 10:57
如果你想产生一个clone来调试新的内核驱动
# beadm create testbe
# beadm activate testbe
# beadm list
BE            Active Mountpoint Space   Policy Created         
--            ------ ---------- -----   ------ -------         
opensolaris   -      -          159.73M static 2009-06-24 09:54
opensolaris-1 N      /          31.5K   static 2009-06-24 10:57
testbe        R      -          9.49G   static 2009-07-11 11:52
重启之后就进入了测试环境,工作做完之后就可以将这个clone删掉了
# beadm activate opensolaris-1
# beadm destroy testbe
Are you sure you want to destroy testbe? This action cannot be undone(y/[n]): y
压缩
# zfs set compression=on rpool
# cd $ONNV/usr/src
# cscope -R -b -k
# ctags -R
# ls -lh tags cscope.out
-rw-r--r-- 1 mishuang staff 209M 2009-07-11 08:49 cscope.out
-rw-r--r-- 1 mishuang staff  76M 2009-07-11 08:53 tags
# du -sh tags cscope.out
  28M    tags
110M    cscope.out
当前BE的内核是snv_116,你想将前一个BE(snv_110)的某个内核驱动拷出来,你大可不必重启。
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
rpool                       46.8G  26.1G  80.5K  /rpool
rpool/ROOT                  9.59G  26.1G    19K  legacy
rpool/ROOT/opensolaris       160M  26.1G  3.49G  /
rpool/ROOT/opensolaris-1    9.43G  26.1G  7.84G  /
rpool/dump                   755M  26.1G   755M  -
rpool/export                35.7G  26.1G    21K  /export
rpool/export/home           35.7G  26.1G    21K  /export/home
rpool/export/home/mishuang  35.7G  26.1G  22.7G  /export/home/mishuang
rpool/swap                   755M  26.3G   553M  -
# mkdir /mnt/opensolaris
# zfs set mountpoint=/mnt/opensolaris rpool/ROOT/opensolaris
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
rpool                       46.8G  26.1G  80.5K  /rpool
rpool/ROOT                  9.59G  26.1G    19K  legacy
rpool/ROOT/opensolaris       160M  26.1G  3.49G  /mnt/opensolaris
rpool/ROOT/opensolaris-1    9.43G  26.1G  7.84G  /
rpool/dump                   755M  26.1G   755M  -
rpool/export                35.7G  26.1G    21K  /export
rpool/export/home           35.7G  26.1G    21K  /export/home
rpool/export/home/mishuang  35.7G  26.1G  22.7G  /export/home/mishuang
rpool/swap                   755M  26.3G   553M  -
# zfs mount rpool/ROOT/opensolaris
# cd /mnt/opensolaris/
# ls
bin   cdrom  devices  export  kernel  lost+found  mnt  opt     proc  rpool  system  usr
boot  dev    etc      home    lib     media      net  platform  root  sbin   tmp     var
# cd
# zfs unmount rpool/ROOT/opensolaris
# zfs set mountpoint=/ rpool/ROOT/opensolaris
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
rpool                       46.8G  26.1G  80.5K  /rpool
rpool/ROOT                  9.59G  26.1G    19K  legacy
rpool/ROOT/opensolaris       160M  26.1G  3.49G  /
rpool/ROOT/opensolaris-1    9.43G  26.1G  7.84G  /
rpool/dump                   755M  26.1G   755M  -
rpool/export                35.7G  26.1G    21K  /export
rpool/export/home           35.7G  26.1G    21K  /export/home
rpool/export/home/mishuang  35.7G  26.1G  22.7G  /export/home/mishuang
rpool/swap                   755M  26.3G   553M  -
或者更简单一些,用beadm:
# beadm mount opensolaris /mnt/opensolaris
# beadm unmount opensolaris
主目录的文件系统是rpool/export/home/mishuang,挂载点是/export/home/mishuang,你想将这个文件系统拷贝到另外一台机器上,如果是Linux你估计得折腾一阵子了,OpenSolaris两个命令就搞定了,
# zfs snapshot rpool/export/home/mishuang@send
# zfs send rpool/export/home/mishuang@send | ssh leape "zfs recv rpool/export/home/mishuang"
参考资料:
http://opensolaris.org/os/community/zfs/
http://opensolaris.org/os/community/zfs/intro/
http://opensolaris.org/os/community/zfs/docs/zfs_last.pdf
http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf
http://jbowdenassociates.com/docs/Solaris/zfs_overview.pdf
http://dlc.sun.com/osol/g11n/content/2009.06/snapupgrade/zh/index.html
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23177/showart_1993018.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP