网络操作系统-Linux基础 主讲人:王柯wangk@swnu.edu.cn 西南师范大学计算机科学系2005年春 Red Hat Linux 文件系统 第7章-第8章 第7章Linux文件系统 Linux的多级目录结构(树型目录) 问题:为什么UNIX/Linux中需要有I 节点(索引节点)? 文件目录改进 为加快目录检索可采用目录项分解法:把FCB分成两部分: 符号目录顶(次部) 文件名,文件号 基本目录项(主部) 除文件名外的所有项目 例子:一个FCB有48个字节 符号目录项占8字节 文件名6字节,文件号2字节 基本目录项占48-6=42字节 假设,物理块大小512字节 解: 分解前:占512/48=10个FCB 分解后:占512/8=64个符号目录项或 512/42=12个基本目录项 假设:目录文件有128个目录项 分解前:占13块 分解后:符号目录项占2块 基本目录项占11块 查找一个文件的平均访盘次数 分解前:(1+13)/2=7次 分解后:(1+2)/2 +1 =2.5次 减少了访问硬盘的次数,提高了检索速 度 问题: 在Linux中,有一纯文本文件/usr/wangk/source.txt (1)如果用下面的命令序列 $ln /usr/wangk/source.txt /usr/zhang/new1.txt (建 立硬链接文件) $rm /usr/wangk/source.txt (删除原来的文件) $cat /usr/zhang/new1.txt (欲显示纯文本文件内容) 问:能正确显示出原纯文本文件内容吗? 请叙述其中原理。 /usr/wangk 硬链接 /usr/zhang …… Source.txt …… …… New1.txt …… I-node Southwes t normal university /usr/wang 符号链接 /usr/zhang …… Source.txt …… …… New1.txt …… I-node I-node Southwes t normal university /usr/wang/source.txt Device DosDevices ... ... A: ... Floppy0 wang Exam1.c A:\wang\exam1.c \Device\Floppy0 Exam2.c \Device\Floppy0\wang\exam1.c 7.1 Linux文件系统 ? 7.1.1 Linux与DOS文件系统的区别 ? 7.1.2 Linux文件系统结构 7.2 Linux的文件 ? 7.2.1 文件名点文件 ? 7.2.2 文件类型 普通文件目录文件设备文件链接文件 ? 7.2.3 文件权限 other read write execution group user all 7.3 ext3文件系统 ? 7.3.1 文件系统的类型 ? 7.3.2 ext2文件系统 ? 7.3.3 ext3文件系统 7.3.2 ext2文件系统 ?Ext2文件系统 – 1993年Remy Card开发Ext2(Second Extended File System) –由块组(block group)组成 – i-node:Linux中每个文件都用一个数据结构表 示,这就是i-node。i-node包含:文件类型、访 问权限、文件所有者、时间戳、文件大小、指 块的指针。 型的文件,是包含了一系列级录项的文件。每条记录 含了一个I-node号和相应的文件名。 7.3.2 ext2文件系统 ?Ext2文件系统结构(外存盘卷结构) 7.3.2 ext2文件系统 ? Ext2 super-block中的信息 7.3.2 ext2文件系统 ? Ext2 块组描述符 7.3.2 ext2文件系统 ? Ext2 i-node 7.3.2 ext2文件系统 ?目录项信息 14 4 名称长度 (目录项名称的长度, 以字节为单位) i2 i1 索引节点 (目录项的I-node) 名称 (目录项名称) Very_long_name file 7.3.2 ext2文件系统 ?Ext2文件系统工具 – mke2fs:创建文件系统 – e2fsck:检查文件系统完整性 – tune2fs:修改文件系统参数 – dumpe2fs:备份文件系统 – debugfs:调试文件系统 7.3.2 ext2文件系统 ?文件系统管理和维护 – mount、umount:安装和卸载文件系统 – df、du:检查文件系统使用情况 – mkdir、rmdir:建立删除目录 – ls:文件列表 – ln:建立链接 – find:查找文件 – fdisk:磁盘分区 ?备份 – dump、restore – tar 虚拟文件系统(VFS) ?VFS是一个中间层,它负责处理所有对 文件的系统调用,运行物理文件系统中 相应的过程来实现具体的I/O操作。 用户程序 Sytem call interface VFS Ext2 FSDos FS NTFS Buffer Cache Device Driver Linux Kernel Hareware System call I/O request Disk Controler 虚拟文件系统(VFS) ?每个已经mount的文件系统由一个VFS super block描述,它包含以下信息: 虚拟文件系统(VFS) ?VFS中的文件、目录等均由对应的I-node代表。VFS I-node只存在于内核内存中,实际保存于VFS的I- node高速缓存中。VFS I-node的数据域如下: 7.4 安装和卸载文件系统 ? 7.4.1 用mount命令挂载文件系统 ? 7.4.2 用umount命令卸载文件系统 ? 7.4.3 手工编辑/etc/fstab文件,实现系统引导时自动挂载 文件系统 检查磁盘上的坏块和 文件系统的完整性 ?检查磁盘上的坏块 – #badblocks /dev/hd0H1440 1440 > bad-blocks ?检查文件系统的完整性 – #fsck –t ext2 –l bad-blocks /dev/fd0H1440 注意:fsck只能检查尚未mount的文件系统,因为该命 令需要以原始方式读写磁盘。 挂载Windows下的硬盘分区 ?手动挂载 – #mount –t vfat –o iocharset=gb2312 /dev/hda1 /mnt/G ?自动挂载 – #cd /root/.kde/Autostart – #gedit mountwin.sh –输入mount –t vfat –o iocharset=gb2312 /dev/hda1 /mnt/G 挂载CD-ROM ?手动挂载 – #mount –t iso9660 –o iocharset=cp936 /dev/cdrom /mnt/cdrom 挂载Udisk ?手动挂载 – #mount –t vfat –o iocharset=cp936 /dev/sda1 /mnt/Udisk 挂载floppy ?手动挂载 #mount –t msdos –o iocharset=cp936 /dev/fd0 /mnt/floppy ?格式化软盘 # fdformat /dev/fd0H1440 ?在软盘上建立ext2文件系统 # mkfs -t ext2 /dev/fd0 ?在软盘上建立FAT16文件系统 # mkfs -t msdos /dev/fd0 7.5 创建ext3文件系统 ? 7.5.1 使用parted mkpart创建磁盘分区 ? 7.5.2 使用mkfs格式化分区 ? 7.5.3 使用parted rm删除磁盘分区 ? 7.5.4 使用parted resize重新划分分区大小 7.6 转换到ext3文件系统 ? /sbin/tune2fs –j /dev/hdax 7.7 还原到ext2文件系统 7.8 交换文件与交换分区 ? 7.8.1 交换文件 –创建交换文件 #dd if=/dev/zero of=/extra-swap bs=1024 count =1024 –创建交换文件 #mkswap /extra-swap 1024 –激活交换文件 #swapon /extra-swap ? 7.8.2 交换分区 –创建交换分区 #fdisk hda –创建交换分区 #mkswap /hda4 1234 –激活交换分区 #swapon /hda4 7.8 交换文件与交换分区 ? 7.8.3 –关闭交换文件 #swapoff /extra-swap –关闭交换分区 #swapoff /hda4 7.9 查看磁盘使用情况 ? #fdisk –l //List partition tables ? #du –hs //Disk Usage report ? #df -h //Disk Free report 无文件系统的磁盘 ?不是所有的磁盘或分区都以文件系统的方式使用,如 Linux以原始方式使用交换分区;许多软盘中的数据也 是以原始方式组织的,如Linux的引导软盘中就没有文 件系统。 ?避免使用文件系统的优点: –可以充分利用磁盘空间,因为文件系统总是有一些额外开销。 –能提高磁盘在不同系统之间的兼容性。例如,利用tar备份的 数据,几乎可在任意操作系统中读取。 ? Linux中使用无文件系统的原始磁盘主要是dd命令,例 如: –将磁盘上的数据保存到文件系统的floppy-image文件中: #dd if=/dev/fd0H1440 of=floppy-image –将文件系统的floppy-image文件中的数据以原始方式保存到磁 盘上#dd if=floppy-image of=/dev/fd0H1440 ? DOS中使用无文件系统的原始磁盘,主要工具是hd- copy、rawrite等。 网络操作系统-Linux基础 主讲人:王柯wangk@swnu.edu.cn 西南师范大学计算机科学系2005年春 第8章常用的文件操作命令 8.1 Shell命令与DOS命令的区别 8.2 使用man命令获取帮助 8.3 浏览与阅读命令 ? 8.3.1 浏览目录命令 –#ls – #pwd –#cd – #dir ? 8.3.2 阅读与搜索文件命令 –#cat –#more –#ls –#cut –#find – #locate – #touch – #split – #head – #tail ? 8.3.3 打印文件命令 –#lpr –#lprm –#lpd –#lpq 8.4 操作与管理命令 ? 8.4.1 子目录管理命令 –#mkdir –#rmdir ? 8.4.2 文件操作命令 –#rm –#mv –#cp –#ln ? 8.4.3 权限设置命令 –#chmod – #chown ? 8.4.4 压缩与解压缩命令 –#tar – #gzip –#compress 8.4 浏览与阅读命令 ? 8.3.5 权限设置命令 –#chmod –#chown ? 8.3.6 操作与管理命令 – #mkdir – #rmdir –#rm –#mv –#cp –#ln