本文要点:
一、认识EXT2文件系统
二、文件系统的简单操作
三、磁盘的分割、格式化、检验与载入
四、设置启动载入
五、建立虚拟内存
一、认识EXT2文件系统
1、通常一个扇区的大小为512字节;
2、分区的要点就是记录每一个分区的起始与结束柱面;
3、MBR(master boot recorder)最多提供4个分区的记忆;
4、为提高磁头的读取效率,使用了逻辑块的概念,1Block=2n扇区;
5、每个文集系统开始位置的那个块称为超级块。超级块存储文件系统的大小、空的和满的块,以及其他信息;
6、ext2规划出inode与Block来分别储存档案的属性(放在inode当中)与档案的内容(放置在Block area当中)。
inode记录的信息:
1、该档案拥有者与群组(owner/group);
2、该档案的存取模式(read/write/excute);
3、该档案的类型(type f、b、c、s、l、p、d);
4、该档案建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改的时间(mtime);
5、该档案的容量;
6、定义档案特性的旗标(flag),如SetUID setgid,stickybit;
7、该档案真正内容的指向(pointer);
……
目录:在linux ext2文件系统建立一个目录时,ext2文件系统给该目录一个inode和至少一个block。inode记录目录属性,块记录这个目录下文件或目录的相关性。
文件:ext2至少给文件分配一个inode和相对于该文件大小的块的数量。
inode本身不记录文件名,仅记录文件的相关属性,文件名则记录在目录所属的块区域。使用dumpe2fs查看inode等的信息。
读取/etc/vsftpd/vsftpd.conf过程:
Ext2的几个特征:
1、block与inode在格式化的时候就确定了;
2、一个分区能够容纳的文件数量与inode有关;
3、一个inode的大小为128字节;
4、块为固定大小,一般为1024/2048/4096,块的大小,在分时候的时候根据分区所要存储的文件类型决定块的大小;
1、当系统要写入一个档案的时候,会先在日志记录区块中记录:某个档案准备要写入磁盘;
2、开始写入档案的权限与数据;
3、开始更新metadata的数据;
4、完成数据与metadata的更新,在日志记录区块当中完成该档案的记录。
linux文件系统的运行:采取异步方式,读取一个文件时,将文件所在的块数据加载到内存中,如果文件数据被修改,在内存中的数据就被标记为“脏”,而磁盘中的数据还没有被修改,需要写入磁盘,以保证一致性。
载入点:必须是一个目录,不能是一个文件。
linux支持的文件系统查看/proc/filesystems或/lib/modules/`uname -r`/kernel/fs
二、文件系统的简单操作
df [-ahikHTm] [目录或文件名] 显示系统中当前磁盘的总容量、已使用容量和剩余容量的一些信息。
参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统;
-b:以Bytes为单位显示各文件系统;
-k:以KBytes为单位显示各文件系统;
-m:以MBytes为单位显示各文件系统;
-h:以人们较易阅读的显示各文件系统;
-H:以M=1000K取代M=1024K的进位方式;
-T:将分区的文件系统名称(例如ext3)显示出来;
-i:不用硬盘容量,而以inode的数量来显示。
du [-ahskm] 档案或目录名称 查看磁盘、目录的大小
参数:
-a:列出所有的档案与目录容量,因为预设仅统计目录底下的文件量而已;
-h:以人们易读的容量格式显示;
-s:列出总量,而不列出每个目录占用的容量;
-k:以KBytes列出容量显示;
-m:以MBytes列出容量显示。
ln [-sf] 来源文件 目标文件
参数:
-s:如果ln不加任何参数就进行连结,那就是hard link,至于-s就是symbolic link;
-f:如果目标文件存在时,就主动的将目标文件直接移除后再建立。
Hard Link(硬式连结或实际连结):不能跨filesystem,不能link目录。
symbolic Link(符号连结,亦即快捷方式):可以和windows的快捷方式划等号。
三、磁盘的分割、格式化、检验与挂载
fdisk [-l] 装置名称
-l:输出后面接的设备所有的分区内容。若仅是fdisk -l时,则系统将会把整个系统内能够搜寻到的装置的分区全部列出来。
比较重要的有:
d删除一个磁盘分割;
n新增一个磁盘分割;
p将目前的磁盘分割列出来;
q不存储离开!
w写入磁盘分割表后离开!
partprobe
mke2fs [-bicLj] 装置名称 (make ext2 file system)
参数:
-b:可以设定每个block的大小,目前支持1024、2048、4096bytes三种;
-i:多少容量给予一个inode呢;
-c:检查磁盘错误,只下达一次-c时,会进行快速读取测试;如果下达两次-c -c的话,会测试读写,会很慢;
-L:后面可以接卷标名称(Lable);
-j:本来mke2fs是EXT2,加上-j后,会主动加入日志而成为EXT3;
mkfs、mkfs.ext2、mkfs.ext3、mkfs.dos、mkfs.vfa
fsck [-AtCary] 装置名称
参数:
-t:fsck可以检查几种不同的filesystem,而fsck只是一支综合程序而已。个别filesystem的检验程序都在/sbin底下,使用ls -l /sbin/fsck*去检查就知道有几种filesystem了;
-A:依据/etc/fstab的内容,将所有的装置都扫描一次(通常开机过程中就会执行此一指令);
-a:自动修复检查到的有问题的扇区,不用一直按y;
-r:一定要让使用者决定是否需要修复,这与上一个-a刚好相反;
-y:与-a类似,但是某些filesystem仅支持-y这个参数,所有也可以利用-y;
-C:可以在检验的过程当中,使用一个长条图来显示目前的进度;
-f:强制检查,一般来说,如果fsck没有发现任何unclean的旗标,不会主动进入内部检查的,如果想要强制fsck进入内部检查,就得加上-f旗标;
系统出现极大的问题,导致你在linux开机的时候得进入单人单机模式下进行维护的行为时,才使用fsck;被检查的partition务必不可挂载到系统上,即在卸载的状态下进行检查。
badblock [-svw] 装置名称
参数说明:
-s:在屏幕上列出进度;
-v:可以在屏幕上看到进度;
-w:使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已经有档案时;
sync:直接将系统暂时存在内存当中的数据回存写入磁盘当中;
磁盘的挂载与卸载
mount [-tonL] 装置名称代号 挂载点
参数:
-a:依照/etc/fstab的内容将所有相关的磁盘都挂上来;
-n:一般来说,当我们挂载文件系统到linux上时,linux会主动的将目前的分区与文件系统还有对应的挂载点,都记录到/etc/mtab那个档案中。不过,有些时候(例如不正常关机导致一些问题,而进入单人模式)系统无法写入/etc/mtab时,就可以加上-n这个参数来略过写入mtab的动作;
-L:系统除了利用装置名称代号之外,还可以利用分区的卷标进行挂载,所以,最好为分区取一个系统当中独一无二的名称;
-t:linux支持的档案格式。举例来说,在挂载时,加上-t ext3来告知系统,用ext3的档案格式来挂载该分区;
至于系统支持的filesystem类型在/lib/modules/`uname -r`/kernel/fs或/proc/filesystems当中。
常见的有:ext2、ext3、reiserfs等linux惯用的文件系统;vfat、msdos登windows常见filesystem;iso9660为光盘片的格式;nfs、smbfs等网络相关档案系统。
-o:后面可以接一些挂载时,额外加上的的参数:比如账号、密码、读写权限等;
ro、rw:此partition为只读(ro)或可读写(rw);
async、sync:此partition为同步写入(sync)或异步(async),预设是async;
auto、noauto:允许此分区被以mount -a自动挂载(auto);
dev、nodev:是否允许此分区上建立设备文件,dev为允许;
suid、nosuid:是否允许此分区含有suid/sgid的文件格式;
exec、noexec:是否允许此分区上拥有可执行binary档案;
user、nouser:是否允许此分区让用户执行mount。一般来说,mount仅有root可以进行,但使用user参数,则可让一般用户也能够对此分区进行mount;
defaults:默认值为:rw、suid、dev、exec、auto、nouser and async;
remount:重新挂载,在系统出错或重新更新参数时,很有用。
mount -a依照/etc/fstab的参数内容将所有的磁盘重新挂上去;
由于各个文件系统并不相同,所有挂载前要知道该分区的文件系统,若mount后面没有加-t档案系统格式时,则linux在预设的情况下,会主动以/etc/filesystem这个档案内规范的档案系统格式来尝试主动的挂载;
也可以利用mount将某个目录挂载到另外一个目录;
e2label 装置名称 新的label名称
四、设置启动载入
挂载软盘:
mount -t ext2 /dev/fd0 /mnt/floppy
mount -t vfat /dev/fd0 /mnt/floppy
挂载windows磁盘:
mount -t vfat /dev/hda1 /mnt/windows
mount -t vfat -o iochartset=cp950 /dev/hda1 /mnt/windows
开机挂载/etc/fstab及/etc/mtab
根目录/是必须载入的,而且是第一个载入的;
其他载入点必须是已建立的目录;
所有载入点在同一时间内,只能载入一次;
所有分区在同一时间内,只能载入一次;
若进行卸载,必须将工作目录移到载入点(及其子目录)之外;
五、建立虚拟内存
fdisk新建立一个分区,mkswap /devsda?
dwapon /dev/sda? swapoff /dev/sda?
dd if=/dev/zero of=/tmp/swap bs=1M count=100或dd </dev/zero>/tmp/swap bs=1M count=100
mkswap /tmp/swap
swapon /tmp/swap
swapoff /tmp/swap
注意使用free查看内存的情况