操作系统-文件系统(5)Linux文件系统管理

主流分区机制有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, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b2bc5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   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识别

原文地址:https://www.cnblogs.com/yangyuliufeng/p/9339116.html

时间: 2024-08-05 15:31:55

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

linux磁盘管理以及linux文件系统管理

linux磁盘管理       硬盘            机械师硬盘            SSD            机械式硬盘            track:磁道            sector:每个扇区512bytes            cylinder:柱面由若干个相同编号的磁道组成                    MBR:0磁道的0扇区master boot record主引导柱面                    512bytes              

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

Linux文件系统管理命令 常用命令 1.df命令 查看分区使用情况 常用选项 -h 比较人性化 -m 以兆字节显示分区使用情况 显示信息: Mounted on:挂载点 Filesystem:对应的具体硬件名 2.du命令 查看文件/目录大小,默认以K为单位 常用选项: -h[humanity] du -h /home/xiaofang -s[统计statistics] du -sh /etc #查看目录大小,常用 3.检测修复文件系统fsck[file system check].e2fsc

9月01日课程作业(练习)-Linux文件系统管理

1.复习本次课程所讲的内容: Linux磁盘管理       硬盘:硬盘是通用的叫法,其实硬盘和磁盘是一样的,都是用来存东西的:还有磁带.光盘.U盘等只是存储的介质不一样.            机械式硬盘            SSD固态硬盘 机械式:           track磁道            每个扇区(sector): 512bytes            磁柱(cylinder): 分区的基本单位: 主引导记录 MBR:Master Boot Record        

Linux文件系统管理(2)

Linux文件系统管理: 接上: mkfs, mkfs -t type = mkfs.type ext:mke2fs 创建文件系统: mke2fs [OPTION]... DEVICE -t {ext2|ext3|ext4} -b {1024|2048|4096}------块大小取决文件大小 -L 'LABEL' -j: mke2fs -t ext3 -i #:创建多少inode -N #: -m #: 预留磁盘空间占据多大百分比的空间为后期管理使用: -O FEATURE[,...] -O

Linux文件系统管理 常见命令

概述 Linux文件系统管理 常见命令df.du.fsck.dumpe2fs. 文件系统查看命令:df 通过 df 命令可以査看已经挂载的文件系统的信息包括设备文件名.文件系统总大小.已经使用的大小.剩余大小.使用率和挂载点等. df 命令格式如下: [[email protected] ~]# df [选项] [挂载点或分区设备文件名] 选项: 选项 选项说明 -a 显示所有文件系统信息,包括特殊文件系统,如 /proc./sysfs -h 使用习惯单位显示容量,如 KB.MB 或 GB 等

Linux文件系统管理 文件系统

概述 文件系统:文件系统这个名词大家都很陌生,不过如果说成分区,大家就比较容易理解了.原先每个分区只能格式化为一个文件系统,所以我们可以认为文件系统就是指分区.不过随着技术的进步,现在一个文件系统可以由几个分区组成,或者一个分区可以格式化为几个不同的文件系统,所以我们已经不能把文件系统和分区等同对待了.不过,为了便于理解,大家可以把文件系统想象成分区. 硬盘:硬盘是计算机的主要外部存储设备.计算机中的存储设备种类非常多,常见的主要有软盘.硬盘.光盘.U 盘等,甚至还有网络存储设备 SAN.NAS

Linux运维练习--Linux文件系统管理

复习本次课程所讲的内容以及总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一 定的示例: 创建文件系统: 主要命令:mke2fs [OPTION]... DEVICE                                           -t  {ext2|ext3|ext4}                                           -b {1024|2048|4096},取决于内核管理内存页框大小的支持                   

Linux文件系统管理 挂载命令mount

概述 mount命令用来挂载Linux系统外的文件. Linux 中所有的存储设备都必须挂载之后才能使用,包括硬盘.U 盘和光盘(swap 分区是系统直接调用的,所以不需要挂载).不过,硬盘分区在安装时就已经挂载了,而且会在每次系统启动时自动挂载,所以不需要手工参与.但是在 Linux 系统中要想使用光盘和 U 盘,就需要通过一些挂载命令来实现. 挂载是指把硬盘分区(如分区 /dev/sdb1,其实指的是文件系统)和挂载点(已经建立的空目录)联系起来的过程.这里需要注意,挂载点必须是目录,而且原

教你十分钟掌握Linux文件系统管理

在第一天装系统的时候,我们已经知道了mount,即挂载的概念.装机时自己配置分区的小伙伴都知道,CentOS7的文件系统为xfs,CentOS6则是ext4,更早的CentOS5则是ext3.老师告诉我们这叫文件系统.不同的文件系统有不同的存储特色.如linux里ext2无日志,xfs可支持最高200T之类的,window里fat32无法支持大于4G文件的传输云云-- 稍等,好像有点跑题了. 总之,今天我们来说说基于CentOS平台的Linux文件管理. 先看下面这个题目. 创建一个2G的文件系