主流分区机制有MBR和GPT两种
MBR分区:第一个扇区最重要,里面有:引导代码(Bootstrap code area)及分区表(partition table), 其中Bootstrap code area 占有 446 bytes,而 partition table 则占有 16*4 bytes,知道分隔槽的启动和结束磁柱,最后两个字节是启动标识55h和AAh
只能使用不超过2T的硬盘,否则只能使用2T空间(有第三方解决方案)
最多4个主分区,扩展分区占用主分区位置且无法格式化
逻辑分区建立在扩展分区上:Linux最多支持63个IDE分区,15个SCSI分区
 
文件系统主要分三个区块:
superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等。每个 block group 都可能有 superblock,但后面的仅作为备份。
inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的 block 号码,大小固定为128bytes,记录一个block号码需要4bytes,因此系统将block号码的纪录区域定义为12个直接、1个间接,1个双间接与1个三间接记录区。
使用stat命令查看某个文件的inode信息
- File:显示文件名 
- Size:显示文件大小 
- Blocks:文件使用的数据块总数 
- IO Block:IO块大小 
- regular file:文件类型(常规文件) 
- Device:设备编号 
- Inode:Inode号 
- Links:链接数 
- Access:文件的权限 
- Gid、Uid:文件所有权的Gid和Uid。
- Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间 
- Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。 
- Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
block:实际记录档案的内容,若档案太大时,会占用多个 block 。每个block内最多放一个档案的数据,大小和数量在格式化后就不能再改变了。
 
️建立目录时,会分配一个 inode 和若干个 block 给该目彔。其中,inode 记录该目录相关权限与属性,并记录分配到的block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据。
例:系统读取/etc/passwd的过程如下:
(1)透过挂载点的信息找到 /dev/XXX 的 inode 号码为 2 的根目录inode, 且该 inode 规范的权限让我们可以读取该 block 的内容(有r和x)
(2)/ 的 block: 经过上个步骤取得 block 的号码,并找到该内容有 etc/ 目录的 inode 号码 (16777281)
(3)etc/ 的 inode: 读取16777281 号 inode 得知 用户 具有r和x的权限,因此可以读取 etc/的 block内容
(4)etc/ 的 block: 经过上个步骤取得 block 号码,并找到该内容有 passwd 档案的 inode 号码 (18313675)
(5)passwd 的 inode: 读取 18313675号 inode 得知用户 具有 r 的权限,因此可以读叏 passwd 的 block 内容
(6)passwd 的 block: 最后将该 block 内容数据读出来。
系统建立新档案的过程如下:
(1)先确定用户对想增加新档案的目录是否具有w和x的权限
(2)根据inode bitmap找到没有使用的inode号码,将新档案的权限和属性写入
(3)根据block bitmap找到没有使用的block号码,写入实际数据并更新inode中的block指向
(4)将新写入的信息同步到inode bitmap和block bitmap,并更新superblock
 
想知道Linux支持的文件系统有哪些,进入目前核心的模块目录:
ls -l /lib/modules/$(uname -r)/kernel/fs,其中uname -r用于输出Linux的版本号
系统目前已加载到内存中支持的文件系统通过命令cat /proc/filesystems查看
整个Linux文件系统都是通过VFS( Virtual  Filesystem Switch)的核心功能去读取文件系统的,通过VFS,可以把多种具体文件系统纳入统一框架,不同磁盘分区可以包含不同具体文件系统,对它们的使用和传统的单一文件系统并无区别;用户可以通过同一组系统调用对不同文件系统及文件进行操作,系统调用可以跨物理介质和文件系统执行;对网络共享文件提供完全的支持,访问远程节点上的文件和本地节点上的文件一样。
VFS实质上是一种存在于内存中、支持多种具体文件系统的运行环境,功能有:记录所安装的文件系统类型、建立设备与文件系统之间的联系、实现面向文件的通用操作、涉及特定文件系统的操作时映射到具体文件系统中去
VFS之所以能衔接不同文件系统,因为它定义了所有文件系统都必须支持的基本抽象接口和数据类型,各种文件系统也要与其定义保持一致。非Unix类型的文件系统也必须经过封装提供符合VFS概念的接口(如不支持inode概念的文件系统,必须在内存中装配inode结构体,如同本身包含inode一样),这些装配和转换必须在使用现场引入特别处理,使得文件系统能够兼容Unix操作系统的使用规则和满足VFS的接口要求。
 
df列出文件系统的整体磁盘使用量
-h 以人容易阅读的格式显示
-i 不用硬盘容量而用inode的数量显示
-T 列出文件系统的类型
 
du -sh * 列出当前目录下所有档案容量
-s 列出总量 
-h 以人容易阅读的格式显示
 
dumpe2fs /dev/sda3      查看文件系统详细信息
-h  仅列出superblock的数据
 
fdisk:基于MBR的分区工具,root用户才能运行
fdisk -l列出所有已安装硬盘和分区信息
Disk /dev/sda: 21.5 GB,  bytes,  sectors
Units = sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk label type: dos
Disk identifier: 0x000b2bc5 Device Boot Start End Blocks Id System
/dev/sda1 * Linux
/dev/sda2 8e Linux LVM
fdisk /dev/sda    进行分区,按【m】进入帮助页面后按照提示操作。
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
 创建分区后需要设置id,Linux默认为83,最终将分区表写 入磁盘并退出。
/proc/partprobe更新内核分区信息
 
裸设备需要格式化才能使用(创建文件系统)
NTFS(Windows)
Ext3、Ext4(Linux) 
 
mke2fs -t ext4 /dev/sda3
              -t 指定要创建的文件系统类型
              -c 创建时检测损坏
              -L  Label 指定卷标(名字)
              -b blocksize 指定文件系统块大小
mkfs.ext4  /dev/sda3
 
e2label /dev/sda3 LABELNAME       打上标签名,一般大写
fsck      检查并修复损坏的文件系统(必须先卸载)
           -y   直接修复
           -t   指定类型(损坏严重时)
对于识别为文件的损坏数据,fsck会放入lost+found目录
 
创建文件系统后,磁盘需要挂载在某个目录下才能使用
手工挂载操作,或配置系统进行自动挂载
mount   /dev/sda3   /mnt/(挂载点)
不带命令的mount命令会显示所有已挂载的文件系统
mount -o remount, ro /dev sda3  /mnt/
-o                         指定挂载选项
ro,rw                    以只读或读写形式挂载,默认读写
remount              重新挂载
sync/async          不使用缓存/使用缓存
noatime/atime   访问文件时不更新文件访问时间/访问文件时更新文件访问时间
 
umount 设备/挂载点(必须先卸载再进行操作)
fuser -m  /mnt             查看使用文件系统的进程
lsof  /mnt                      查看正在使用的文件
      
/etc/fstab定义需要自动挂载的文件系统
/dev/sda3             /mnt               ext4                 defaults                         0    0
需挂载设备              挂载点           文件系统          挂载选项                      dump、fsck相关
LABEL=XX识别

操作系统-文件系统(5)Linux文件系统管理的更多相关文章

  1. linux 文件系统管理三部曲之三:挂载文件系统

    linux 文件系统管理三部曲之一:磁盘分区 linux 文件系统管理三部曲之二:创建文件系统 上面说明了,硬盘的划分和格式化,那么怎么使用,还没说,这里说一下,怎么使用创建好的文件系统. 使用文件系 ...

  2. Linux 文件系统管理

    Linux 文件系统管理 课程大纲  文件系统构成及命令  硬盘分区及管理  磁盘配额  备份与恢复   文件系统构成 /usr/bin ./bin:存放所有用户可以执行的命令 /usr/s ...

  3. Linux文件系统管理命令(第二版)

    Linux文件系统管理命令 常用命令 1.df命令 查看分区使用情况 常用选项 -h 比较人性化 -m 以兆字节显示分区使用情况 显示信息: Mounted on:挂载点 Filesystem:对应的 ...

  4. Linux文件系统管理 常见命令df、du、fsck、dumpe2fs

    概述 Linux文件系统管理 常见命令df.du.fsck.dumpe2fs. 文件系统查看命令:df 通过 df 命令可以査看已经挂载的文件系统的信息包括设备文件名.文件系统总大小.已经使用的大小. ...

  5. 【Linux学习】Linux文件系统4—Linux文件硬链接与软连接

    Linux文件系统4-Linux文件硬链接与软连接 inode:索引节点 (连接文件)link 一.文件硬链接 1.Linux文件系统中,inode只相同的文件是硬链接文件 2.不同文件名,inode ...

  6. linux 文件系统管理三部曲之二:创建文件系统

    创建文件系统的含义:就是格式化一个硬盘分区,不同的格式化方式,就是创建了不同的文件系统. 格式化: 低级格式化:划分分区前执行,主要是划分硬盘的磁道等. 高级格式化:划分分区后执行,创建文件系统 创建 ...

  7. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令

    通过前面两篇博客,我们介绍了Linux系统的权限管理.Linux权限管理之ACL权限 介绍了通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,这在Linux只能对于一个文件只能有所有者权限 ...

  8. Linux文件系统管理 文件系统

    概述 文件系统:文件系统这个名词大家都很陌生,不过如果说成分区,大家就比较容易理解了.原先每个分区只能格式化为一个文件系统,所以我们可以认为文件系统就是指分区.不过随着技术的进步,现在一个文件系统可以 ...

  9. Linux文件系统管理

    第九讲 文件系统管理   基础知识点:   硬盘的构成:主要由盘片.机械手臂.磁头与主轴马达所组成,实际的数据都是写在具有磁性物质上的盘片,通过主轴马达让盘片转动,机械手臂可伸展让磁头在盘片上读取数据 ...

  10. 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍

    目录 1.了解硬盘结构(了解即可) (1)硬盘的逻辑结构 (2)硬盘接口 2.Linux文件系统介绍 (1)Linux文件系统的特性 (2)Linux常见文件系统 3.整理一下对文件系统的认识 在了解 ...

随机推荐

  1. 花生壳内网穿透vue项目错误

    原因:新版的webpack-dev-server出于安全考虑,默认检查hostname,如果hostname不是配置内的,将中断访问. 解决:webpack.dev.conf.js添加配置 disab ...

  2. 读取 csv , xlsx 表格并添加总分列

    import pandas as pd import numpy as np data = pd.read_excel('学生成绩表.csv',columns = ['学号','姓名','高数','英 ...

  3. PHP fgetss() 函数

    定义和用法 fgetss() 函数从打开的文件中返回一行,并过滤掉 HTML 和 PHP 标签. fgetss() 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止返回一个新行. ...

  4. Skill 返回一个数字list的大小排序信息

    https://www.cnblogs.com/yeungchie/ code procedure(ycSortList(numlist) prog((size sort) foreach(main ...

  5. Blob分析之 ball.hdev

    * ball.hdev: Inspection of Ball Bonding * 关闭窗体更新 dev_update_window ('off')*关闭窗体dev_close_window ()*打 ...

  6. MediaDevices.getUserMedia()

    MediaDevices.getUserMedia() 会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道.此流可以包含一个视频轨道(来自硬件或 ...

  7. 7.11 NOI模拟赛 graph 生成函数 dp 多项式

    LINK:graph HDU题库里的原题 没做过自闭. 考虑dp 设\(f_{i,j}\)表示前i个点构成j个联通块是树的方案数. 对于一次询问答案即为\(\sum_{j}f_{n,j}j^k\) 考 ...

  8. bzoj 1515 [POI2006]Lis-The Postman 有向图欧拉回路

    LINK:Lis-The Postman 看完题觉得 虽然容易发现是有向图欧拉回路 但是觉得很难解决这个问题. 先分析一下有向图的欧拉回路:充要条件 图中每个点的入度-出度=0且整张图是一个强连通分量 ...

  9. luoguP2154 [SDOI2009]虔诚的墓主人

    SDOI2009虔诚的墓主人 喜闻乐见,我终于把此题读懂了..所以可以写了. 其实就是让我们求有多少个十字架 一个十字架的定义为中间有一个空地 周围4个正方向都有k棵树. 不难想到nm的暴力 我们预处 ...

  10. 京东架构师:日均 5 亿查询量的ElasticSearch架构如何设计?

    作者:张sir  来源:京东技术(id:jingdongjishu) 1. 背景 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数 ...