文件管理(以Unix系统为例)


图片均来自网络,如有侵权,请告知删除。

1) 什么是文件?

如何把数据长期的存储在外部储存介质之上(比如硬盘)

  • 什么是文件

    一组相关数据的集合。

    在操作系统眼中,文件是一个字节流(或者是一个字符流)

  • 文件的类型

    • 普通文件(ordinary):习惯上简称文件
    • 目录\文件夹(directory):能够容纳别的文件
    • 设备(special file):输入输出设备,鼠标键盘等等,逻辑设备(null设备、硬盘分区)

Alt

  • 文件的组成部分

    • 名字

      1. unix中 \不能做文件名,windows不能用 / 作为文件名
      2. unix中不区分扩展名
    • 属性

      1. 操作系统会设置一个单独的地方存储文件的属性

      2. 在unix中使用 i-node 存放文件的属性,通过 i-node 可以找到文件的数据,所有 i-node 会集中存放,与文件一一对应。
        Alt

      3. 创建时间、修改时间、主人、大小

    • 内容


2)如何管理文件的信息?

如何把文件的 数据名字属性 关联在一起呢?

  • 文件系统的块

    用数据块存放文件的内容

  • 存储方式

    • 链式(查找困难)

    • 顺序存储(修改困难)

    unix中的存储方式:多级索引

    • 优点: 大文件大、小文件快

      Alt

    i-node(128字节,后60个字节存放15个指针)

    • 前12个指针指向12k的数据

    • 第13个指针(1级索引指针)指向256k数据

    • 第14个指针(2级索引指针)指向64M数据

    • 第15个指针(3级索引指针)指向16G数据

    • 访问更大的数据 \to 改变数据块的大小


3)什么是目录?

  • 目录的结构

    目录也是一种文件,是一个树状结构。

    • 一级目录:多个文件放在一起,文件不能重名
    • 二级目录:区分user,每个用户的文件不能重名
    • 多级目录:根目录 \to 多个子目录 \to … ,存放不同的文件
  • 目录的内容

    存放此目录下 文件名字i-node 的编号,通过 i-node 编号可以找到唯一的文件数据,但是 i-node 没有文件的名字,unix中文件名字和文件内容 分开存放Alt

  • unix中文件共享(链接文件)

    多个文件名字指向同一个i-node


4)如何管理目录?

windows使用盘符,unix没有盘符的概念,下述以unix为例:

  • 目录的表达形式

    1. /表示根目录下的文件,从根目录开始的叫 绝对路径,如:

      /home/tux1/doc/test

    2. 从当前目录开始的 相对路径

      doc/mon_report (当前目录下有一个叫doc的文件夹)

      …/tux3/pgms (…表示当前的父目录 )

      ./test (.表示当前目录)

      ~/test (~表示当前登陆者的主目录)

  • 命令管理目录

    • pwd (Print Working Directory):打印当前目录

    • cd (Change Directory):在目录之间来回移动,后边可以跟相对路径或者绝对路径

      cd doc (相对路径)

      cd /home/tux1/doc (绝对路径)

      cd ~tux1/doc (与上两个作用相同)

      cd (不写参数代表回到主目录)

      cd … (到上一级目录)

      cd - (回退到以前的目录)

    • mkdir (Make Directory):添加目录

    • rmdir (Remove Directory):删除目录,要求目录必须是空目录,除了..(父目录别名)和.(此目录别名)

      -p选项用来操作多个目录,例:

      mkdir -p dir1/dir2/dir3 (一口气创建多个目录)

      rmdir -p dir1/dir2/dir3(一口气删除多个目录)

    • ls:列出目录内容

      • -l:以长方式显示文件详细属性
      • -a:显示所有文件(包括隐藏文件)
      • -t:按照修改日期排序文件
      • -R:递归的显示
      • -i:显示文件的 i-node

5)文件如何使用?

  • 创建别名

    硬连接:根据名字和i-node存在的对应关系,使得i-node可以对应多个名字

    符号连接:相当于快捷方式,两个i-node不同

    目录不能建硬连接,只能创建符号连接。

    硬连接不能跨文件系统,符号连接可以。

  • 管理文件命令

    • touch:创建文件

    • cp:拷贝文件

      两种格式

      cp file1 file2 … dir (把file1,file2拷贝到dir,dir是已经存在的目录)

      cp file1 file2 (把file1拷贝到file2中)

      • -R:拷贝目录

      • -i:拷贝时如果已有同名文件则信息提示

    • mv:移动文件

      mv file1 file2 (把file1重命名为file2)

    • rm:删除link

      假如abc、xyz对应的i-node相同,则执行rm abc之后,xyz依然存在

      只有一个i-nodelink数降为0的时候,这个数据才真正从硬盘上被删掉

    • cat:查看文件内容


6)文件的权限管理

  • 文件、组、用户

    • 用户(users):登陆系统的用户名、密码对应的用户
    • 组(group):每个人属于多个组,每个组对应多个人(多对多的关系)。每个人都有一个基本的组(主要组),每个人仅有一个主要组。
    • 文件有且仅有一个主人,属于且仅属于一个组,文件的主人(owner)为创建文件的人,文件的组为主人的主组。
  • 对于一个文件来说,有三类人,他们的权限分别为:

    1. 主人
    2. 主组的其他人
    3. 主组之外的人
  • 文件的权限只能由 root 或者 主人 修改,权限的查看:ls -l

Alt
Alt

  • file type中 d 代表目录,-代表普通文件,后边的权限含义为:
    • 对于文件:
      • r:读文件
      • w:修改文件内容
      • x:执行文件(unix中可执行文件有两种,1.文件本身是二进制可执行格式,2.文件是脚本格式)
    • 对于目录(把目录比作房间):
      • r:查看目录下有哪些文件,但是不能拿到 i-node(看到房间的东西),可以ls
      • w:删除或增加目录下的文件(从房间搬入搬出东西)
      • x:进入目录,可以获得文件的详细信息(进入房间中来)
指令 源目录所需权限 源文件所需权限 目标目录所需权限
cd x N/A N/A
ls x,r N/A N/A
mkdir,rmdir x,w N/A N/A
cat,less x r N/A
cp x r x,w
cp -r x,r r x,w
mv x,w None x,w
vi x,r r,w N/A
rm x,w None N/A
  • 权限的修改

    • 符号表示法

      chmod u+w,g-x,o= file (对file文件,user增加w,group减少x,other权限清空,替换为等号后边的权限)

      chmod a-w (all 减少w权,也可以写成chmod -w)

    • 二进制数表示法

Alt
> chmod 750 file

  • 缺省权限的设置

    umask:掩码

    普通文件创建后的权限:rw-rw-rw(666)

    创建后的权限:666-umask

    普通目录创建后的权限:rwxrwxrwx(777)

    创建后的权限:777-umask


7)什么是文件系统?

  • 文件系统

    ​ 存放文件和目录的地方,结构一般都是树状的目录树。

    ​ 一个文件系统只有一个根目录。文件系统的容器用来存放文件系统,假设文件和目录是水,文件系统是塑料袋,那么容器就是装塑料袋的木桶。文件系统的容器一般都放在块设备上,典型的块设备有,硬盘、软盘、光盘,硬盘上的分区、内存中划分的区域等等。

    ​ 文件系统有很多,操作系统会使用虚拟文件系统层,来屏蔽各种不同的文件系统的区别,为用户提供统一的接口来使用文件系统。

  • 典型的unix文件系统:ext2

    ​ 体现了unix管理文件的基本思想,整个系统会被分为大小相等的若干个,块的大小初始化时指定,默认大小为1k。

    ​ 块的用途:

    • superblock:整个文件系统的基本属性(块的大小,根目录位置、空闲块的起点、空闲i-node的起点),ext2中规定每8192块会放一个superblock的备份,每次更新全部superblock。
    • i-node:指向文件数据,块的大小假设为1k的话,每一个i-node块中可以容纳8个i-node
    • indirect block:间接指针索引块
    • data block:数据块

    初始化时需要划分i-node块存放数据的块(间接指针索引块和数据块)的比例,设置bytes-per-inode,假设为4096,表示每4096字节中有128字节为i-node块

  • 磁盘配合

    一个用户或者一个组在文件系统中最多可以存放多少数据。超过硬限制报error,超过软限制报warning。


8)使用文件系统

  • unix中文件系统的挂载(mount)以及卸载

    unix中只有一个虚拟的根目录,我们需要把文件系统挂载到已经存在的空目录上

    • 挂载并不是拷贝,只是把文件的根目录和文件系统的目录粘到一起。

Alt

如果挂载到非空目录上,原目录中的文件将暂时被隐藏。

> mount 设备名字 空目录名字(挂载文件系统,需要root权限)
>
> umount 设备的名字\mount点的名字 (卸载文件系统,相当于windows弹出u盘)

在unix中,根目录、home都是文件系统。


9)备份与恢复

  • 备份的重要性

    数据的重要性往往比存放数据的设备价值要大,常用的技术就是给数据 冷备份(就是把数据复制一份)

  • 备份的基本策略

    根据备份的数据量可以分为:

    • 数据备份:备份用户的数据
    • 系统备份:备份系统的数据

    如果数据量还是太大,就考虑其他的备份策略:

    • 增量备份:每次都备份与前一天的差异,恢复速度比全备份块的多
    • 差异备份:每次都备份与第一天的差异。

Alt

  • 备份的工具

    • tar

      tar -cvf home.tar.gz /home

      c表示创建、v表示打包时同时显示文件的名字,f表示指定一个文件的名字

      tar -xvf

      x表示解压缩,提取

      压缩时需要指定压缩算法

      tar -cvf home.tar.gz /home (gzip)

      tar -cvf home.tar.bz2 /home(bzip2)

    • dd

      dd if= of= bs= (if是输入文件,of是输出文件)

      dd if=/dev/zero of=/dev/sda bs=1M

      dd if=/dev/urandom of=/dev/sda bs=1M 清空硬盘


10)硬盘的结构

  • 串行硬盘

    SAS串行硬盘一般用在服务器,SATA硬盘一般用在小型机,单碟比双碟的速度快,世面上并行硬盘已经少见。

    传统硬盘速度慢的原因:读数据时采用磁头臂移动、盘片的旋转的方式,这都是机械运动,相对于光、电速度很慢。

  • 硬盘臂调度算法

    • 先到先服务:早提出的请求早响应,磁头臂来回运动。
    • 最短寻道优先:先访问最近的扇区,离得比较远等待时间会很长。
    • 电梯算法:一直沿着一个方向运动,接收所有请求,走到头后返回。由于中间的扇区要走两次,因此两边的响应延迟。
    • c-scan:运动过程中响应所有请求,迅速回退到低地址,中间不回应任何请求,再从头响应请求。
  • 硬盘的分区

    • 最初只有四个分区,把分区信息记录在硬盘的第一个分区。后来这四个分区不够用,调整之后这四个变为主分区,可以拿出一个主分区转为扩展分区,可以分成更多小分区,叫逻辑分区。因此现在的硬盘结构可以划分为:主分区最多四个,扩展分区小于等于1个,如果有扩展分区就占了一个主分区的指标,逻辑分区可以多到几十个。

    • 命名规则,四个主分区分别为1234,逻辑分区从5开始。

      SDA1 :SD代表硬盘,A是第一个硬盘。

    • 观察硬盘分区的命令

      sudo fdisk -l /dev/sds

  • 与逻辑卷管理的比较

    • 分区式管理缺点:
    1. 空间大小划分后无法更改,初期对硬盘空间的规划带来困难,如果采用第三方的分区管理工具还会带来数据上的风险。
    2. 受硬盘大小的限制。
  • 逻辑卷管理:逻辑卷取代了分区,成为文件系统的容器。

    • 优点:可以动态调整大小,可以充分利用零散硬盘空间,可以跨硬盘存放等等。

    • 物理卷:独立的硬盘,传统意义上的分区。

      • 卷组:一个或多个物理卷组合在一起。
      • 物理块:物理卷加入到卷组中, 把它上面的空间按照固定大小进行划分,划分出若干个大小相等的小块作为将来的储存空间。

    逻辑卷的大小=逻辑块大小*逻辑块个数,逻辑块大小等于物理块大小。

Alt

发布了8 篇原创文章 · 获赞 0 · 访问量 1683

猜你喜欢

转载自blog.csdn.net/Pure_vv/article/details/101125772