You are on page 1of 13

author:

mtime:

..akafresco(fresco_pap@mail.ru)
26.01.2007

FreeBSD
FreeBSD
.,Linux
,,
FreeBSD UFS,
.,.

FFS Berkley,
FreeBSDUFS1,19844.2BSD,
FreeBSD,OpenBSD,NetBSD,SunSolaris
UNIX.
" " : Sun
Microsystems FFS, NetBSD
,LogStructureg
Filesystem LFS ( , , OpenBSD),
FreeBSD UFS2.
,ext2,""Linux,FFS.
, UFS1
,.
UFS1
UFS1:

8
, magic ,
,.
(cylindergroups,CG)

,
.

CG , inodes (
1inode4),inodes,
CGinodes
. , , 1
. newfs
.
UFS11661.
inode ,
(src/sys/ufs/ufs/dinode.h):

struct ufs1_dinode {
u_int16_t
di_mode;
int16_t
di_nlink;
union {
u_int16_t oldids[2];
} di_u;

/* */
/* */
/* ID (FFS) */

u_int64_t
di_size;
/*
int32_t
di_atime;
/*
int32_t
di_atimensec;
/*
int32_t
di_mtime;
/*
int32_t
di_mtimensec;
/*
int32_t
di_ctime;
/*
int32_t
di_ctimensec;
/*
ufs1_daddr_t
di_db[NDADDR];
ufs1_daddr_t
di_ib[NIADDR];
u_int32_t
di_flags;
/*
int32_t
di_blocks;
/*
int32_t
di_gen;
/*
u_int32_t
di_uid;
/*
u_int32_t
di_gid;
/*
int32_t
di_spare[2];
/*
};

*/
*/
*/
*/
*/
inode */
*/
/* 12 */
/* 3 */
*/
*/
*/
ID */
ID */
*/

UFS1
(src/sys/ufs/ufs/dir.h):

struct direct {
u_int32_t
u_int16_t
u_int8_t
u_int8_t
char
};

d_ino;
d_reclen;
d_type;
d_namlen;
d_name[MAXNAMLEN + 1];

/*
/*
/*
/*
/*

inode */
*/
*/
*/
<= MAXNAMLEN */

inode.
UFS2
BSDFFS32
,.UFS180
,500.
, 32 , 24.
,FFS32
. 20 UFS1
.32UFS1
14.
FreeBSD ,
, 2002 ,
64 . ,
UFS2.
:
FFS ( XFS
reiserfs).
FFS.
UFS1 ,
,
UFS1, UFS2. 90
, ( bugfix,
), ,
.
UFS2
inode, UFS1, 128 2
32.64
125.
.,
inode256.
, inodes
,
UFS1. , ,
20 , ,
, .

,
, .

,,
.
inode,
,.
, UFS2,
UFS1.

UFS1UFS2.,
, .
inodes
, .
,UFS1UFS2.

.

.,
(,SMP)UFS.
,
,UFS2.
UFS1
, ,
. ,
, ,
, , . ,
,
RAID.
,
.
,
. UFS2
,,
,
.USF1
80,UFS2.
UFS1 32 inodes.

inode 64 ,
. ,
().

UFS2,.
,API32inodes
. , 64 inodes,
.
4 , 32
inode.
, , 32 inode
1020 . UFS2
,,64inodes.

(B+)
.
XFS,JFS,reiserfsext4.
.,,,
FreeBSD5.0
RELEASE. ,
UFS1
. ,
,
.
,
.
, .
,
, UFS2 ,
.
UFS2.
ext3 , ,
.
UFS2. ,
, .
, . ,
, ; ,
,,

.
,
,.
(extendedattributes)
UFS2(UFS1)
. Extended attributes (EA) ,
inode,
. EA ,
HFS HFS+ Apple MacOS. EA inode
...
fsync(),,
.
inodeUFS1EA.inodeUFS2
564.,
EA15.2
,3.
,,
,
.3,
. EA
,
,EA.

EA:

()

length

name_space_class

content_pad_len

name_lenth

name

name_len

8,
,content_pad_len.,""
,,,
. ,

EA,""""
.
EA
(Access Control List ACL). ACLs UNIX
: ,
, .
,,
,,.
ACLs
, inodes
ACL.
,..ACLinode.
2 . ,
inode,,.
,ACL,..inode
ACL.
ACLEA
inode. EA ( 8 kb, 32 kb)
ACL.,..
inode(EA
),ACL
fsync().

inode
.
"2038"(203832,
,1970).,
64.48
, 64
CPU.
.
inode
. , stat()
, ( ,
,,dump,tarpax).

stat, .
,
stat().
dump
.dump,UFS1,
UFS2,,restore.
utimes(), ,
, ,
.,
, .
,,
, ,
,.
inode, 2
32.,
, , SNAPSHOT OPAQUE. ,
.
inodes
UFS1 ,
inodes .
.,
, newfs, ,
inodes,.
UFS1inodes,
, . UFS2
inodes.
inodes ,
inodes.
.
UFS2
inodes.CG
inodes (32 64 inodes). ,
inodes. ,
inodes,
,.

, inode.
,
, ,
inodes, .. inode .

inodes.,..
,
(8%,,UFS,
92%, , ,
root, ENOSPC)
inodes(26%).,
root,inode.
,.,
,inodes.
inodes ,
UFS2 1% UFS1.
64inode.

UFS1 8 .
1 ,
,
.
UFS2.boot0,8,64()256.
softupdates

,

. Soft updates ( "
"), , ,

, .

inodesoft
updates,.
(.. , ),
,,EA,
, inode. Soft updates
EAfsync().
soft updates
. UFS2,
UFS1,...
,
inode
.,
UFS2,,
.,,
.
:
, ,
.
df,
. soft updates
, ,
.statfs()
.
unlink()rm.
.

, df
.,softupdates,
,.
,
. .
,,
vnode,.
12,
,reset.
UFS2 ,

soft updates.
softupdates,
...,
, soft updates ,
12.

fsck
inodes,,inodes,
. softudates
,2
:
inode.,
fsck,
.
fsck,
inodes.
" "
. fsck
.,fsck,
,
.
,,
.inode
4,inode4050,1.
UFS2 16 2 fsck 64
1.,inodes,
, . ,
, fsck
, , ,
,32.,

,fsck.
FreeBSD ,
.
GJOURNAL GEOM
softupdates.fsck

UFS2 UFS1.
,,
. ,
UFS2 ,
8095% ,
(EA)
.

UFS
.,,
,
,..UFSRAM.
UFS2,..64.

, (
),
.,,
,,
, .
,

.
(, XFS, JFS, reiser4, ext4)

B+.
FreeBSD
. inode ,
. ,
.
,216,
.
,
ENOSPC.,,
.

, ,
.

1. "Enhancements to the Fast Filesystem To Support MultiTerabyte Storage Systems",


MarshallKirkMcKusick,BSDCon2003
2. en.wikipedia.org/wiki/UFS2
3. FreeBSD6.1
4. "FreeBSD: ", , .
,.,,2006.
,
www.filesystems.nm.ru

You might also like