nuligannima 2013-06-26
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