文件系统概念:

文件系统是指文件的组织与管理结构,是一个有关于磁盘中各种有用信息的记录——即是保存以下信息的结构记录表
当前所使用磁盘的容量信息
磁盘的可用信息,包括已占用和剩余的空间;

文件与目录的属性;

文件与目录的在磁盘中确切地址与链接信息。
一句话总结:文件系统就是管理这块(分区)文件的机制或者说是组织方式。

文件系统类型:

Linux支持多种文件系统
·ext2:Linux基本文件系统
·ext3:ext2的增强版本
·ext4:ext文件系统的第四个版本()
·swap:交换文件系统
·nfs:网络文件系统,适合Linux或Unix机器间共享
·smbfs:适合Linux或Unix和windows机器间共享
·vfat:windows早期文件系统
·ntfs:windows默认文件系统,功能非常强大
·iso9660:CD光盘的只读文件系统
·GFS:google专用存储海量搜索数据而设计的专用文件系统
·reiserfs:早期linux使用的日志功能的文件系统
 

文件系统

Linux内核采用虚拟文件系统层(VFS),通过该中间层对各类文件系统提供了完美的支持。对于用户来说,这些文件系统几乎是透明的,用户不需要关心底层文件系统的具体实现。
 
VFS 基本结构
  ·super block
  ·dentry
  ·inode
  ·data
 
super block (超级块)
  存储文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式。文件系统中第一个块被称为超级块。
   将物理相邻的若干个扇区称为了一个块。操作系统读写磁盘的基本单位是扇区,而文件系统的基本单位是块(block)。块越大存储性能越好,但空间浪费严重。块越小性能相对越低,但空间利用率高。
Inode 索引节点(元数据)
  保存的其实是实际的数据(文件内容)的一些信息,这些信息称为“元数据”(也就是对文件属性的描述)。例如:文件大小,文件拥有者(owner),文件属组(group),文件权限,文件读取或修改的时间戳,链接数量,同时记录此文件的数据所在的 block 号码,文件类型等等。
    注意,数据分成:元数据+数据本身
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般每2KB就设置一个inode。一般文件系统中很少有文件小于2KB的,所以预定按照2KB分,一般inode是用不完的。
  inode号是唯一的,表示不同的文件。其实Linux内核访问文件都是通过inode号来进行的,所谓文件名仅仅是inode号的别名,方便用户识别和使用的。当我们打开一个文件的时候,首先,系统找到这个文件名对应的inode号;然后,通过inode号,在inode table中找到inode信息,最后在inode信息中找到文件数据所在的block,接着就可以处理文件数据了。
  当创建一个文件(包括目录)的时候,就给文件分配了一个inode。inodes最大数量就是文件的最大数量。
  一个文件 肯定会占用一个inode,如果是空文件,就不会占用block,如果不是空文件,肯定会占用block;
  一个文件系统内的文件总数跟inode总数一致。
dentry 目录项
  目录项是描述文件的逻辑属性,只存在于内存中,并没有实际对应的磁盘上的描述,更确切的说是存在于内存的目录项缓存,为了提高查找性能而设计。注意不管是目录还是最终的文件,都是属于目录项,所有的目录项在一起构成一颗庞大的目录树。例如:打开一个文件/opt/data/a.txt,那么/、opt、data、a.txt都是一个目录项,VFS在查找的时候,根据一层一层的目录项找到对应的每个目录项的inode,那么沿着目录项进行操作就可以找到最终的文件。
注意:目录也是一种文件(所以也存在对应的inode)。打开目录,实际上就是打开目录文件。
data 数据
  记录文件的实际内容,若文件太大时,会占用多个 block
 
 
链接文件:
  硬链接:不同的文件名对应相同的inode
    ln a.txt a.hard
不能跨文件系统
  软链接:ln -s a.txt a.link
可以跨文件系统
 

创建文件系统:

创建完整的文件系统的四个步骤
  ·建立分区
  ·格式化分区建立文件系统
  ·检验文件系统
  ·装载文件系统
 
fdisk命令建立分区
  用途:在交互式的操作环境中管理磁盘分区
  格式:fdisk [磁盘设备]
  交互模式中的常用指令
    ·m:查看操作指令的帮助信息
    ·p:列表查看分区信息
    ·n:新建分区
    ·d:删除分区
    ·t:变更分区类型
    ·w:保存分区设置并退出
    ·q:放弃分区设置并退出
 
mkfs命令
  用途:Make Filesystem,创建文件系统(格式化)
  格式:mkfs -t 文件系统类型 分区设备
 
fsck命令
  用途:file system check,诊断修复文件系统
  格式:fsck -t 文件系统类型 分区设备
  -y:自动输入yes(与-a相同)
 
 
文件系统使用:
  挂载文件系统:
    mount命令:
      用途:挂载文件系统、ISO镜像到指定文件夹
      mount [ -t 类型 ] [ -o 选项 ] 设备名 挂载点目录
  卸载文件系统:
    umount命令:
      用途:卸载已挂载的文件系统
      格式:umount 存储设备位置
      umount 挂载点目录
eg:
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 18244476 1908296 15402756 12% /
tmpfs 953140 0 953140 0% /dev/shm
/dev/sda1 194241 38685 145316 22% /boot
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 1166880 56419 1110461 5% /
tmpfs 238285 1 238284 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot

  

验证:

 1.创建小分区

[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u'). Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000215f9 Device Boot Start End Blocks Id System
/dev/sdb1 1 2 16033+ 83 Linux
/dev/sdb2 3 1308 10490445 83 Linux
/dev/sdb3 1309 1435 1015808 83 Linux Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (1435-2610, default 1435):
Using default value 1435
Last cylinder, +cylinders or +size{K,M,G} (1435-2610, default 2610): +10G

  2.创建文件系统

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
/dev/sdb1 is mounted; will not make a filesystem here!
[root@localhost ~]# mount /dev/sdb1 /tmp/sdb1/
mount: /dev/sdb1 already mounted or /tmp/sdb1/ busy
mount: according to mtab, /dev/sdb1 is already mounted on /tmp/sdb1

  3.创建空文件

  

while :
do
touch /tmp/sdb1/a${RANDOM}
done
快速使用block:
while :
do
cat /etc/passwd >> /test/a.txt
done

[root@localhost ~]# while :
> do
> touch /tmp/sdb1/ a${RANDOM}
> done touch: cannot touch `/tmp/sdb1/a31677': No space left on device
touch: cannot touch `/tmp/sdb1/a2591': No space left on device
touch: cannot touch `/tmp/sdb1/a19649': No space left on device
  4.使用df/df -i 查看空间使用情况;
[root@localhost ~]# df -i /dev/sdb1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb1 4016 4016 0 100% /tmp/sdb1
[root@localhost ~]# df /dev/sdb1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 14497 14497 0 100% /tmp/sdb1
  5.inode全使用,block还有空闲的,这时不能创建新文件了,但是还可以增加文件内容;
  inode还有空闲,block全使用,这时可以创建新文件,但是不能增加文件内容。
 

管理交换空间:

  虚拟内存也叫交换空间
  短时间缓解物理内存的不足;但不能代替物理内存
mkswap命令
  用途:Make Swap,创建交换文件系统
  格式:mkswap 分区设备
  -L:设置交换分区文件系统标签
swapon 分区设备 ----激活交换分区
swapoff 分区设备----停用交换分区
eg:
[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 2006929 kB
[root@localhost ~]# swapon /dev/sdb5
[root@localhost ~]# free | grep -i swap
Swap: 3008456 0 3008456
[root@localhost ~]# swapoff /dev/sdb5
[root@localhost ~]# free | grep -i swap
Swap: 1048568 0 1048568

  

【Linux】管理文件系统的更多相关文章

  1. linux管理文件系统指令

    就一个基本的linux系统而言,其计算机硬盘只能有三个分区:一个交换分区(用于处理物理内存存不下的信息),一个包含引导转载程序的内核的启动分区,一个根文件系统分区,后两个常采用 ext3文件系统 与e ...

  2. 《Linux命令行与shell脚本编程大全》 第八章管理文件系统

    8.1 探索linux文件系统 8.1.1 基本的Linux文件系统 ext:最早的文件系统,叫扩展文件系统.使用虚拟目录操作硬件设备,在物理设备上按定长的块来存储数据. 用索引节点的系统来存放虚拟目 ...

  3. Linux及文件系统基本介绍

    Linux及文件系统基本介绍 1   互联网行业现状 在服务器端市场: 超级计算机 2014年11月的数据显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Wi ...

  4. [20150925]Linux之文件系统与SHELL

    Linux之文件系统与SHELL 文件系统介绍 ext2/ext3/ext4 Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有 ...

  5. 文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解

    阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fe ...

  6. linux ext2 文件系统学习

    Linux  ext2文件系统理解 硬盘组成: 硬盘由多个圆形硬盘片组成.按照硬盘片能够容纳的数据量分为单盘和多盘.硬盘的数据读取主要靠机械手臂上的磁头,在机械手臂上有多个磁头.机械手臂不动硬盘旋转一 ...

  7. linux下文件系统类型的学习

    1. 以超级用户权限登陆Linux,进入  /lib/modules/2.6.32--504.el6.x86_64/kernel/fs目录执行 ls 命令(不同Linux发行版本的Fs目录有些不同你可 ...

  8. linux的文件系统及节点表

    linux的文件系统及节点表 一  linux的文件系统1 我们都知道当我们安装linux时会首先给系统分区,然后我们会把分区格式化成EXT3格式的文件系统.那么在linux系统中还有没有其他的文件系 ...

  9. linux虚拟文件系统2

    转自:http://rstevens.iteye.com/blog/849413 一.概述 Linux 文件系统是相当复杂的,本文只分析虚拟文件系统的实现,对具体的文件系统不涉及. 即使是虚拟文件系统 ...

随机推荐

  1. JS Error 内置异常类型 处理异常 Throw语句

    Exceptional Exception Handling in JavaScript       MDN资料 Anything that can go wrong, will go wrong. ...

  2. MySQL中有关char、varchar、int、tinyint、decimal

    char.varchar属于字符串类型 1.char属于定长,能确切的知道列值的长度,也就是有多少个字符.当指定char(5)时,表示只能存5个字符,如5个英文‘a’,5个汉字‘我’,5个符号‘&am ...

  3. 个人总结4-dbutils总结

    昨天学习了dbutils的使用方法,简化了使用的步骤,可以使用三四步就可以写出来,queryRunner的使用方法有了简单的了解,目前可以使用dbutils实现最简单的增删改查. 今天准备学习准备写登 ...

  4. python数据处理与机器学习

    提纲 numpy: #genformtxt import numpy as np #genformtxtdata=np.genfromtxt("genfromtxtdata") # ...

  5. Tcpdump一些常用指令

    1.tcpdump安装:yum install tcpdump 2.关键字介绍 类型关键字: 指定主机 host 192.168.1.111 指定网络地址 net 202.0.0.0 指定端口 por ...

  6. C++显式隐式构造函数

    https://blog.csdn.net/starlee/article/details/1331268#comments

  7. c#listbox使用详解和常见问题解决

    关于ListBox ListBox是WinForm中的 列表 控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过多时,ListBox会自动添加滚动条,使用户可以滚动查 ...

  8. 如何查看SharePoint Server的版本信息

    可以通过查看注册表来得你当前运行的是SharePoint 2010的哪个版本,具体步骤如下: 1. 登录到安装了SharePoint Central Administration 的服务器. 2. 点 ...

  9. HTTP协议图--HTTP 协议基础

    1.通过请求和响应的交换达成通信 应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色.仅从一条通信线路来说,服务器端和客服端的角色是确定的.HTTP 协议规定,请求从客户端发出, ...

  10. codeforces 388D Fox and Perfect Sets(线性基+数位dp)

    #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define mp mak ...