《Linux命令行与shell脚本编程大全》 第八章管理文件系统
8.1 探索linux文件系统
8.1.1 基本的Linux文件系统
ext:最早的文件系统,叫扩展文件系统。使用虚拟目录操作硬件设备,在物理设备上按定长的块来存储数据。
用索引节点的系统来存放虚拟目录中所存储的文件信息。
有一张索引节点表:对应每个文件都有一个条目,存储了(文件名,文件大小,文件属主,文件属组,访问权限,还有一个指针)
通过索引节点号来标识文件
文件大小不得超过2GB。
在文件写入到物理设备时,存储数据很容易分散在整个设备中(碎片化),降低文件系统的性能。查找起来费时。
ext2:第二代扩展文件系统:
增加了创建时间值,修改时间值,最后访问时间值。最大文件大小增加到2TB。(ext2后期增加到32TB)
按组分配磁盘块来减轻碎片化,将数据块分组,读取文件时就不需要为了数据块查找整个物理设备了。
致命问题:每次存储或更新文件,都要同新信息来更新索引节点表,这个操作并非总是一气呵成的。容易在系统崩溃或断电时损坏。
8.1.2 日志文件系统
增加了安全性。不再将数据直接写入存储设备再更新索引节点的做法,而是先将文件的更改写到临时文件(称为日志,journal)。成功写入存储设备和索引节点之后,再删除对应日志条目。
这样即使断电了,日志文件系统会读取日志文件并处理之前留下的未写入的数据。
有三种广泛使用的日志方法,每种的保护等级都不相同:
数据模式(最安全,性能最差),有序模式,回写模式(性能最好,安全性差点)。
这样很安全,但是比较慢,因为都要写两次。第一次写入日志,第二次写入存储设备。
下面介绍常见的linux日志文件系统。
1 ext3:
用的是有序模式的日志功能。
不足:无法恢复误删的文件,没有任何内建的数据压缩功能,不支持加密文件
2 ext4: 2008年受到linux内核官方支持。大部分linux发行版的默认文件系统
支持数据压缩和加密。还支持一个特性(区段)
还有一项技术块预分配技术:
3 Reiser 文件系统:
只支持回写日志模式
4 JFS文件系统:
目前在用的最古老的日志文件系统之一。采用的是有序日志的方法。
这个文件系统没有流行起来。
5.XFS文件系统:
回写模式。
8.1.3 写时复制文件系统(COW技术, copy-on-write)
如果要修改数据,会使用克隆或可写快照。修改过的数据不会直接覆盖当前数据,而是放在另一个位置。即使数据修改已经完成,之前的旧数据也不会被重写。
COW技术已经日渐流行,下面是两种比较流行的。
1.ZFS文件系统
Sun公司2005年搞的,是一个稳定的文件系统。
弱点:没有使用GPL许可
2.Btrf文件系统
B树文件系统。Oracle2007年搞的。稳定性较好。
8.2操作文件系统
8.2.1 创建分区
一开始必须在存储设备上创建分区来容纳文件系统。分区可以是整个硬盘,也可以是部分硬盘。
Fdisk工具用来帮助管理安装在系统上的任何存储设备上的分区。
要启动fdisk命令需要指定到分区的存储设备的设备名,还要有超级用户权限
$sudo fdisk /dev/sdb // 插入一个U盘就有了/dev/sdb
其余的步骤可以根据提示去做
8.2.2创建文件系统
将数据存储到分区以前,必须用某种文件系统对其进行格式化,这样linux才能使用它。
每种文件系统类型都用自己的命令行程序来格式化分区。
$type mkfs.ext4 // 查看这个工具是否可用。
$ sudo mkfs.ext4 /dev/sdb1 // 这样就是创建一个默认的稳健性系统,还可以加参数
为分区创建文件系统之后,下一步是将它挂载到虚拟目录下的某个挂载点,这样就可以将数据存储在新文件系统中了。
$mkdir my_partition
$sudo mount –t ext4 /dev/sdb1 curr_dir/my_partition
这种挂载是临时的,重启就没有了。在linux启动时就自动挂载可以将其添加到/etc/fstab文件中去。
总结:要操作文件系统需要三个步骤:
(1)先创建分区, sudo fdisk /dev/sdb
(2)对分区格式化,并创建文件系统:$ sudo mkfs.ext4 /dev/sdb1
(3)将文件系统挂载到虚拟目录下的某个挂载点:
$sudo mount –t ext4 /dev/sdb1 curr_dir/my_partition
8.2.3 文件系统的检查与修复。
fsck 命令能够检查和修复大部分类型的linux文件系统。
命令格式: fsck options filesystem
只能在未挂载的文件系统上运行fsck命令,对于已挂载的,可以先卸载,检查完成再挂载。
8.3 逻辑卷管理
(这一节不是很明白,尴尬)
用标准分区在硬盘上创建了文件系统,为已有文件系统添加额外的空间是一件麻烦的事情。
只能在同一个物理硬盘的可用空间范围内调整分区大小,如果硬盘上没有地方了,只能搞个更大的硬盘,再手动将已有的文件系统移动到新的硬盘上。
逻辑卷管理器(LVM):可以通过将另一个硬盘上的分区加入已有的文件系统,动态的添加存储空间。
优点是:不需要重建整个文件系统的情况下,轻松的管理磁盘空间。
8.3.1逻辑卷管理布局
核心在于如何处理安装在系统上的硬盘分区。
硬盘称为物理卷(PV),每个物理卷都会映射到硬盘上特定的物理分区。
多个物理卷集中在一起可以形成一个卷组(VG)。
逻辑卷管理系统将卷组视为一个物理硬盘。
整个结构的最后一层的逻辑卷(LV),逻辑卷为linux提供了创建文件系统的分区环境,类似于目前为止我们探讨的linux的物理硬盘分区。
Linux系统将逻辑卷视为物理分区。
8.3.2 linux中的LVM
Heina Mauelshagen开发的,1998年发布到Linux社区。允许你在linux上用简单的命令行管理一个完整的逻辑卷管理环境。
Linux LVM有两个可用的版本:
(1)LVM1:只能用于Linux内核2.4版本,仅提供基本的逻辑卷管理功能
(2)LVM2:可用于Linux内核2.6版本,提供了额外的功能
8.3.3使用Linux LVM
《Linux命令行与shell脚本编程大全》 第八章管理文件系统的更多相关文章
- Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---53
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---52
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- Winform常用的一些功能收集(持续更新)
#region progressBar实时显示进度 private void button1_Click(object sender, EventArgs e) { int i = 10000; pr ...
- JavaWeb基础之JdbcUtils工具类1.0
2016年12月20日,第一次学习JDBC.看的是传智播客崔希凡老师的视频,东北口音很是风趣幽默,技术之牛让人膜拜.2017年9月21日,再次重温web知识,分享JdbcUtils工具类,用以接下来的 ...
- JavaScriptOOP
1. OOP基础 1.1面向对象编程OOP 1.语言的分类: ① 面向机器:汇编语言 ② 面向过程:C语言 ③ 面向对象:C++ Java PHP 等 2.面向过程与 ...
- 使用邮件监控Mxnet训练
1. 前言 受到小伙伴的启发,就自己动手写了一个使用邮件监控Mxnet训练的例子.整体不算复杂. 2. 打包训练代码 需要进行监控训练,所以需要将训练的代码打包进一个函数内,通过传参的方式进行训练.还 ...
- SAP 动态设置 GUI STATUS 灰色不可用 或者隐藏(转)
http://blog.sina.com.cn/s/blog_66110f6201017rul.html 有时候需要根据用户的权限或者是操作动态设置gui状态上的某些按钮的可用和不可用. 1.先定 ...
- 中秋H5,这篇脑洞开的可以!
案例:嫦娥--寻开心出品:凯迪仕 1.内容:这是一支视频类H5案例.Loading完毕进入页面,首屏提示案例最佳观看方式为先锁屏再横屏.点击开始按钮播放视频,视频讲述"葫芦娃"缠着 ...
- 常用的HTTP状态码
成功的状态码: 200 – 服务器成功返回网页 304 – 未修改 失败的状态码: 404 – 请求的网页不存在 503 – 服务器暂时不可用 500 – 服务器内部错误 下面的不是很常用,记住上面那 ...
- 自学 Python 3 最好的 入门 书籍 推荐(附 免费 在线阅读 下载链接)
请大家根据自己的实际情况对号入座,挑选适合自己的 Python 入门书籍: 完全没有任何编程基础:01 号书 少量编程基础,不求全,只希望能以最快的速度入门:02 号书 少量编程基础,有一定的英文阅读 ...
- git上传遇到 GitHub could not read Username 的解决办法
Gitversion 1.8.5.2 执行git push命令异常,如下: Push failed Failed with error: unable to read askpass response ...
- Mybatis Mapper.xml 需要查询返回List<String>
当需要查询返回 List<String> <select id="getByIds" parameterType="java.lang.String&q ...