文件系统

文件系统是操作系统用于明确磁盘或分区上相关文件的方法和数据结构,通俗的说法就是在磁盘上组织文件的方法。在使用前,都需要针对磁盘做初始化操作,并将记录的数据结构写到磁盘上,这种操作就是建立文件系统,在有些操作系统中称之为格式化。
Linux支持多种不同的文件系统,包括ext2、ext3、ext4、zfs、iso9660、vfat、msdos、smbfs、nfs等,还能通过加载其他模块的方式支持更多的文件系统。虽然文件系统多种多样,但是大部分Linux系统都具有类似的通用结构,包括超级块(superblock)、i节点(inode)、数据块(data block)、目录块(directory block)等。其中,超级块包括文件系统的总体信息,是文件系统的核心,所以在磁盘中会有多个超级块,以防止由于磁盘出现坏块导致全部文件系统无法使用。i节点存储所有与文件有关的元数据,也就是文件所有者、权限等属性数据以及指向的数据块,但是不包括文件名和文件内容。数据块是真实存放文件数据的部分,一个数据块默认情况下是4KB。目录块包括文件名和文件在目录中的位置,并包括文件的i节点信息。

ext2

ext2文件系统也是采取将文件数据存放到数据块中的方式来存储数据的,这些数据块的大小可以在创建文件系统的时候指定,对于存放的每个文件和目录,都会有一个inode指定,文件系统中所有的inode都是使用inode表来进行记录的,一定数量的块就会组成一个块组。在ext2文件系统中,整个分区的文件系统信息都被存放在超级块中,考虑到超级块所具有的重要性,因此在每个块组的开头中都有相同的备份。
但是ext2文件系统的弱点也是很明显的:它不支持日志功能。这很容易造成在一些情况下丢失数据,这个天然的弱点让ext2文件系统无法用于关键应用中,目前已经很少有企业使用ext2文件系统了。

ext3

为了弥补ext2文件系统的不足,有日志功能的ext3文件系统应运而生了。它直接从ext2文件系统发展而来,所以完全兼容ext2文件系统,而且支持从ext2非常简单地(只需要两条命令)转换为ext3,这种特性让也更多的老用户转而使用ext3文件系统。
那么为什么需要日志文件系统呢?因为日志文件系统使用了“两阶段提交”的方式来维护待处理的事务。比方说在写入数据之前,文件系统会先在日志中写入相关记录信息,然后再开始真实地写数据,写完数据后则会将之前写人日志中的内容删除。这样一来,如果遇到问题需要检查文件系统或对ext3文件系统进行修复时,只需要检查日志即可,而ext2修复文件系统时,则需要遍历整个文件系统来检查文件的一致性信息,因此ext3节省了大量修复文件系统所需要的时间。不过,由于增加了日志功能,在存取数据时ext3文件系统要比ext2所做的写入操作多,但是ext3对写操作做了优化,使其性能不会比ext2低。

磁盘分区、创建文件系统。挂载

磁盘使用前需要对其进行分割,这种动作被形象地称为分区。磁盘的分区分为两类,即主分区和扩展分区。受限制于磁盘的分区表大小(MBR大小为512字节,其中分区表占64字节),由于每个分区信息使用16字节,所以一块磁盘最多只能创建4个主分区,为了能支持更多分区,可以使用扩展分区(扩展分区中可以划分更多逻辑分区),但是即便这样,分区还是要受主分区+扩展分区最多不能超过4个的限制。在完成磁盘分区后,需要进行创建文件系统的操作,最后将该分区挂载到系统中的某个挂载点才可以使用。

  1. 查看新加的磁盘设备
    fdisk -l
    显示新加的 /dev/sdb 磁盘在操作系统中对应的设备文件,

    大小 1073MB, 130个柱面,而且没有分区(Disk /dev/sdb doesn't contain a valid partition table)

  2. 对新加磁盘进行分区,

fdisk /dev/新增磁盘
n (new 代表新建分区)
系统提示是创建扩展分区 extended 还是主分区 primary partition。
选择p, 在partiton number 中输入数字1,代表这是第一个分区
选择柱面或者扇面,输入1,代表从第一个柱面开始,然后输入最后一个柱面的位置,这里输入130 表示将所有的空间划分给这个分区
w (write 代表将刚创建的分区写入分区表)

  1. 分区完成之后,fdisk -l 查看,显示多出一个设备, 叫做/dev/sdb1 这就是用于下一步创建文件系统的设备。

  2. 格式化文件系统 mkfs
    mkfs -t ext3 /dev/sdb1 或者 mkfs.ext3 /dev/sdb1 两个命令式一样的

  3. 磁盘挂载 mount
    创建了文件系统的分区后,在linux系统中还需要经过挂载才能使用,

  4. 设置启动自动挂载 /etc/fstab
    之前的一套流程值是暂时的,计算机重启之后就失效了,需要配置/etc/fstab表是的系统能重启自动挂载
    echo "/dev/sdb1 /root/newDisk ext3 defaults 0 0" >> /etc/fstab
    第一部分 /dev/sdb1
    第二部分 /root/newDisk 挂载点
    第三部分 文件系统是 ext3
    第四部分defaults 使用系统默认的挂载参数
    第五部分 决定dump命令在进行备份时是否要将这个分区存档,默认为0
    第六部分 设定系统启动时是否对该设备进行fsck,这个值有三种可能,1 保留给根分区,2. 检查完根分区后检查,(给其他分区使用 的)3. 不检查,
    这样,在系统重启后,设备就会自动挂载了

磁盘检查 fsck badblocks

当磁盘出现逻辑错误时,可以使用fsck尝试修复,
场景:突然断电,

badblocks

原文地址:https://www.cnblogs.com/cizao/p/11573031.html