RH133—Unit4 文件系统的管理node
1、系统在初始化时如何识别硬盘
一、系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,然后面的16X4的空间就是存储分区表信息的位置;以下图
二、在分区表中,主要储存了如下信息:
(1)分区号,常见的分区号有如下几种:其它编号可使用fdisk指令,再执行 l (小写L) 查看 linux
0x5 (or 0xf) | 扩展分区 |
0x82 | Linux swap |
0x83 | Linux |
0x8e | Linux LVM |
0xfd | Linux RAID auto |
(2)分区的起始磁柱;
(3)磁柱的总数;
因此在系统初始化时,就根据分区表中的这三项信息来识别硬盘。windows
2、介绍硬盘分区的相关事项
一、当主分区都用完时,可使用扩展分区来增长额外的分区,这已在前面介绍过了,可是在Linux的kernel里:
·IDE的硬盘最多能够支持到16个分区;
·SCSI硬盘最多支持15个分区;
二、硬盘作多分区的好处:以下:
(1)从控制方面的考虑
将硬盘分红多个分区,就能够把应用程序、使用者的资料、或是一些须要有安全性的资料,分别放入不一样分区中方便管理;
(2)从效率方面的考虑
由于硬盘在使用一段时间后,都分有区块不连续的状况,若是一块大容量的硬盘没有划分红多个小分区,那么硬盘在搜索信息时,由于搜索的范围很是大,因此会比较久,若是将大容量的硬盘划分多个小分区,在搜索的时候相对就会快一些;
(3)为为使用磁盘配额的功能
由于配额只能对分区作设定,因此咱们能够将/home目录单独作一个分区,而后能够对这个分区作配额;
(4)从资料备份和恢复考虑
例如,/home这个目录是专门用于存放用户信息的目录,将这个目录单独设定一个分区,就能够按期就是个分区做备份工做,恢复的时候也比较方便。缓存
3、介绍分区的管理
一、可使用下面的指令来创建分区及查看分区
fdisk /dev/hda 创建分区
参数:-l 查看分区
执行 fdisk 指令后,以下图:
例1:在新建分区,输入n,系统会要求输入起始的磁柱编号,默认系统会指定一个最近的未使用的磁柱号,回车后,再输入结束的磁柱号,不过根据磁柱号来算一个分区的容量不太方便,能够用“+数值K或+数值M (例:+1000M)” 这样直接以容量的表示方式来设定,这样直观一些;再执行p,就能够看到新增长的分区了;
例2:删除分区,输入d,要求输入要删除的分区号,在DEVICE字段列能够看到每一个分区对应的编号,输入想要删除的分区号回车便可
之前全部操做认为没有问题,输入 w ,保存退出便可。
这时主机屏幕上会提示:
The kernel still uses old table 表示目前系统仍是在使用旧的分区表;
The new table will be used at the next reboot.表示只有在下次从新开机后才会使用新的分区表;
二、使用下面的指令从新载入分区表到kernel中,这样能够不用从新开机就能够启用新的分区表。
partprobe安全
4、创建文件系统(对硬盘分区进行格式化)
一、格式化指令及指令语法:
mke2fs [参数] 要格式化的分区
例如上面的例子中,格式化hda6这个分区 mke2fs /dev/hda6
二、格式化后,会出现一些分区的相关信息,为了理解这些信息,先了解一下分区的格式:
咱们使用fdisk创建的分区,不能直接用来存放资料,必须先对这个分区作格式化的工做,格式化就是将分区划分红一格一格的block及多少个Inode可使用,而每一个block就是文件系统存取资料的最小单位,因此才能够将资料存放在这些block中,并且每多个 block 会组成一个 group;以下图所示:除了boot sector 以外,第一个block 称为 super block 用来记录这个分区共有多少个block和inode 已经使用;多少block和inode等信息;
以下图所示:
13 block groups :表示这个分区被划分出了13个block group;
8192 blocks per group:表示每一个group中有8192个block;
2008 inodes per group:表示每一个group中有8192个inodes;
若是super block 损坏,这个分区将没法访问,因此每隔一段block 就会备份一次这个super block,以下图:
superblock backups stored on block:下面的数值就是备份super block 所在的block的位置。
三、dumpe2fs 指令查看分区的详细信息
dumpe2fs /dev/hda6 | more 查看指定分区的信息(前一页半是super block的内容,后面是每一个Group的详细信息),由于所显示的内容不少因此加上了 | more 用于分页显示;
显示信息的部分说明:
Inode count: Inode的总数量;
Block count: Block的总数量;
Free blocks: 剩余的block数量;
Fre inodes: 剩余的Inode数量;
Filesystem features: has_journal表是为ext3文件系统
四、mke2fs格式化指令格式及参数
格式:mke2fs [参数] 要格式化的分区文件名(例:/dev/hda6)
mke2fs -j /dev/hda6
参数:
·b:设定每一个block的大小,预设为1024bytes(1K),最大4096bytes(4K),若是设定太大将使用4096bytes;
·c:格式化前检查分区中是否有损坏的block;
·i :设定每一个Inode的大小,例:mke2fs –i 4096 /dev/hda6
·N:直接设定Inode 的总数量;所设置的值只是接近而矣;
·m:设定在分区上,保留多少空间给root,预设保留5%;mke2fs –m 10 /dev/hda6
·L:设定分区卷标,预设不设定,一般习惯将卷标名称设为同挂载点目录名称相同方便记忆;mke2fs –L data /dev/hda6
·j:创建成为ext3文件系统,也就是加入日志功能;服务器
5、介绍将ext2格式的分区转成ext3
一、ext2与ext3的区别以下:
(1)ext2和ext3的格式彻底相同,只是在ext3硬盘最后面有一部分空间用来存放Journal(日志)的记录;
(2)在ext2中,写资料到硬盘中时,先将资料写入缓存中,当缓存写满时才会写入硬盘中;
(3)在ext3中,写资料到硬盘中时,先将资料写入缓存中,鼗缓存写满时系统先通知Journal,再将资料写入硬盘,完成后再通知Journal,资料已完成写入工做;
(4)是否有Journal的差异:
在ext2中,系统开机时会去检查有效位(Valid bit),若是值为1,表示系统上次有正常关机;若是为0,表示上次关机未正常关机,那系统就会从头检查硬盘中的资料,这样时间会很长;
在ext3中,也就是有Journal机制里,系统开机时检查Journal的资料,来查看是否有错误产生,这样就快了不少;
(5)tune2fs –j /dev/hda6 将ext2转换成ext3
二、在ext3里有三个Journal的模式:
(1)ordered:预设模式,只记录Inode-table里的信息;
(2)Journaled:记录资料自己的信息,须要大量空间来作记录;
(3)writeback:不记录信息,可提供较好的效能;网络
6、介绍在分区里设定相应的卷标
一、前面分区的表示法一直在使用 hda1 或 sda1相似这样的表示法,其实也能够用卷标的表示法,这样更好便记忆。
二、设定及查看卷标的指令格式及说明以下:
e2label 指令:
例:e2label /dev/hda6 查看hda6分区的卷标名称;如为空白表示未设定卷标;
e2label /dev/hda6 data 设定这个分区的卷标为 data;
注:在这里先不要修改hda1~hda5的卷标,可能会形成没法开机,之后再作说明。async
7、介绍mount指令挂载分区
一、挂载的概念:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才能够读取这些设备,而这些对应的动做就是“挂载”。
mount的详细说明将在下一小节介绍
示例以下图:
下面以卷标的方式进行挂载,注意:使用卷标挂载进必须加上 –L 的参数表示使用卷标挂载
ide
8、介绍mount指令及参数
一、mount 指令格式:
mount [-t 文件系统类型] [-o 参数] 设备名或卷标 挂载点目录名
注:若是使用卷标方式挂载,必须使用 –L 参数。
(1)-t 后面设定所要挂载的文件系统的类型,例如:vfat、ext二、ext三、iso9660(光盘),一般这部分不须要加kernel能够本身判断
(2)-o 后面加一些设定参数:
· suid:容许挂载后的文件系统可使用suid、sgid的特殊权限;
· dev:容许挂载的文件系统创建设备文件,例如:/dev/hda6 下的 hda6 就是设备文件;
· exec:容许挂载文件系统后,能够执行里面的执行文件;
· noexec:不容许执行文件;
· auto:在电脑开机后自动挂载这个文件系统;
· nouser:指只容许super user (也就是root)挂载这个文件系统;
· async:设为不一样步,就是电脑写入资料时先写入缓存再写到硬盘中;
· loop:用来挂载loopback设备,例如光盘机就是loopback设备;
· ro:挂载文件系统后设定为只读;
· rw:挂载文件系统后设定为可读可写;
· remount :从新挂载文件系统;
若是在挂载ext2或ext3时,预设会使用下面的参数设定:
rw,suid,dev,exec,nouser,async工具
9、介绍卸载文件系统
一、使用mount指令查看已挂载了哪些文件系统;
卸载指令及格式以下:
umount 设备文件名或挂载点
例如:上图中已挂载到/data目录的上设备,可使用 umount /dev/hda6 或 umount /data 进行卸载
二、若是文件系统正在使用中,就没法正常卸载,可使用下面的指令查看并中止全部对这个文件系统的操做,而后再进行卸载操做;
fuser -v 设备文件名或挂载点 查看有哪一个服务或使用者正在对这个文件系统作操做;
fuser –km 设备文件名或挂载点 强制中止全部对这个文件系统的全部操做;
三、可使用 remount 这个参数来改变文件系统的状态;
例如:mount –o remount,ro /data 从新挂载文件系统为只读,这样就不用先卸载再挂载了。
10、介绍一些挂载的范例
一、挂载一个不容许执行的文件系统
mount –o noexec /dev/hda6 /data noexec表示为不容许执行;
二、挂载一个文件系统的镜像文件
mount –t iso9660 -o ro,loop boot.iso /iso 加loop参数是由于光盘是loopback设备,boot.iso为镜像文件名 ,/iso 为挂载点;
11、介绍挂载网络上的共享资源
一、在Unix 和Linux的网络资源主要分为两种 NFS (Network File System)和SMB
·NFS:Linux/Unix和Unix/Linux之间用来共享资源的;
·SMB:Linux/Unix和Microsoft(windows)之间用来共享资源的;
二、共享NFS网络资源的主机称为:NFS Server;
共享SMB网络资源折主机称为:Samba Server;
三、这些网络资源的链接方式:
(1)NFS部分的链接方式:
showmount –e IP地址 #查看共享资源
mount ip地址:/共享目录 /挂载点 #挂载网络资源
(2)SMB部分的链接方式:
smbclient –L ip地址 -N #查看指定Samba Server 上有哪些共享目录;
mount //IP地址/共享目录 /挂载点 -o username=用户名%密码 #挂载windows网络共享资源;
12、介绍/etc/fstab 文件的功能
一、fstab文件的功能就是根据fstab文件中设定的内容自动挂载设备到指定的挂载点上;
二、下面就介绍fstab这个文件内容的详细说明:
以下图:fstab文件内容共分为6个栏位
下面对上图中6个栏位分别说明:
(1)设备名:能够用“LABEL=”卷标表示法,也可使用设备名称表示法“/dev/hda6”;
(2)挂载点:挂载点目录必须是已存在的目录;
(3)文件系统类型:例如ext3,ext2等;
(4)挂载参数:就是前面mount指令中 –o 后面的参数,defaults表明使用预设参数设定;例如如/dev/hdc(光盘)和/dev/fd0(软盘)的这两行设定,exec能够执行文件,noauto 不会自动挂载,
(5)备份:设定备份次数,0表示不备份,1表示天天作一次备份,2表示每两天作一次备份;
(6)检查顺序:设定文件系统的检查顺序,0表示不检查,1表示第一个检查,2表示第二个检查,以此类推检查顺序最多到9,若是值相同,按从上到下的顺序检查,一般根目录的检查顺序排在第一位;
因此若是要在电脑开机后自动挂载文件系统就能够修改fstab这个文件的设定。
例如:能够将前面挂载的hda6写入这个文件中,当开机后自动挂载,设定方法以下,使用VI编辑fstab文件将下面的一行设定加入到最后一行便可:
/dev/hda6 /data ext3 defaults 0 0
二、在挂载光盘或软盘时,只须要执行 mount /media/cdrom 或 mount /media/floppy 就能够了,而不用指定要挂载的设备,这是由于在fstab文件中有所设定,由于在挂载目录和设备时,若是未指定要挂载的设备,电脑会先到fstab文件中查看,有没有相对应的设备及目录挂载,若是没有还会到mtab文件(其实mtab文件就是目前系统的挂载设定,因此在卸载时也查看这个mtab文件,卸载时也就只须要指定挂载点或设备就能够了)中查看。
十3、介绍auto-mounter自动挂载程序在使用网络共享时自动挂载网络共享资源
一、automounter是一个daemon程式,automounters能够监控某个目录,例如:监控/mnt/nfs目录,当咱们须要存取这个目录时,使用cd /mnt/nfs 进入这个目录时,这时automounter程式发现使用者要存取这个目录时,就会按照设定自动将网络共享资源自动进行挂载,若是过一段时间(预设60秒)不使用也会自动卸载这个目录,这样能够减小对网络产生的负荷,使用网络的利用率更高。
二、automounter的设定,以实例说明,仅供参考:
(1)vi /etc/auto.master 编辑automount主要的设定文件
(2)复制有--timeout=60那一行到下面,修改以下图:
(3)创建auto.nfs设定文件,预设/etc目录下没有这个文件,须要本身创建;
能够由 auto.misc 作为模板复制得来,并重命名为auto.nfs,编辑auto.nfs修改以下:
(4)service autofs start 启动automount服务,若是已经启动可执行service autofs restart 或 service autofs reload从新启动或从新加载配置文件;
(5)使用cd /mnt/nfs 目录,再执行ls 指令没有未何文件,
使用 cd server1 却能够进入,这时已经进行自动挂载了,这时就能够查看NFS服务器上的共享文件了。
使用mount能够查看到刚刚挂载上来的NFS网络共享目录。
注:我这里还未创建NFS文件服务器,因此这里只能作客户端的设定,如今还没法试测;
十4、介绍在ext2和ext3文件系统里有哪些属性能够设定
一、在ext2和ext3的文件系统里,都支持一些特殊的属性来控制文件的特性:
·lsattr 指令:显示文件的属性设定;
·chattr 指令:设定文件的属性;
格式:
chattr +|-|=属性[属性…] 文件名[文件名…]
+:增长属性
-:去除属性
=:设定属性
能够设定一个或多个属性
常见属性说明以下:
·A:当文件被修改时,atime(存取时间)记录不会被修改;
·a:让文件只能够附加内容,不容许原来的内容被覆盖掉;
·d:让系统在使用dump指令作备份时,能够不用备份这个文件;
·i:让文件永远不改变,不能删除或更改文件名;
·j:让系统将文件自己的信息记录在ext3的日志里,就算ext3的文件系统是挂载成ordered(有序)或writeback模式,都会将文件自己的信息记录在ext3的日志里。
·S:当文件被修改时,就作同步的动做,马上将资料写入硬盘中;
例:
chattr +a test 添加只容许附加内容的属性
chattr = test 去除掉全部的属性
十5、介绍如何使用划分好的分区或文件来看成虚拟内存(swap)
一、在Linux系统中虚拟内存称为:SWAP;
二、SWAP分为两种类型:
·用划分好的分区做为SWAP;
·用文件看成SWAP;
三、要创建SWAP的虚拟内存主要有如下几个基本设定:
(1)创建SWAP的分区或是文件,而且在创建SWAP的分区时分区的编号要设定为82;
(2)使用mkswap指令对swap分区或是swap文件写入一个特定的SWAP识别标志;
(3)必需要在/etc/fstab文件中加入适当的记录,这样才能让系统在开机后可以自动挂载SWAP;
(4)若是是SWAP的分区,要使用 swapon –a 指令启用SWAP,其实 swapon –a 指令会去读取 fstab 文件,并根据 fstab 里的记录,来启用全部的 swap 分区;
(5)若是是使用SWAP文件,则使用 swapon 指令再指定要启用哪一个SWAP文件;
(6)可使用 swapon –s 来检查SWAP的使用状况;
范例1以下:
(1)使用分区做为SWAP
·fdisk /dev/hda
·输入n;新建一个分区,若是一直之前面的例子作下来,硬盘应该还有剩余空间的,这里建立一个100M的分区;
·输入t;再输入7(我这里新建的分区是hda7,能够输入p查看到);再输入 82 (82表示设定为swap分区类型);
·再输入p;能够查看到 hda7 的system(系统)已经变为Linux swap
·wq:保存退出;
·执行“partprobe”指令,让kernel从新读取分区表;
(2)mkswap /dev/hda7 对SWAP分区或是SWAP文件写入特定的标志;相似于格式化成虚拟内存的格式;
(3)编辑/etc/fstab文件添加记录,这样一会的swapon指令才能够在fstab文件中找到相应的分区,在下次开机时也能够找到新的SWAP分区的位置;复制原来的SWAP那行记录,将原来的卷标表示法修改成/dev/hda7的设备表示法,其它保持不变;
(4)swapon –a 指令,根据fstab文件启动全部SWAP分区;为了验证能够先使用 swapon –s 指令查看当前SWAP的状态;
范例2以下:使用文件当虚拟内存这和windows下的虚拟内存使用方式很是类似
(1)创建SWAP文件,这里创建的是100M的SWAP文件
指令:dd if=/dev/zero of=/swapfile bs=1M count=100
说明:dd:转换并复制文件;
if:是inputfile的缩写,if=/dev/zero 表明要把zero文件看成输入的文件,zero文件能够是看成都是零的文件;
of:是outputfile的缩写,of=/swapfile 表明要输入到/swapfile文件上;
bs:是block size的缩写,表示强制设定swapfile的block的大小;
count:表明要创建多少个block;
(2)mkswap /swaplife 为swapfile文件写入一个swap的标志,至关于格式化成虚似内存的格式;设定成功将会出现提信息;
(3)修改 /etc/fstab文件,方式同上一范例相同,只是把 /dev/hda7改写成 /swapfile ,其它不变;
(4)swapon –a 启用swap文件
在启用前也能够用 swapon –s 查看,等启用后再次查看SWAP是否加载进来了。
十6、介绍一些维护文件系统的工具及一些重要的相关事项
一、若是文件系统的文件有丢失或毁损,可使用fsck指令来维护文件系统的一致性:
检查某个分区前,分区必须处于未挂载状态,如正在使用中,必须先进行卸载,再执行检查工做;
格式: fsck -Y /dev/hda6 -Y参说表示中途提示问题都回答Yes;
二、系统在开机时就会检查文件有没有丢失或损坏的,系统是根据/etc/fstab文件中最后一栏的设定来决定检查的前后顺序的,这个栏位前面已作过介绍;
三、若是检查出有问题文件,就会先放到 lost+found 目录中看成备分;因此当一个分区挂载成功后都会发现有这个目录存在;
四、电脑在开机时,发生严重错误,系统会用sulogin的方式启动,下图例中我将fstab文件中根目录的卷标随意的修改了一下,从新启动后将会出现严重错误,就停在了下图图的位置:
五、将ext2文件系统转成ext3文件系统,指令下如:
tune2fs -j /dev/hda6 将hda6分区转成ext3文件系统,转换成功后将有提示信息;这样原有分区内的资料将不会丢失;
六、查看文件系统目前的状态信息
dumpe2fs -h /dev/hda6 显示hda6的分区信息,这个指令前面已介绍过;
-h 能够显示superblock的信息
十7、如何加入一块新硬盘 一、第一步固然是要将硬盘接在电脑上啦; 二、进入系统后,使用fdisk对硬盘进行分区,并设定好分区类型编号;例如:linux 为 83 三、创建好分区后,执行 patrprobe 从新载入分区,使用最新分区表; 四、创建完分区后,格式化分区,若是创建的是SWAP分区,须要为这个SWAP分区写入一个SWAP标志; 五、若是要使用卷标表示法,须要为分区建立卷标名称; 六、创建新的挂载点,并将分区挂载上; 七、在/etc/fstab文件中加入新分区的记录,让电脑之后能够自动挂载这个新建的分区;