文章目录
图片均来自网络,如有侵权,请告知删除。
1) 什么是文件?
如何把数据长期的存储在外部储存介质之上(比如硬盘)
-
什么是文件
一组相关数据的集合。
在操作系统眼中,文件是一个字节流(或者是一个字符流)
-
文件的类型
- 普通文件(ordinary):习惯上简称文件
- 目录\文件夹(directory):能够容纳别的文件
- 设备(special file):输入输出设备,鼠标键盘等等,逻辑设备(null设备、硬盘分区)
-
文件的组成部分
-
名字
- unix中
\
不能做文件名,windows不能用:
和/
作为文件名 - unix中不区分扩展名
- unix中
-
属性
-
操作系统会设置一个单独的地方存储文件的属性
-
在unix中使用
i-node
存放文件的属性,通过i-node
可以找到文件的数据,所有i-node
会集中存放,与文件一一对应。
-
创建时间、修改时间、主人、大小
-
-
内容
-
2)如何管理文件的信息?
如何把文件的 数据、名字、属性 关联在一起呢?
-
文件系统的块
用数据块存放文件的内容
-
存储方式
-
链式(查找困难)
-
顺序存储(修改困难)
unix中的存储方式:多级索引
-
优点: 大文件大、小文件快
i-node(128字节,后60个字节存放15个指针)
-
前12个指针指向12k的数据
-
第13个指针(1级索引指针)指向256k数据
-
第14个指针(2级索引指针)指向64M数据
-
第15个指针(3级索引指针)指向16G数据
-
访问更大的数据 改变数据块的大小
-
3)什么是目录?
-
目录的结构
目录也是一种文件,是一个树状结构。
- 一级目录:多个文件放在一起,文件不能重名
- 二级目录:区分user,每个用户的文件不能重名
- 多级目录:根目录 多个子目录 … ,存放不同的文件
-
目录的内容
存放此目录下 文件名字 和
i-node
的编号,通过i-node
编号可以找到唯一的文件数据,但是i-node
没有文件的名字,unix中文件名字和文件内容 分开存放 -
unix中文件共享(链接文件)
多个文件名字指向同一个
i-node
4)如何管理目录?
windows使用盘符,unix没有盘符的概念,下述以unix为例:
-
目录的表达形式
-
用
/
表示根目录下的文件,从根目录开始的叫 绝对路径,如:/home/tux1/doc/test
-
从当前目录开始的 相对路径
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-node
的link
数降为0的时候,这个数据才真正从硬盘上被删掉 -
cat:查看文件内容
-
6)文件的权限管理
-
文件、组、用户
- 用户(users):登陆系统的用户名、密码对应的用户
- 组(group):每个人属于多个组,每个组对应多个人(多对多的关系)。每个人都有一个基本的组(主要组),每个人仅有一个主要组。
- 文件有且仅有一个主人,属于且仅属于一个组,文件的主人(owner)为创建文件的人,文件的组为主人的主组。
-
对于一个文件来说,有三类人,他们的权限分别为:
- 主人
- 主组的其他人
- 主组之外的人
-
文件的权限只能由 root 或者 主人 修改,权限的查看:
ls -l
- file type中
d
代表目录,-
代表普通文件,后边的权限含义为:- 对于文件:
- r:读文件
- w:修改文件内容
- x:执行文件(unix中可执行文件有两种,1.文件本身是二进制可执行格式,2.文件是脚本格式)
- 对于目录(把目录比作房间):
- r:查看目录下有哪些文件,但是不能拿到
i-node
(看到房间的东西),可以ls
- w:删除或增加目录下的文件(从房间搬入搬出东西)
- x:进入目录,可以获得文件的详细信息(进入房间中来)
- r:查看目录下有哪些文件,但是不能拿到
- 对于文件:
指令 | 源目录所需权限 | 源文件所需权限 | 目标目录所需权限 |
---|---|---|---|
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)
-
二进制数表示法
-
> 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中只有一个虚拟的根目录,我们需要把文件系统挂载到已经存在的空目录上。
- 挂载并不是拷贝,只是把文件的根目录和文件系统的目录粘到一起。
如果挂载到非空目录上,原目录中的文件将暂时被隐藏。
> mount 设备名字 空目录名字(挂载文件系统,需要root权限)
>
> umount 设备的名字\mount点的名字 (卸载文件系统,相当于windows弹出u盘)
在unix中,根目录、home都是文件系统。
9)备份与恢复
-
备份的重要性
数据的重要性往往比存放数据的设备价值要大,常用的技术就是给数据 冷备份(就是把数据复制一份)。
-
备份的基本策略
根据备份的数据量可以分为:
- 数据备份:备份用户的数据
- 系统备份:备份系统的数据
如果数据量还是太大,就考虑其他的备份策略:
- 增量备份:每次都备份与前一天的差异,恢复速度比全备份块的多
- 差异备份:每次都备份与第一天的差异。
-
备份的工具
-
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
-
-
与逻辑卷管理的比较
- 分区式管理缺点:
- 空间大小划分后无法更改,初期对硬盘空间的规划带来困难,如果采用第三方的分区管理工具还会带来数据上的风险。
- 受硬盘大小的限制。
-
逻辑卷管理:逻辑卷取代了分区,成为文件系统的容器。
-
优点:可以动态调整大小,可以充分利用零散硬盘空间,可以跨硬盘存放等等。
-
物理卷:独立的硬盘,传统意义上的分区。
- 卷组:一个或多个物理卷组合在一起。
- 物理块:物理卷加入到卷组中, 把它上面的空间按照固定大小进行划分,划分出若干个大小相等的小块作为将来的储存空间。
逻辑卷的大小=逻辑块大小*逻辑块个数,逻辑块大小等于物理块大小。
-