【鸟哥 linux 基础篇】 第8章 Linux 磁盘与文件系统管理

  • EXT文件系统
磁盘扇区(Sector)为磁盘的最小单元;一圈扇区为一个磁柱(Cylinder),磁柱是分区(partition)的最小单位;第一扇区很重要,里面有MBR(446字节)和分区表(64字节)

各接口在linux中均以文件名形式存在,比如sata硬盘为/dev/sdax。总之/dev/sd[a-p][1-15]为scsi,sata,usb,flash等接口的磁盘文件名,×hd×为IDE接口磁盘


硬盘分区刚刚说道磁柱是分区的最小单位,一般分区是指从A磁柱到B磁柱之间的区域。各个分区的磁柱范围数据记录在第一扇区的分区表(partition table)中,因为分区表只有64字节, 只能记录四笔分区记录,这四笔分区记录我们称为主分区(primary )或者延伸分区(extended)。其中 延伸分区可以分割成若干逻辑分区(logical), 能被格式化的只有主分区和逻辑分区。//注意,如果一块硬盘500G,其中400g分割成4个主分区,那么剩下100g就浪费了不能使用,要想使用它,必须至少减少一个主分区,并将剩余硬盘容量划分成延伸分区,并从延伸分区中划分若干个逻辑分区。因为第一扇区的分区表中只能放四个记录,而当有了延伸分区,延伸分区所划分出来的这些逻辑分区,他们的磁柱起止信息村子啊延伸分区中而并非第一扇区。另外,由于操作系统限制, 延伸分区只能有一个

文件系统特性任何分区在使用前要格式化成特定的文件系统,如:ext4。那么linux的ext文件系统的实质如下:每个文件系统分为若干群组,每个群组中大致含有superblock/inode/block,具体而言,superblock存储filesystem的相关信息。


对于文件而言,一个文件对应一个inode,inode中记录文件的权限、属性、block号,而对应的一个或多个block中存放者该文档的实际内容。

对于目录而言,一个目录对应一个inode,inode指向一个或多个block,其中存着目录下所有文件名和其对应inode号的表。

dumpe2fs指令可查询某个partition下的superblock和其他分区信息,可以先 df显示当前挂载设备,再用该指令如:dumpe2fs /dev/sda1。

假设想新增一个文件,流程为:
1,确定用户是否对想要新建档案的目录具有w和x权限
2,根据inode bitmap找到可用的inode号码,写入文档的权限和属性 
3,根据block bitmap 找到没有使用的block号码,写入实际文档内容数据, 且更新inode指向的block数据 
4,将刚写入的inode和block数据同步更新inode bitmap和block bitmap,并更新superblock内容。

异步方式(asynchronously) 若文档被更改,则内存中这部分数据设定为脏,并不立刻写回硬盘。可用 sync强制写入。关机前系统也会主动执行sync。

  • 文件系统的简单操作

磁盘与目录的容量:  
df:列出已挂载的文件系统的整体磁盘使用量,这些信息被存在各文件系统的superblock中
    df [-ahikHTm] [目录或文件名]
    主要参数: -h以容易阅读的格式显示  -i不用硬盘容量而用inode数目表示

du:显示目录或文件所占磁盘空间

    du [iahskm] [目录名或者文件名] 

   主要参数:-a列出所有档案和目录容量  -s列出总量 -k-m以kb或者mb显示


实体链接(hard link)与符号链接(symbolic link):ln

实体链接是将一个文档指向源文档的inode,相当于两个文档同时指向一个inode,两文档属性权限完全一样。(不能跨文件系统,不能link目录

符号链接实际上就是快捷方式。

ln:建立链接  ln [-sf] 来源文件 目标文件

    如果不加任何参数表示hard link,加上-s表示symbolic link

    -f表示如果目标文件存在,则直接移除再重建

link的数量体现在文件属性中。


  • 磁盘的分区、格式化、检验与挂载
磁盘使用前,需要进行分区、格式化并且一定要挂载到某个目录下才能使用。


磁盘分区:fdisk

fdisk [-l] 装置名(装置名不应加上数字,因为是对整个磁盘操作)。    加上-l表示输出后面装置中所有分区信息,也可不加装置名,则输出所有分区信息。

不加-l的话,就可以对该装置进行分区操作。按m可显示指令列表,q不保存退出,w保存退出。

分区后,可用 partprobe命令让系统读取新的分区表。


磁盘格式化:mkfs

mkfs [-t 文件系统格式] 装置文件名(这里应加上数字,因为格式化是对分区的操作)  eg:mkfs -t ext4 /dev/sda5 (将sata硬盘第五分区格式化为ext4)

另外,可以在格式化之后,如果不按默认值来,就可以对ext分区进行mke2fs操作,指定文件系统的标签、block大小、inode数量等。


磁盘检验:fsck,badblocks


磁盘的挂载与卸载:mount,umount

linux中所有的文件系统,要被挂载到目录树中的某个目录之后才能访问。

单一文件系统不应该被重复挂载到不同目录;单一目录不应该重复挂载多个文件系统(但实际上可以,挂在新的文件系统会暂时屏蔽掉旧的文件系统);作为挂载点的目录应为空目录。

示例:eg:mount /dev/sda2 /home/test (将sda2这个文件系统挂载到/home/test的目录下,可以不加文件系统类型,可以自动识别)

对于挂载,可以先通过fdisk -l列出所有已安装的设备名,再通过mount来挂载。

卸载:umount 装置名或文件夹名

此外,还可以将目录挂载到另一个目录下:mount --bind 目录名 目录名:可将前一个目录挂载到后一个目录。

对根目录无法卸载,可以重新挂载: mount -o remount,rw,auto / ,比如修改/etc/fstab文档来改变系统默认挂载时出问题,则可进入单人维护模式执行该指令。

可用dumpe2fs -h /dev/hdc6的方式来查询文件系统的标签,并用 mount -L “前面查询到的标签” /目录 的方式来挂载。

mount -l可以查询当前挂载的设备。


磁盘参数修订:

mknod:用以修改文件系统的标号。

在linux中,所有的装置都用文档来表示,如/dev/sda1就表示了我的电脑的sata硬盘中的第一个分区,并且每个设备都有一个major和minor标号。

用ls -l在/dev下就可以查询到,通过mknod可以修改


e2label:每个文件系统都有一个标签(比如d盘的标签叫做“software”),该标签可用于挂载,优点是可以忽略设备插在哪个接口,缺点是重名会造成问题。

         label名就用e2label来修改。


挂载点的意义 (mount point):每个文件系统(分区)必须链接到目录树上才能使用,这一过程称为挂载。

设定开机挂载:
/etc/fstab文件中存储开机挂载信息。

loop挂载镜像文件:mount -o loop /root/centos5.2_x86_64.iso , 可以用类似方法制作一个大的文件来挂载到某个目录下


  • swap建置和第六节不详细记录,见书




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值