eygle.com   eygle.com
eygle.com  
 

« 瑞典游记-别章-丹麦哥本哈根游记 Part VI | Blog首页 | Brother, My Cup Is Empty »

A little more about Solaris sparse file

作者:eygle |【转载时请以超链接形式标明文章和作者信息及本声明
链接:
之前关于Sparse File And Oracle temporary tablespaces 讨论了很多。
对于Solaris上的稀疏文件(sparse file),这里做一点进一步的研究。主要使用filestat工具。
首先创建一个稀疏文件:
# mkfile -n 2m eygle.dbf
# ls -l eygle.dbf
-rw------T   1 root     dba      2097152 Aug 17 22:00 eygle.dbf
# du -sk eygle.dbf
16      eygle.dbf


使用filestat工具,我们注意到,Solaris对于这个稀疏文件共分配了32个512bytes的Block(0->15,7280->7295),也就是共16k大小。而其他extent都指向0-15,虽然extent map分配了,但是空间映像就只有32个device block,ls从inode看稀疏文件就得到了"虚假"的大小,而du -sk需要实际检查空间使用就能给出真正的空间占用。
我们通过filestat工具看一下文件空间的分配情况:
# filestat eygle.dbf
Inodes per cyl group:       6016
Inodes per block:           64
Cylinder Group no:          0
Cylinder Group blk:         64
File System Block Size:     8192
Device block size:          512
Number of device blocks:    32

Start Block    End Block    Length (Device Blocks)
-----------    -----------  ----------------------
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
       7280 -> 7295         16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16
          0 -> 15           16

Number of extents:          256
Average extent size:        0 Blocks



而经过cp以后,我们看到,空间立即分配,在Solaris下cp不会考虑稀疏文件,而GNU的Linux下CP命令具有天生的免疫力,可以识别稀疏文件。

# cp eygle.dbf eygle.dbf.bak
# ls -l eygle*
-rw------T   1 root     dba      2097152 Aug 17 22:00 eygle.dbf
-rw-------   1 root     dba      2097152 Aug 17 22:02 eygle.dbf.bak
# du -sk eygle*
16      eygle.dbf
2056    eygle.dbf.bak
# filestat eygle.dbf.bak
Inodes per cyl group:       6016
Inodes per block:           64
Cylinder Group no:          0
Cylinder Group blk:         64
File System Block Size:     8192
Device block size:          512
Number of device blocks:    4112

Start Block    End Block    Length (Device Blocks)
-----------    -----------  ----------------------
       7312 -> 7423         112
       8304 -> 8383         80
       8992 -> 9327         336
       1616 -> 1695         80
       8384 -> 8479         96
      35248 -> 36623        1376
      36640 -> 36703        64
      36720 -> 37231        512
      37632 -> 39071        1440

Number of extents:          9
Average extent size:        456 Blocks


不知道Linux上有否类似的工具?哪位熟悉Linux的请告知一下。

历史上的今天...
      >> 2009-08-17文章:
      >> 2006-08-17文章:
             在Windows上安装Oracle10gR2
------
这篇 【A little more about Solaris sparse file】来自 eygle.com | CSDN网摘| del.icio.us|Google订阅 | 鲜果订阅 | 抓虾订阅

By eygle on 2005-08-17 22:22 | Comments (2) | Posted to Unix&Linux | Edit |

相关文章 随机文章
  • 使用Solaris上的filestat工具
  • HP-UX Oracle Ioctl ASYNC_CONFIG error=1
  • Linux / Unix 下文件删除、句柄 与空间释放问题
  • Oracle EXP/IMP与临时对象的管理方式
  • Solaris安装Oracle10g之 libCstd.so.1 问题解决
  • 逻辑严谨与数据安全
    赏画:展子虔之游春图
    恢复8.1.6的数据库 勿忘svrmgrl
    使用Oracle9i的blockrecover新特性修复数据库中的坏块
    微软老矣 尚能变否?
    搜索本站:

    留言 (2)

    linux上有个stat命令可以看文件的一些存储状态,但是看不到extent map。
    dumpe2fs可以看整个文件系统的详细的存储格式,但是不能针对单个文件。
    好像网上也没搜到类似filestat的工具。

    Posted by: wanghai at August 18, 2005 10:37 AM

    我也没找到,不过原理上大致是类似的。

    Posted by: eygle at August 18, 2005 11:37 AM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004~2010 eygle.com, All rights reserved.