Examining SNFS inodes and Directories

Examining SNFS inodes and Directories

 

Note that there were changes in the inode structures in SNFS 5.0 and later releases so examples for both are shown below. Note that the commands to get some information also changed and some new abilities within cvfsdb introduced. Use “help” in cvfsdb for the complete list of options available.

 

SNFS 4.x

 

Inodes

 

The first inode of a file contains the 1st 10 extents of the file, 0-9, "extent" 10 is actually a pointer to an extender inode. The number of extents a file has depends on how the file was written and the blocks of contiguous space it occupies on a stripe.

 

To look at an inode use "ls -li" to get it's inode then use cvfsdb to look into the metadata (and data) :

 

# pwd

/stornext/unmanaged/DIR1

# touch pcg_0000

# touch pcg_0002

# touch pcg_0003

# echo "This is the contents of my file" > myfile.pcg

# touch pcg_0004

# touch pcg_0005

 

# ls -lia

total 32896

  9 drwxrwxr-x 2 root root 2054 Jan 30 11:22 .

  2 drwxrwxrwx 6 root root 2060 Jan 30 11:18 ..

129 -rw-rw-r-- 1 root root   32 Jan 30 11:22 myfile.pcg

115 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0000

127 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0002

128 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0003

130 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0004

131 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0005

 

# cvfsdb unmanaged

 

 #####  ##   ## #######  #####  ######  ######

##    # ##   ## ##      ##    # ##    # ##    #

##      ##   ## ##      ##      ##    # ##    #

##      ##   ## #####    #####  ##    # ######

##       #   #  ##           ## ##    # ##    #

##    #   # #   ##      #    ## ##    # ##    #

 #####     #    #        #####  ######  ######

 

 

Filesystem unmanaged

Enter Command(s)

 

cvfsdb> show inode 129

ShowInode 0x81 (IelKey: 0x0, Sg: 0, Block: 0x2, ByteOffset: 1024)       <metadata is at sg 0, block 2, byte 1024>

 

  idi_marker_st     = 0x4e6f [No]

  idi_attr_flags    = 0x10

  idi_user_flags    = 0x0

  idi_expandsize    = 0x0

  idi_flags         = 0x800

  idi_mode          = 0100664

  idi_nchildren     = 0x1

  idi_nsubdirs      = 0x0

  idi_uid           = 0x0

  idi_gid           = 0x0

  idi_gen           = 0x0

  idi_dm_events     = 0x0

  idi_atime.tv_sec  = 0x52ea35fb (Thu Jan 30 11:22:35 2014)

  idi_atime.tv_nsec = 0x10ab9efc

  idi_mtime.tv_sec  = 0x52ea35fb (Thu Jan 30 11:22:35 2014)

  idi_mtime.tv_nsec = 0x119f5904

  idi_ctime.tv_sec  = 0x52ea35fb (Thu Jan 30 11:22:35 2014)

  idi_ctime.tv_nsec = 0x119f5904

  idi_crttime       = 0x52ea35fb (Thu Jan 30 11:22:35 2014)

  idi_affinity      = 0x0

  idi_size          = 0x20

  idi_blocks        = 0x1

  idi_nextiel       = 0x218     (0x86000 / 548864)

  idi_seqno         = 0x3

  idi_xattr_blk     = 0x0

  idi_ntsec_key     = 0x0

 

  Extended attribute area =

000:  0101 6001 4304 0312 5250 4c00 0000 0000  |..`.C...RPL.....

010:  0000 096d 7966 696c 652e 7063 6700 0000  |...myfile.pcg...

020:  0000 0000 0000 0000 0000 0000 0000 0000  |................

...

140:  0000 0000 0000 0000 0000 0000 0000 0000  |................

150:  0000 0000 0000 0000 0000 0000 0000 0000  |................

 

 

  Extents =

        [ 0 ] flags     = 0x1                                           <first (and only) extent>

        [ 0 ] sg        = 0x2

        [ 0 ] depth     = 0x0

        [ 0 ] frblock   = 0x0                   ( 0 - 0 = 1 )

        [ 0 ] base     *= 0x14a9f

        [ 0 ] end      *= 0x14a9f

 

  idi_marker_en     = 0x4465 [De]

 

 

Now we know where the file is stored we can look at the raw data at that sg and block :

 

cvfsdb> raw s 2 block 0x14a9f

 

RAW:s[2]blk[84639]> show | head -5

StripeGroup 2  Disk Block 84639:

000000014a9f0000:  5468 6973 2069 7320 7468 6520 636f 6e74  |This is the cont

000000014a9f0010:  656e 7473 206f 6620 6d79 2066 696c 650a  |ents of my file.

000000014a9f0020:  0000 0000 0000 0000 0000 0000 0000 0000  |................

 

 

Directories

 

Now let's look at the directory structure. "DIR1" is inode "9" which is also noted in the “Extended attribute area” of the inodes it contains (see previous inode output) :

 

# ls -lia

total 32896

  9 drwxrwxr-x 2 root root 2054 Jan 30 11:22 .

  2 drwxrwxrwx 6 root root 2060 Jan 30 11:18 ..

129 -rw-rw-r-- 1 root root   32 Jan 30 11:22 myfile.pcg

115 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0000

127 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0002

128 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0003

130 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0004

131 -rw-rw-r-- 1 root root    0 Jan 30 11:22 pcg_0005

 

cvfsdb> show inode 9

ShowInode 0x9 (IelKey: 0x0, Sg: 0, Block: 0x0, ByteOffset: 9216)

 

  idi_marker_st     = 0x4e6f [No]

  idi_attr_flags    = 0x0

  idi_user_flags    = 0x0

  idi_expandsize    = 0x0

  idi_flags         = 0x888

  idi_mode          = 040775

  idi_nchildren     = 0x8

  idi_nsubdirs      = 0x2

  idi_uid           = 0x0

  idi_gid           = 0x0

  idi_gen           = 0x0

  idi_dm_events     = 0x0

  idi_atime.tv_sec  = 0x52ea3660 (Thu Jan 30 11:24:16 2014)

  idi_atime.tv_nsec = 0x34aba39e

  idi_mtime.tv_sec  = 0x52ea3607 (Thu Jan 30 11:22:47 2014)

  idi_mtime.tv_nsec = 0x1b5714f5

  idi_ctime.tv_sec  = 0x52ea3607 (Thu Jan 30 11:22:47 2014)

  idi_ctime.tv_nsec = 0x1b5714f5

  idi_crttime       = 0x52ea2e7d (Thu Jan 30 10:50:37 2014)

  idi_affinity      = 0x0

  idi_size          = 0x800

  idi_blocks        = 0x1

  idi_nextiel       = 0x218     (0x86000 / 548864)

  idi_seqno         = 0x12

  idi_xattr_blk     = 0x0

  idi_ntsec_key     = 0x0

 

  Extended attribute area =

000:  0101 6001 4904 030c 5250 4c00 0000 0000  |..`.I...RPL.....

010:  0000 0244 4952 3100 0000 0000 0000 0000  |...DIR1.........

020:  0000 0000 0000 0000 0000 0000 0000 0000  |................

...

 

  Extents =

        [ 0 ] flags     = 0x1

        [ 0 ] sg        = 0x0

        [ 0 ] depth     = 0x0

        [ 0 ] frblock   = 0x0                   ( 0 - 0 = 1 )

        [ 0 ] base      = 0x22c

        [ 0 ] end      *= 0x22c

 

  idi_marker_en     = 0x4465 [De]

 

 

Look at the raw metadata :

 

cvfsdb> raw s 0 block 0x22c

 

RAW:s[0]blk[556]> show | less

StripeGroup 0  Disk Block 556:

00000000022c0000:  4376 4431 0007 0000 0000 0000 0000 0000  |CvD1............

00000000022c0010:  0000 0000 0000 0000 0058 0723 07d7 0735  |.........X.#...5

00000000022c0020:  0100 0000 07f5 000b 0100 0001 07e9 000c  |................

00000000022c0030:  012b 9098 077b 0012 1f4f 053b 07c5 0012  |.+...{...O.;....

00000000022c0040:  34c7 79ec 079f 0014 6848 35ad 07b3 0012  |4.y.....hH5.....

00000000022c0050:  762c a00e 078d 0012 0000 0000 0000 0000  |v,..............

00000000022c0060:  0000 0000 0000 0000 0000 0000 0000 0000  |................

...

00000000022c0770:  0000 0000 0000 0000 0000 0000 0000 0000  |................

00000000022c0780:  0000 8370 6367 5f30 3030 3500 0200 0000  |...pcg_0005.....

00000000022c0790:  0000 0000 8270 6367 5f30 3030 3400 0200  |.....pcg_0004...

00000000022c07a0:  0000 0000 0000 816d 7966 696c 652e 7063  |.......myfile.pc

00000000022c07b0:  6700 0200 0000 0000 0000 8070 6367 5f30  |g..........pcg_0

00000000022c07c0:  3030 3300 0200 0000 0000 0000 7f70 6367  |003..........pcg

00000000022c07d0:  5f30 3030 3200 0200 0000 1200 0000 0000  |_0002...........

00000000022c07e0:  0000 0000 0000 0000 0000 0000 0000 0000  |................

 

 

Now use "dc" to interpret the structure for easier reading :

 

cvfsdb> dc 9

 

Dumping cookie 0x9

 

Block 0x0: (DATA DIR - ROOT)

  cvbtdd_sig       = 0x4376 'Cv'

  cvbtdd_type      = 0x4431 'D1'

  cvbtdd_ents      = 8

  cvbtdd_flags     = 0x0

  cvbtdd_next      = 0x0

  cvbtdd_data_prev = 0x0

  cvbtdd_data_next = 0x0

  cvbtdd_brkbase   = 96

  cvbtdd_brksize   = 1819

  cvbtdd_firsthole = 0

  cvbtdd_freebytes = 1819

 

 

    keys[0-7] = [hash, base, len]

                        0:[0x01000000,2037,11]        <"." and ".." are always these>

                        1:[0x01000001,2025,12]

                        2:[0x012b9098,1915,18]        <These lines are the filename hashed followed>

                        3:[0x1f4f053b,1989,18]        <by where the name starts in the directory >

                        4:[0x34c779ec,1951,20]        <structure and the number of chars in the name>

                        5:[0x684835ad,1971,18]

                        6:[0x71416417,2007,18]

                        7:[0x762ca00e,1933,18]

 

 

entry[  0] hash-0x01000000 data-[0x9] string-[.] type-[1]

entry[  1] hash-0x01000001 data-[0x2] string-[..] type-[1]

entry[  2] hash-0x012b9098 data-[0x83] string-[pcg_0005] type-[2]

entry[  3] hash-0x1f4f053b data-[0x7f] string-[pcg_0002] type-[2]

entry[  4] hash-0x34c779ec data-[0x81] string-[myfile.pcg] type-[2]     <0x81 -> 129, the inode number>

entry[  5] hash-0x684835ad data-[0x80] string-[pcg_0003] type-[2]

entry[  6] hash-0x71416417 data-[0x73] string-[pcg_0000] type-[2]

entry[  7] hash-0x762ca00e data-[0x82] string-[pcg_0004] type-[2]

 

1 B-Tree block displayed

 

 

As files are deleted they are added to a directory list of free space in the 2Kb structure which is then used on a best-fit basis as new files are added. If we delete pcg_000 :

 

    hole = [offset, len] 0:[0,18]               <New space available in middle of directory tree>

 

    keys[0-6] = [hash, base, len]

                        0:[0x01000000,2037,11]

                        1:[0x01000001,2025,12]

                        2:[0x012b9098,1915,18]

                        3:[0x1f4f053b,1989,18]

                        4:[0x34c779ec,1951,20]

                        5:[0x684835ad,1971,18]

                        <original "6" now gone>

                        6:[0x762ca00e,1933,18]

 

 

entry[  0] hash-0x01000000 data-[0x9] string-[.] type-[1]

entry[  1] hash-0x01000001 data-[0x2] string-[..] type-[1]

entry[  2] hash-0x012b9098 data-[0x83] string-[pcg_0005] type-[2]

entry[  3] hash-0x1f4f053b data-[0x7f] string-[pcg_0002] type-[2]

entry[  4] hash-0x34c779ec data-[0x81] string-[myfile.pcg] type-[2]

entry[  5] hash-0x684835ad data-[0x80] string-[pcg_0003] type-[2]

<original "6 now gone>

entry[  6] hash-0x762ca00e data-[0x82] string-[pcg_0004] type-[2]

 

1 B-Tree block displayed

 

 

As directories contain more files or files with longer names and exceed the 2KB limit the block of data will be split into 2 new blocks containing the filenames and the hash range will determine which block they will be added to. The first block will actually be replaced by an index block referencing the data blocks.

 

 


SNFS 5.x (aka “Parker”)

 

Inodes

 

Create a test directory and some files and list their inodes for the example :

 

# mkdir /stornext/PCG_unmanaged/mydir

 

# touch /stornext/PCG_unmanaged/mydir/myfile_empty.dat0

# touch /stornext/PCG_unmanaged/mydir/myfile_empty.dat1

# echo "This is the contents of my file !" > /stornext/PCG_unmanaged/mydir/myfile_contents.dat2

# touch /stornext/PCG_unmanaged/mydir/myfile_empty.dat3

 

# ls -iltr /stornext/PCG_unmanaged/mydir

total 128

812416 -rw-rw-r-- 1 root root  0 Apr 16 11:08 myfile_empty.dat0

812417 -rw-rw-r-- 1 root root  0 Apr 16 11:08 myfile_empty.dat1

812418 -rw-rw-r-- 1 root root 34 Apr 16 11:09 myfile_contents.dat2

812419 -rw-rw-r-- 1 root root  0 Apr 16 11:09 myfile_empty.dat3

 

 

Use cvfscb to show the inode structure and get its contents directly from the stripegroup (sg) and block :

 

# cvfsdb PCG_unmanaged

 

 #####  ##   ## #######  #####  ######  ######

##    # ##   ## ##      ##    # ##    # ##    #

##      ##   ## ##      ##      ##    # ##    #

##      ##   ## #####    #####  ##    # ######

##       #   #  ##           ## ##    # ##    #

##    #   # #   ##      #    ## ##    # ##    #

 #####     #    #        #####  ######  ######

 

 

Filesystem PCG_unmanaged

Enter Command(s)

 

cvfsdb> show inode 812418

ShowInode 0xc6582 (IelKey: 0x6320, Sg: 0, Block: 0x6380, ByteOffset: 2048)

 

  idi_inode_number  = 0xc6582

  idi_attr_flags    = 0x10

  idi_user_flags    = 0x0

  idi_expandsize    = 0x0

  idi_flags         = 0x4820

  idi_mode          = 0100664

  idi_nchildren     = 0x1

  idi_nsubdirs      = 0x0

  idi_stream_cnt    = 0x0

  idi_uid           = 0x0

  idi_gid           = 0x0

  idi_gen           = 0x22

  idi_dm_events     = 0x0

  idi_atime.tv_sec  = 0x534e56d5 (Wed Apr 16 11:09:25 2014)

  idi_atime.tv_nsec = 657168107

  idi_mtime.tv_sec  = 0x534e56d5 (Wed Apr 16 11:09:25 2014)

  idi_mtime.tv_nsec = 658168133

  idi_ctime.tv_sec  = 0x534e56d5 (Wed Apr 16 11:09:25 2014)

  idi_ctime.tv_nsec = 658168133

  idi_crttime.tv_sec= 0x534e56d5 (Wed Apr 16 11:09:25 2014)

  idi_crttime.tv_nsec = 657168107

  idi_affinity      = 0x0

  idi_size          = 0x22

  idi_blocks        = 0x20

  idi_nextiel       = 0x63b     (0x18ec00 / 1633280)

  idi_seqno         = 0x3

  idi_xattr_blk     = 0x0

  idi_ntsec_key     = 0x0

 

  Btree base =

    sl_type      = 'L'

    sl_rsvd0     = 0x0

    sl_ents      = 2

    sl_brkbase   = 56

    sl_brksize   = 700

    sl_firsthole = 0

    sl_freebytes = 700

    sl_rsvd1     = 0x0

    sl_rsvd2     = 0x0

    sl_rsvd3     = 0x0

 

    keys[0-1] = [key, type, rsvd1, alloced, offs, len]

      0:[0x0000000000000000,  2, 0, 16, 756, 16]

      1:[0x000f8000000c6540, 14, 0, 20, 772, 20]

 

    payloads[0-1]

      0:extent: flags-[0x1] sg-[0x1] frblock-[0x0] base-[0xd48600] len-[0x20]

      1:RPL: parent inode-[0x000f8000000c6540] name-[myfile_contents.dat2]

 

 

cvfsdb> show raw 0xd48600 0x1 | head -5               <note command syntax change from 4.x>

 

StripeGroup 1  Disk Block 13927936:

0000000d48600000:  5468 6973 2069 7320 7468 6520 636f 6e74  |This is the cont

0000000d48600010:  656e 7473 206f 6620 6d79 2066 696c 6520  |ents of my file

0000000d48600020:  210a 0000 0000 0000 0000 0000 0000 0000  |!...............

0000000d48600030:  0000 0000 0000 0000 0000 0000 0000 0000  |................

 

 

Navigating Directories and Files

 

Note that under 5.x you can also navigate the filesystem within cvfsdb and use filenames rather than inodes :

 

cvfsdb> pwd

cwd: /

 

cvfsdb> dir

   -d- [0x0000000000000002] .

   -d- [0x0000000000000002] ..

   -d- [0x00078000000c4c43] file2

   -d- [0x0000000000000008] hatest

   -d- [0x00008000000c4d00] perfectFit

   -d- [0x00018000000c4c42] file1

   -l- [0x00008000000c3dfb] carlo_link

   -d- [0x000f8000000c6540] mydir

 

cvfsdb> cd mydir

cwd: /mydir

 

cvfsdb> dir

   -d- [0x000f8000000c6540] .

   -d- [0x0000000000000002] ..

   -f- [0x00110000000c6582] myfile_contents.dat2

   -f- [0x00100000000c6580] myfile_empty.dat0

   -f- [0x00118000000c6583] myfile_empty.dat3

   -f- [0x00108000000c6581] myfile_empty.dat1

 

cvfsdb> show inode myfile_contents.dat2

ShowInode 0x110000000c6582 (IelKey: 0x6320, Sg: 0, Block: 0x6380, ByteOffset: 2048)

 

  idi_inode_number  = 0xc6582

  idi_attr_flags    = 0x10

 

Altering Files

 

The new cvfsdb also allows us to examine and change the contents of the disk blocks using “peek” and “poke”. (Actually previously undocumented). Adding the offset to the sg and block we can read the file we created (I’ve added a translation of the ascii to the line) :

 

cvfsdb]> peek 0x1 0xd48600 0

sg/1 block/0xd48600 offs/0: 0x5468697320697320        <”This is “>

 

cvfsdb > peek 0x1 0xd48600 8

sg/1 block/0xd48600 offs/8: 0x74686520636f6e74        <”the cont”>

 

cvfsdb]> peek 0x1 0xd48600 16

sg/1 block/0xd48600 offs/16: 0x656e7473206f6620       <”ents of “>

 

cvfsdb]> peek 0x1 0xd48600 24

sg/1 block/0xd48600 offs/24: 0x6d792066696c6520       <”my file “>

 

cvfsdb > peek 0x1 0xd48600 32

sg/1 block/0xd48600 offs/32: 0x210a000000000000       <”!”>

 

Let’s transpose a couple of the characters in the 4th 64bit word and write it to the disk. Note however that the filesystem has to be inactive to do this :

 

cvfsdb> poke 0x1 0xd48600 24 0x6d79206c69666520

sg/1 block/0xd48600 offs/24: 0x6d792066696c6520 => 0x6d79206c69666520

 

On starting the filesystem back up we see :

 

# cat /stornext/PCG_unmanaged/mydir/myfile_contents.dat2

This is the contents of my life !

 

USE WITH CAUTION ! This alters the data on the data stripes (Customer data) and the metadata on metadata stripes that could result in data loss or corruption.

 

 

Info Control Block the Super Block and Stripe Groups

 

Cvfsdb is also used to examine the Info Control Block (ICB), Super Block (SB) and Stripe Group information. These are typically used as a starting point for more advanced debugging but can also show interesting general information about the filesystem and the inodes. Below the relation between the inodes shown in “df” is made in the SB :

 

(Note that in the following the mount point is the same as the filesystem name, this may not always be true)

 

# df -i /stornext/unmanaged

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/cvfsctl1_unmanaged

                      190976      46  190930    1% /stornext/unmanaged

cvfsdb> show sb

 

Super Block

    sb_marker             = 0x5375506552243230 [SuPeR$20]

    sb_Epoch              = 0x4f61236879dec (Wed Apr  2 17:59:51 2014)

    sb_FsStatus           = 0x14f04

    sb_NumDinodes         = 0x2ea00

    sb_FreeDinodes        = 0x2e9d2

    sb_InodeVersion       = 0x206 - 4.0 inode version with big inodes (0x206)

    sb_FreeListBlocks     = 0x1d

    sb_NextInodeChunk     = 0x7f1e

    sb_FreeDinodeRotor    = 0xec2784

    sb_NTSecurityIdxInode = 0x6

    sb_NTSecurityDatInode = 0x7

    sb_QuotaInode         = 0x0

    sb_IDDBInode          = 0x0

    sb_ClientWOpens       = 0x8

    sb_DumpSeqno          = 0

    sb_RJseq              = 0

    sb_binodeblksize      = 1024

    sb_csid               = 0

    sb_snapnodehead       = 0x0

    sb_ModMetaEpoch       = 0x4f61236879dec (Wed Apr  2 17:59:51 2014)

    sb_sum                = 0x3965289919

(okay)

 

cvfsdb> show icb

 

 

The ICB shows the name of the filesystem and the filesystem block size (fsBlockSize) as well as the number of stripe groups and where the metadata and journal are :

 

Info Control Block

    icb_fs_marker    = 0x4376467324243434 [CvFs$$44]

    icb_fsname       = unmanaged

    icb_fsbsize      = 0x1000                   <4K block size>

    icb_numparts     = 0x3                      <number of stripe groups>

    icb_meta_root    = 0x0                      <metadata stripe group>

    icb_journal_root = 0x1                      <journal stripe group>

    icb_inode_offs   = 0x0

    icb_sb_offs      = 0x20

    icb_arb_offs     = 0x21

    icb_cfgi_offs    = 0x22

    icb_diski_offs   = 0x26

    icb_parti_offs   = 0x36

    icb_fl_offs      = 0x46

    icb_journal_offs = 0x47

    icb_data_offs    = 0x48

    icb_sum          = 0x50956efb (okay)

 

 

And now we can examine the SG information :

 

cvfsdb> show stripegroup 2

Parti Block for StripeGroup 2

 

  parti_marker     = 0x5061527449243230 [PaRtI$20]

  parti_off        = 0x2128000

  parti_size       = 0x31fb6

  parti_inode      = 0x5

  parti_base       = 0x84a

  parti_end        = 0x856

  parti_depth      = 0x1

  parti_breadth    = 0x10

  parti_sum        = 0xeffd98f0

  parti_sg         = 0x0

  parti_rsvd1      = 0x0

  parti_name       = sg2

 

 

StorNext 5.x is a little different (example from a different filesystem) :

 

cvfsdb> show sb

 

Super Block

    sb_marker             = 0x5375506552243530 [SuPeR$50]

    sb_Epoch              = 0x4ecdb6cbc54db (Fri Dec  6 10:51:13 2013)

    sb_FsStatus           = 0x14f14

                            31BITDIRHASH

                            METADUMP_NEEDED

                            BIGEND_QUOTAS

                            EMBEDDED_CONFIG

                            UTF8C

                            RPL_ENABLED

                            RPL_CONFIGURED

                            PA35_SAFE

    sb_FsTmpStatus        = 0x0

    sb_InodeVersion       = 0x20b - 5.0 big inode (0x20b)

    sb_binodeblksize      = 1024

    sb_NTSecurityIdxInode = 0x0000000000000005

    sb_NTSecurityDatInode = 0x0000000000000006

    sb_QuotaInode         = 0x0000000000000000

    sb_ClientWOpens       = 0x0000000000000007

    sb_freei              = 0x000b0000000c3de8

    sb_pendi              = 0x00098000000c3de5

    sb_asri               = 0x000a0000000c3de6

    sb_helpi              = 0x000a8000000c3de7

    sb_iel_inode          = 0x000b8000000c3de9

    sb_OLD_binodeblksize  = 0xdeadbeef

    sb_OLD_csid           = 0

    sb_rpl_inode          = 0x0000000000000000

    sb_ModMetaEpoch       = 0x4ecdb6cbc54db (Fri Dec  6 10:51:13 2013)

    sb_sum                = 0xa1c32d5c

    (okay)

 

 

Note that the sb no longer shows the total and free inodes, this is now displayed using “show freei” which gives you even more information than in 4.x :

 

cvfsdb> show freei

  Free Inode Tree Inode

  idi_flbt_total         = 190976               <inodes totals now shown in base 10>

  idi_flbt_free          = 190930

  idi_flbt_rotor         = 0xc7640

  idi_flbt_nextchunk     = 0x32

  idi_flbt_files         = 969                  <Number of files in filesystem>

  idi_flbt_directories   = 9                    <Number of directories in filesystem>

  idi_flbt_symlinks      = 1                    <Number of links in filesystem>

  idi_flbt_other         = 0

  idi_blocks             = 1

  idi_seqno              = 0xa8

 

 

The 5.x “show icb” simply has one additional line :

 

    icb_btree_bsize  = 0x1000

 

 

But the stripegroup information is expanded :

 

cvfsdb> show stripegroup 1

Partition Block for StripeGroup 1

 

  partb_marker          = 0x5061527442243530 [PaRtB$50]

  partb_name            = sg1

  partb_nextstart       = 0

  partb_biti            = 0

  partb_slice_sz        = 0x63fe00

  partb_depth           = 0x1

  partb_breadth         = 0x100

  partb_sg              = 0x0

  partb_vers            = 0x1

  partb_rsvd0           = 0x0

  partb_sum             = 0xf67e147e

  partb_slicei          = 0x50000000c3ddc

 

  Slice        Inode             Free Blks      Used Blks    Fragments

    0    0x00058000000c3ddd          65536        6487552            1

    1    0x00060000000c3dde          16080        6537008            5

    2    0x00068000000c3ddf          16352        6536736            1

    3    0x00070000000c3de0        3665632        2887456            1

    4    0x00078000000c3de1              0        6553088            0

    5    0x00080000000c3de2            112        6552976            1

    6    0x00088000000c3de3        3321312        3231776            1

    7    0x00090000000c3de4        1934848        4619776            1

 

  Totals                           9019872       43406368           11

  Size                            52426240

 

Notes

 Updated to include 5.x structures and commands

Note by Paul Gerrish on 07/16/2014 06:33 AM

This is specific to pre-5.0 systems.

Note by Laurie Costello on 04/15/2014 11:18 AM


This page was generated by the BrainKeeper Enterprise Wiki, © 2018