- 浏览: 400505 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
生于菇乡:
GRANT CREATE ROUTINE,ALTER ROUT ...
mysql 存储过程权限相关 -
cocos:
[MYSQL] ERROR: cannot allocate ...
一次数据库升级过程 mysql5.0.78 到 5.1.57 -
cocos:
MySQL ERROR] Plugin 'InnoDB' in ...
一次数据库升级过程 mysql5.0.78 到 5.1.57 -
rjgcs123:
云集国内redis大佬的群正在招募各路redis朋友,不管你是 ...
redis 安装 配置解析 -
cocos:
mkfsmkfs -t 文件系统类型 /dev/设备名如要把/ ...
mount
RH133—Unit4 文件系统的管理
一、系统在初始化时如何识别硬盘
1、系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16X4的空间就是存储分区表信息的位置;如下图
2、在分区表中,主要储存了以下信息:
(1)分区号,常见的分区号有以下几种:其它编号可以使用fdisk指令,再执行 l (小写L) 查看 0x5 (or 0xf) 扩展分区
0x82 Linux swap
0x83 Linux
0x8e Linux LVM
0xfd Linux RAID auto
(2)分区的起始磁柱;
(3)磁柱的总数;
所以在系统初始化时,就根据分区表中的这三项信息来识别硬盘。
二、介绍硬盘分区的相关事项
1、当主分区都用完时,可以使用扩展分区来增加额外的分区,这已在前面介绍过了,但是在Linux的kernel里:
·IDE的硬盘最多可以支持到16个分区;
·SCSI硬盘最多支持15个分区;
2、硬盘做多分区的好处:如下:
(1)从控制方面的考虑
将硬盘分成多个分区,就可以把应用程序、使用者的资料、或是一些需要有安全性的资料,分别放入不同分区中方便管理;
(2)从效率方面的考虑
因为硬盘在使用一段时间后,都分有区块不连续的情况,如果一块大容量的硬盘没有划分成多个小分区,那么硬盘在搜索信息时,因为搜索的范围非常大,所以会比较久,如果将大容量的硬盘划分多个小分区,在搜索的时候相对就会快一些;
(3)为为使用磁盘配额的功能
因为配额只能对分区做设定,所以我们可以将/home目录单独做一个分区,然后可以对这个分区做配额;
(4)从资料备份和恢复考虑
例如,/home这个目录是专门用于存放用户信息的目录,将这个目录单独设定一个分区,就可以定期就是个分区作备份工作,恢复的时候也比较方便。
三、介绍分区的管理
1、可以使用下面的指令来建立分区及查看分区
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.表示只有在下次重新开机后才会使用新的分区表;
2、使用下面的指令重新载入分区表到kernel中,这样可以不用重新开机就可以启用新的分区表。
partprobe
四、建立文件系统(对硬盘分区进行格式化)
1、格式化指令及指令语法:
mke2fs [参数] 要格式化的分区
例如上面的例子中,格式化hda6这个分区 mke2fs /dev/hda6
2、格式化后,会出现一些分区的相关信息,为了理解这些信息,先了解一下分区的格式:
我们使用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的位置。
3、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文件系统
4、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文件系统,也就是加入日志功能;
五、介绍将ext2格式的分区转成ext3
1、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
2、在ext3里有三个Journal的模式:
(1)ordered:预设模式,只记录Inode-table里的信息;
(2)Journaled:记录资料本身的信息,需要大量空间来做记录;
(3)writeback:不记录信息,可提供较好的效能;
六、介绍在分区里设定相应的卷标
1、前面分区的表示法一直在使用 hda1 或 sda1类似这样的表示法,其实也可以用卷标的表示法,这样更好便记忆。
2、设定及查看卷标的指令格式及说明如下:
e2label 指令:
例:e2label /dev/hda6 查看hda6分区的卷标名称;如为空白表示未设定卷标;
e2label /dev/hda6 data 设定这个分区的卷标为 data;
注:在这里先不要修改hda1~hda5的卷标,可能会造成无法开机,以后再做说明。
七、介绍mount指令挂载分区
1、挂载的概念:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。
mount的详细说明将在下一小节介绍
示例如下图:
下面以卷标的方式进行挂载,注意:使用卷标挂载进必须加上 –L 的参数表示使用卷标挂载
八、介绍mount指令及参数
1、mount 指令格式:
mount [-t 文件系统类型] [-o 参数] 设备名或卷标 挂载点目录名
注:如果使用卷标方式挂载,必须使用 –L 参数。
(1)-t 后面设定所要挂载的文件系统的类型,例如:vfat、ext2、ext3、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
九、介绍卸载文件系统
1、使用mount指令查看已挂载了哪些文件系统;
卸载指令及格式如下:
umount 设备文件名或挂载点
例如:上图中已挂载到/data目录的上设备,可以使用 umount /dev/hda6 或 umount /data 进行卸载
2、如果文件系统正在使用中,就无法正常卸载,可以使用下面的指令查看并停止所有对这个文件系统的操作,然后再进行卸载操作;
fuser -v 设备文件名或挂载点 查看有哪个服务或使用者正在对这个文件系统做操作;
fuser –km 设备文件名或挂载点 强制停止所有对这个文件系统的所有操作;
3、可以使用 remount 这个参数来改变文件系统的状态;
例如:mount –o remount,ro /data 重新挂载文件系统为只读,这样就不用先卸载再挂载了。
十、介绍一些挂载的范例
1、挂载一个不允许执行的文件系统
mount –o noexec /dev/hda6 /data noexec表示为不允许执行;
2、挂载一个文件系统的镜像文件
mount –t iso9660 -o ro,loop boot.iso /iso 加loop参数是因为光盘是loopback设备,boot.iso为镜像文件名 ,/iso 为挂载点;
十一、介绍挂载网络上的共享资源
1、在Unix 和Linux的网络资源主要分为两种 NFS (Network File System)和SMB
·NFS:Linux/Unix和Unix/Linux之间用来共享资源的;
·SMB:Linux/Unix和Microsoft(windows)之间用来共享资源的;
2、共享NFS网络资源的主机称为:NFS Server;
共享SMB网络资源折主机称为:Samba Server;
3、这些网络资源的连接方式:
(1)NFS部分的连接方式:
showmount –e IP地址 #查看共享资源
mount ip地址:/共享目录 /挂载点 #挂载网络资源
(2)SMB部分的连接方式:
smbclient –L ip地址 -N #查看指定Samba Server 上有哪些共享目录;
mount //IP地址/共享目录 /挂载点 -o username=用户名%密码 #挂载windows网络共享资源;
十二、介绍/etc/fstab 文件的功能
1、fstab文件的功能就是根据fstab文件中设定的内容自动挂载设备到指定的挂载点上;
2、下面就介绍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
2、在挂载光盘或软盘时,只需要执行 mount /media/cdrom 或 mount /media/floppy 就可以了,而不用指定要挂载的设备,这是因为在fstab文件中有所设定,因为在挂载目录和设备时,如果未指定要挂载的设备,电脑会先到fstab文件中查看,有没有相对应的设备及目录挂载,如果没有还会到mtab文件(其实mtab文件就是目前系统的挂载设定,所以在卸载时也查看这个mtab文件,卸载时也就只需要指定挂载点或设备就可以了)中查看。
十三、介绍auto-mounter自动挂载程序在使用网络共享时自动挂载网络共享资源
1、automounter是一个daemon程式,automounters可以监控某个目录,例如:监控/mnt/nfs目录,当我们需要存取这个目录时,使用cd /mnt/nfs 进入这个目录时,这时automounter程式发现使用者要存取这个目录时,就会按照设定自动将网络共享资源自动进行挂载,如果过一段时间(预设60秒)不使用也会自动卸载这个目录,这样可以减少对网络产生的负荷,使用网络的利用率更高。
2、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文件服务器,所以这里只能做客户端的设定,现在还无法试测;
十四、介绍在ext2和ext3文件系统里有哪些属性可以设定
1、在ext2和ext3的文件系统里,都支持一些特殊的属性来控制文件的特性:
·lsattr 指令:显示文件的属性设定;
·chattr 指令:设定文件的属性;
格式:
chattr +|-|=属性[属性…] 文件名[文件名…]
+:增加属性
-:去除属性
=:设定属性
可以设定一个或多个属性
常见属性说明如下:
·A:当文件被修改时,atime(存取时间)记录不会被修改;
·a:让文件只可以附加内容,不允许原来的内容被覆盖掉;
·d:让系统在使用dump指令做备份时,可以不用备份这个文件;
·i:让文件永远不改变,不能删除或更改文件名;
·j:让系统将文件本身的信息记录在ext3的日志里,就算ext3的文件系统是挂载成ordered(有序)或writeback模式,都会将文件本身的信息记录在ext3的日志里。
·S:当文件被修改时,就做同步的动作,立刻将资料写入硬盘中;
例:
chattr +a test 添加只允许附加内容的属性
chattr = test 去除掉所有的属性
十五、介绍如何使用划分好的分区或文件来当作虚拟内存(swap)
1、在Linux系统中虚拟内存称为:SWAP;
2、SWAP分为两种类型:
·用划分好的分区作为SWAP;
·用文件当作SWAP;
3、要建立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是否加载进来了。
十六、介绍一些维护文件系统的工具及一些重要的相关事项
1、如果文件系统的文件有丢失或毁损,可以使用fsck指令来维护文件系统的一致性:
检查某个分区前,分区必须处于未挂载状态,如正在使用中,必须先进行卸载,再执行检查工作;
格式: fsck -Y /dev/hda6 -Y参说表示中途提示问题都回答Yes;
2、系统在开机时就会检查文件有没有丢失或损坏的,系统是根据/etc/fstab文件中最后一栏的设定来决定检查的先后顺序的,这个栏位前面已做过介绍;
3、如果检查出有问题文件,就会先放到 lost+found 目录中当作备分;所以当一个分区挂载成功后都会发现有这个目录存在;
4、电脑在开机时,发生严重错误,系统会用sulogin的方式启动,下图例中我将fstab文件中根目录的卷标随意的修改了一下,重新启动后将会出现严重错误,就停在了下图图的位置:
5、将ext2文件系统转成ext3文件系统,指令下如:
tune2fs -j /dev/hda6 将hda6分区转成ext3文件系统,转换成功后将有提示信息;这样原有分区内的资料将不会丢失;
6、查看文件系统目前的状态信息
dumpe2fs -h /dev/hda6 显示hda6的分区信息,这个指令前面已介绍过;
-h 可以显示superblock的信息
十七、如何加入一块新硬盘
1、第一步当然是要将硬盘接在电脑上啦;
2、进入系统后,使用fdisk对硬盘进行分区,并设定好分区类型编号;例如:linux 为 83
3、建立好分区后,执行 patrprobe 重新载入分区,使用最新分区表;
4、建立完分区后,格式化分区,如果建立的是SWAP分区,需要为这个SWAP分区写入一个SWAP标志;
5、如果要使用卷标表示法,需要为分区创建卷标名称;
6、建立新的挂载点,并将分区挂载上;
7、在/etc/fstab文件中加入新分区的记录,让电脑以后可以自动挂载这个新建的分区;
http://apps.hi.baidu.com/share/detail/19264886
一、系统在初始化时如何识别硬盘
1、系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16X4的空间就是存储分区表信息的位置;如下图
2、在分区表中,主要储存了以下信息:
(1)分区号,常见的分区号有以下几种:其它编号可以使用fdisk指令,再执行 l (小写L) 查看 0x5 (or 0xf) 扩展分区
0x82 Linux swap
0x83 Linux
0x8e Linux LVM
0xfd Linux RAID auto
(2)分区的起始磁柱;
(3)磁柱的总数;
所以在系统初始化时,就根据分区表中的这三项信息来识别硬盘。
二、介绍硬盘分区的相关事项
1、当主分区都用完时,可以使用扩展分区来增加额外的分区,这已在前面介绍过了,但是在Linux的kernel里:
·IDE的硬盘最多可以支持到16个分区;
·SCSI硬盘最多支持15个分区;
2、硬盘做多分区的好处:如下:
(1)从控制方面的考虑
将硬盘分成多个分区,就可以把应用程序、使用者的资料、或是一些需要有安全性的资料,分别放入不同分区中方便管理;
(2)从效率方面的考虑
因为硬盘在使用一段时间后,都分有区块不连续的情况,如果一块大容量的硬盘没有划分成多个小分区,那么硬盘在搜索信息时,因为搜索的范围非常大,所以会比较久,如果将大容量的硬盘划分多个小分区,在搜索的时候相对就会快一些;
(3)为为使用磁盘配额的功能
因为配额只能对分区做设定,所以我们可以将/home目录单独做一个分区,然后可以对这个分区做配额;
(4)从资料备份和恢复考虑
例如,/home这个目录是专门用于存放用户信息的目录,将这个目录单独设定一个分区,就可以定期就是个分区作备份工作,恢复的时候也比较方便。
三、介绍分区的管理
1、可以使用下面的指令来建立分区及查看分区
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.表示只有在下次重新开机后才会使用新的分区表;
2、使用下面的指令重新载入分区表到kernel中,这样可以不用重新开机就可以启用新的分区表。
partprobe
四、建立文件系统(对硬盘分区进行格式化)
1、格式化指令及指令语法:
mke2fs [参数] 要格式化的分区
例如上面的例子中,格式化hda6这个分区 mke2fs /dev/hda6
2、格式化后,会出现一些分区的相关信息,为了理解这些信息,先了解一下分区的格式:
我们使用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的位置。
3、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文件系统
4、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文件系统,也就是加入日志功能;
五、介绍将ext2格式的分区转成ext3
1、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
2、在ext3里有三个Journal的模式:
(1)ordered:预设模式,只记录Inode-table里的信息;
(2)Journaled:记录资料本身的信息,需要大量空间来做记录;
(3)writeback:不记录信息,可提供较好的效能;
六、介绍在分区里设定相应的卷标
1、前面分区的表示法一直在使用 hda1 或 sda1类似这样的表示法,其实也可以用卷标的表示法,这样更好便记忆。
2、设定及查看卷标的指令格式及说明如下:
e2label 指令:
例:e2label /dev/hda6 查看hda6分区的卷标名称;如为空白表示未设定卷标;
e2label /dev/hda6 data 设定这个分区的卷标为 data;
注:在这里先不要修改hda1~hda5的卷标,可能会造成无法开机,以后再做说明。
七、介绍mount指令挂载分区
1、挂载的概念:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。
mount的详细说明将在下一小节介绍
示例如下图:
下面以卷标的方式进行挂载,注意:使用卷标挂载进必须加上 –L 的参数表示使用卷标挂载
八、介绍mount指令及参数
1、mount 指令格式:
mount [-t 文件系统类型] [-o 参数] 设备名或卷标 挂载点目录名
注:如果使用卷标方式挂载,必须使用 –L 参数。
(1)-t 后面设定所要挂载的文件系统的类型,例如:vfat、ext2、ext3、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
九、介绍卸载文件系统
1、使用mount指令查看已挂载了哪些文件系统;
卸载指令及格式如下:
umount 设备文件名或挂载点
例如:上图中已挂载到/data目录的上设备,可以使用 umount /dev/hda6 或 umount /data 进行卸载
2、如果文件系统正在使用中,就无法正常卸载,可以使用下面的指令查看并停止所有对这个文件系统的操作,然后再进行卸载操作;
fuser -v 设备文件名或挂载点 查看有哪个服务或使用者正在对这个文件系统做操作;
fuser –km 设备文件名或挂载点 强制停止所有对这个文件系统的所有操作;
3、可以使用 remount 这个参数来改变文件系统的状态;
例如:mount –o remount,ro /data 重新挂载文件系统为只读,这样就不用先卸载再挂载了。
十、介绍一些挂载的范例
1、挂载一个不允许执行的文件系统
mount –o noexec /dev/hda6 /data noexec表示为不允许执行;
2、挂载一个文件系统的镜像文件
mount –t iso9660 -o ro,loop boot.iso /iso 加loop参数是因为光盘是loopback设备,boot.iso为镜像文件名 ,/iso 为挂载点;
十一、介绍挂载网络上的共享资源
1、在Unix 和Linux的网络资源主要分为两种 NFS (Network File System)和SMB
·NFS:Linux/Unix和Unix/Linux之间用来共享资源的;
·SMB:Linux/Unix和Microsoft(windows)之间用来共享资源的;
2、共享NFS网络资源的主机称为:NFS Server;
共享SMB网络资源折主机称为:Samba Server;
3、这些网络资源的连接方式:
(1)NFS部分的连接方式:
showmount –e IP地址 #查看共享资源
mount ip地址:/共享目录 /挂载点 #挂载网络资源
(2)SMB部分的连接方式:
smbclient –L ip地址 -N #查看指定Samba Server 上有哪些共享目录;
mount //IP地址/共享目录 /挂载点 -o username=用户名%密码 #挂载windows网络共享资源;
十二、介绍/etc/fstab 文件的功能
1、fstab文件的功能就是根据fstab文件中设定的内容自动挂载设备到指定的挂载点上;
2、下面就介绍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
2、在挂载光盘或软盘时,只需要执行 mount /media/cdrom 或 mount /media/floppy 就可以了,而不用指定要挂载的设备,这是因为在fstab文件中有所设定,因为在挂载目录和设备时,如果未指定要挂载的设备,电脑会先到fstab文件中查看,有没有相对应的设备及目录挂载,如果没有还会到mtab文件(其实mtab文件就是目前系统的挂载设定,所以在卸载时也查看这个mtab文件,卸载时也就只需要指定挂载点或设备就可以了)中查看。
十三、介绍auto-mounter自动挂载程序在使用网络共享时自动挂载网络共享资源
1、automounter是一个daemon程式,automounters可以监控某个目录,例如:监控/mnt/nfs目录,当我们需要存取这个目录时,使用cd /mnt/nfs 进入这个目录时,这时automounter程式发现使用者要存取这个目录时,就会按照设定自动将网络共享资源自动进行挂载,如果过一段时间(预设60秒)不使用也会自动卸载这个目录,这样可以减少对网络产生的负荷,使用网络的利用率更高。
2、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文件服务器,所以这里只能做客户端的设定,现在还无法试测;
十四、介绍在ext2和ext3文件系统里有哪些属性可以设定
1、在ext2和ext3的文件系统里,都支持一些特殊的属性来控制文件的特性:
·lsattr 指令:显示文件的属性设定;
·chattr 指令:设定文件的属性;
格式:
chattr +|-|=属性[属性…] 文件名[文件名…]
+:增加属性
-:去除属性
=:设定属性
可以设定一个或多个属性
常见属性说明如下:
·A:当文件被修改时,atime(存取时间)记录不会被修改;
·a:让文件只可以附加内容,不允许原来的内容被覆盖掉;
·d:让系统在使用dump指令做备份时,可以不用备份这个文件;
·i:让文件永远不改变,不能删除或更改文件名;
·j:让系统将文件本身的信息记录在ext3的日志里,就算ext3的文件系统是挂载成ordered(有序)或writeback模式,都会将文件本身的信息记录在ext3的日志里。
·S:当文件被修改时,就做同步的动作,立刻将资料写入硬盘中;
例:
chattr +a test 添加只允许附加内容的属性
chattr = test 去除掉所有的属性
十五、介绍如何使用划分好的分区或文件来当作虚拟内存(swap)
1、在Linux系统中虚拟内存称为:SWAP;
2、SWAP分为两种类型:
·用划分好的分区作为SWAP;
·用文件当作SWAP;
3、要建立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是否加载进来了。
十六、介绍一些维护文件系统的工具及一些重要的相关事项
1、如果文件系统的文件有丢失或毁损,可以使用fsck指令来维护文件系统的一致性:
检查某个分区前,分区必须处于未挂载状态,如正在使用中,必须先进行卸载,再执行检查工作;
格式: fsck -Y /dev/hda6 -Y参说表示中途提示问题都回答Yes;
2、系统在开机时就会检查文件有没有丢失或损坏的,系统是根据/etc/fstab文件中最后一栏的设定来决定检查的先后顺序的,这个栏位前面已做过介绍;
3、如果检查出有问题文件,就会先放到 lost+found 目录中当作备分;所以当一个分区挂载成功后都会发现有这个目录存在;
4、电脑在开机时,发生严重错误,系统会用sulogin的方式启动,下图例中我将fstab文件中根目录的卷标随意的修改了一下,重新启动后将会出现严重错误,就停在了下图图的位置:
5、将ext2文件系统转成ext3文件系统,指令下如:
tune2fs -j /dev/hda6 将hda6分区转成ext3文件系统,转换成功后将有提示信息;这样原有分区内的资料将不会丢失;
6、查看文件系统目前的状态信息
dumpe2fs -h /dev/hda6 显示hda6的分区信息,这个指令前面已介绍过;
-h 可以显示superblock的信息
十七、如何加入一块新硬盘
1、第一步当然是要将硬盘接在电脑上啦;
2、进入系统后,使用fdisk对硬盘进行分区,并设定好分区类型编号;例如:linux 为 83
3、建立好分区后,执行 patrprobe 重新载入分区,使用最新分区表;
4、建立完分区后,格式化分区,如果建立的是SWAP分区,需要为这个SWAP分区写入一个SWAP标志;
5、如果要使用卷标表示法,需要为分区创建卷标名称;
6、建立新的挂载点,并将分区挂载上;
7、在/etc/fstab文件中加入新分区的记录,让电脑以后可以自动挂载这个新建的分区;
http://apps.hi.baidu.com/share/detail/19264886
发表评论
-
微服务web开发-统一域名解决方案
2020-05-31 22:29 1216一、问题背景 在之前的项目开发中,因为团队和技术限制,服 ... -
mongodb 简单的备份
2011-07-28 18:30 1187#!/bin/sh binpath="/usr ... -
让linux用户隶属于多个组
2011-07-14 04:11 1887usermod -g 组名 用户名: ... -
VIM乱码解决办法
2011-07-07 13:07 1412set encoding=utf8 Vim 可以 ... -
bacula
2011-07-07 11:28 1083bacula -
产生连续数字文件
2011-07-07 09:23 1592seq 1 10 | xargs touch -
一些shell技巧
2011-07-07 09:16 11441. 批量删除某些指定文件 我们都知道用fi ... -
Linux下设置自动删除N天前备份
2011-07-06 21:00 1689find /data1/mysqldata/mysqlback ... -
linux内存管理浅析
2011-06-18 13:57 1291[ 地址映射 ](图:左 ... -
Linux内存:内存管理的实质
2011-06-18 13:44 10531. 内核初始化: * 内核建立好内核页目录页 ... -
内存管理机制
2011-06-18 13:42 1885内存管理是一个操作系统必不可少 . 并且 . 非常重要 ... -
linux 内存管理
2011-06-18 13:33 12731、 进程的 4G 线性空间被划分成三个部 ... -
Linux内存中Swap和Buffer Cache机制
2011-06-18 13:15 1602Linux支持虚拟内存(virtual memory),虚 ... -
linux 磁盘 sync,fsync,fflush
2011-06-18 01:18 4448sync,是同步整个系统的 ... -
linux文件系统—inode及相关概念(转载)
2011-06-16 21:39 5311当一个文件 ... -
Linux 文件系统概述
2011-06-16 21:31 1191来自:LinuxSir.Org 摘要: 本文通过文件系统 ... -
linux 文件时间
2011-06-16 21:18 1059在Linux中,没有文件创建时间的概念。只有文件的访问时间、修 ... -
linux的inode
2011-06-16 19:55 1751Inode是linux/unix操作系统中的一种数据结构 ... -
linux文件系统—inode及相关概念
2011-06-16 15:11 5045一.inode size 定义 单位:By ... -
Bash Shell 快捷键
2011-06-15 23:06 1040CTRL 键 Ctrl + a - Jump to t ...
相关推荐
【Linux 文件系统管理】 Linux 文件系统是Linux操作系统的核心组成部分,负责组织和管理计算机中的数据存储。在Linux中,文件系统不仅是文件的集合,还包括设备、符号链接等对象。本文主要探讨了在Red Hat 9.0环境...
C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...
Linux文件系统是Linux操作系统的核心组成部分,它管理着计算机上的所有数据和程序,使得用户和系统之间能有效地交互。Linux遵循一种层次结构标准,通常被称为FHS(Filesystem Hierarchy Standard),这有助于保持...
6. **缓存机制**:Linux文件系统广泛使用缓存来提高性能,如页缓存和文件系统缓存。源代码会展示如何维护这些缓存,以及何时更新和同步磁盘上的数据。 7. **同步与异步I/O**:文件系统的读写操作可以是同步的(等待...
在实际应用中,理解Linux文件系统的这些细节对于系统管理和程序开发至关重要。通过熟练掌握这些知识,我们可以更有效地管理文件,优化系统性能,以及排查和解决问题。希望《Linux文件系统结构分析》文档能提供更深入...
在这个课程设计中,我们将深入探讨Linux文件系统的实现原理,并通过模拟源代码的方式进行学习。这份"Linux文件管理系统模拟源代码"旨在帮助学生理解文件系统的工作机制,为理解和编写相关软件打下坚实基础。 首先,...
浅析Linux的文件系统和磁盘管理 Linux操作系统的文件系统是存储和管理文件的方法,所有的软硬件资源全部看做文件。文件系统是操作系统的基本结构,因几乎所有与用户、应用程序或安全性模型的沟通方法都与文件保存的...
为了方便地管理和操作这些不同类型的文件系统,Linux 引入了一个称为 VFS(Virtual File System,虚拟文件系统)的概念。VFS 提供了一套通用的接口和框架,使得内核能够透明地处理各种具体的文件系统。这种方式不仅...
Linux 硬盘和文件系统管理是 Linux 系统管理员必须掌握的重要技能。在Linux中,硬盘的管理和组织方式与Windows等其他操作系统有所不同,这里主要介绍几个关键概念和操作。 首先,分区是硬盘管理的基础。在Linux中,...
Linux文件系统管理是系统管理员日常工作中至关重要的一部分。在Linux中,磁盘管理和文件系统操作涉及到对硬件资源的有效利用和系统稳定性的维护。本文主要讲解了Linux中的proc文件系统以及磁盘分区工具fdisk的使用...
在Linux操作系统中,文件系统是管理和组织数据存储的关键部分。本实验主要涵盖了如何在Linux下创建、挂载和卸载文件系统,以及如何实现...通过实际操作,不仅可以增强对Linux文件系统的理解,还能提升系统管理能力。
Linux文件系统是Linux操作系统的核心组成部分,它负责管理和存储数据,为用户提供访问文件和目录的统一接口。Linux的一大特性是支持多种文件系统,包括但不限于ext、ext2、xia、minix、umsdos、msdos、vfat、proc、...
Linux系统的硬盘分区与文件系统 Linux 系统的硬盘分区与文件系统是 Linux 操作系统中非常重要的一部分。硬盘分区是指在硬盘上建立多个硬盘分区,以便安装多个操作系统。Linux 系统支持多种硬盘分区方式,包括主分区...
"Linux 文件系统管理" Linux 文件系统概述 ------------------- Linux 文件系统是 Linux 操作系统中的一种关键组成部分,它是 Linux 下所有文件和目录的集合。文件系统的优劣与否和操作系统的效率、稳定性及可靠性...
### Linux文件系统基础知识详解 #### 一、文件系统概述 文件系统是操作系统中不可或缺的核心组成部分之一,它负责管理和组织存储设备(如硬盘、SSD等)上的数据。具体而言,文件系统定义了一套规则和数据结构,用...
2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 空闲盘块的管理:Linux位图法 (3) 结构:超级块, i结点区, 根目录区 3. 该simdisk管理程序的功能要求如下: (1)...
Linux文件管理系统是操作系统的核心组成部分,它负责管理和组织存储在硬盘驱动器上的数据。在Linux中,文件系统采用了虚拟文件系统技术(Virtual File System, VFS),这种技术允许Linux支持多种不同的文件系统类型...
Linux操作系统的硬盘空间管理是系统管理员的一项重要任务。硬盘空间的管理不当,可能会对系统的正常运行造成不良影响,甚至造成系统瘫痪。因此,掌握硬盘空间管理的策略和实践方法是非常必要的。 首先,需要了解...
Linux虚拟文件系统(Virtual File System, VFS)是Linux操作系统的核心组成部分,它为不同类型的物理文件系统提供了一个统一的接口,使得Linux内核能够透明地管理和访问这些文件系统。VFS的设计目标是屏蔽各种物理...