磁盘文件系统管理

Ext2: Linux second extended file system, ext2fs

文件储存: 

1) 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节

2) 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

3) 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,"索引节点"。

4) 硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

文件系统数据存储:

superblock: 记录此filesystem的整体信息,包含inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等

inode: 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码

block: 数据记录文件的内容,若文件太大,会占用多个block

1. inode table

1). 文件权限(read/write/execute)

2). 文件拥有者和群组(owner/group)

3). 文件大小

4). 时间戳:ctime文件创建和权限变更的时间,mtime文件内容变动的时间,atime最后一次读取时间

5). 文件特性(flag), SetUID, SetGID

6). 链接数,即有多少文件名指向这个inode

7). 文件数据指向(poniter)block的位置

查看文件的inode信息:

stat myfile.txt

inode大小:

1) 每个inode 128bytes

2) 每个文件一个inode

3) 没1KB设置一个inode. 1G硬盘, inode table的大小为128bytes/inode * 1inode * 1000=128M

inode也会消耗硬盘空间,

节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。

假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

查看inode总数和已使用量,可以使用df命令。

df -i

2. data block

ext2支持的block大小有1K, 2K, 4K三种

格式化时,block大小就固定了,且每个block都有编号,以方便inode记录

block大小对最大文件的限制:1K(16G), 2K(256G), 4K(2T)

Ext2文件系统,block的限制

1) block的大小和数量在格式化时已确定,需要修改,必须重新格式化

2) 每个block只能防止一个文件的数据。若文件大于block,则占用多个block;若文件小于block,则block中的剩余容量将浪费

3. superblock:记录整个filesystem信息

1) block和inode的总量

2) 已使用和未使用的inode/block数量

3) block和inode的大小(block 1,2,4K, inode 128bytes)

4) filesystem的挂载时间,最近一次数据写入时间,最近一次磁检(fsck)时间

5) 一个valid bit数值。已挂载,valid bit为0;未挂载,valid bit为1

查询文件系统信息:

dumpe2fs [-h] dev

csp:~ # dumpe2fs -ob superblock /dev/sda10

dumpe2fs 1.38 (30-Jun-2005)

dumpe2fs: No such file or directory while trying to open superblock

Couldn't find valid filesystem superblock.

csp:~ # dumpe2fs  /dev/sda10

dumpe2fs 1.38 (30-Jun-2005)

Filesystem volume name:   <none>

Last mounted on:          <not available>

Filesystem UUID:          9b76118a-1923-40cc-9600-dba5bd2329ba

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal filetype needs_recovery sparse_super

Default mount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

各个挂载盘的block大小,一个目录下,文件数较多,导致一个block无法容纳下所有inode对照表

csp:~ # ll -d / /bin /boot /proc /lost+found /sbin

drwxr-xr-x  41 root root  4096 Jun 14 14:38 /             # 1个 4K block

drwxr-xr-x   2 root root  4096 Apr  2  2011 /bin          # 1个 4K block

drwxr-xr-x   3 root root  1024 Jun  2  2009 /boot         # 1个 1K block

drwx------   2 root root 16384 Jun  2  2009 /lost+found   # 16个 4K block

dr-xr-xr-x 588 root root     0 May 27 11:36 /proc         # 此目录不占用磁盘空间

drwxr-xr-x   3 root root  8192 Aug  1  2011 /sbin         # 8个 4K block

查询磁盘分区:

fdisk -l

fdisk /dev/sda

格式化

mkfs -t ext3 /dev/hda6

ext2、ext3磁盘挂载:

mkdir /mnt/hda6

mount /dev/hda6 /mnt/hda6

mount -l

cd/dvd挂载:

mkdir /media/cdrom

mount /dev/cdrom /media/cdrom

格式化挂载软盘:

mkfs -t vfat /dev/df0

mkdir /media/floppy

mount -t vfat /dev/fd0 /media/floppy

挂载闪存:

mkdir /mnt/flash

mount -t vfat /dev/sda1 /mnt/flash

卸载:

unmount [-fn] 挂载点/设备名

开机挂载:

/etc/fstab

/etc/mtab

相关推荐