题主一共有三个问题:
Linux文件类型有什么?如何修改文件权限?软链接和硬链接的区别是什么?文章源自玩技e族-https://www.playezu.com/124287.html
我想第一个问题想要问的是Linux的文件系统类型是什么?因为如果说单个文件本身的类型的话,不是由Linux来决定的,而是由创建这个文件的应用程序决定的,跟windows一样,.txt文章源自玩技e族-https://www.playezu.com/124287.html
.pdf文章源自玩技e族-https://www.playezu.com/124287.html
.doc文章源自玩技e族-https://www.playezu.com/124287.html
.xls文章源自玩技e族-https://www.playezu.com/124287.html
等等.... 无法穷举,如果是Linux文件系统的类型的话,这个问题就有意义了,因为文件系统是由操作系统本身决定的,下面我来一一回答这三个问题:文章源自玩技e族-https://www.playezu.com/124287.html
第一个问题,Linux的文件系统类型有什么?文章源自玩技e族-https://www.playezu.com/124287.html
首先,我们来说一下我们如何用最简单的查看一个Linux的文件系统类型,假设你现在已经登录到了一个台Linux系统(比如CentOS/Ubuntu等),并打开了一个命令行窗口,那么只要用一个简单命令即可:mout, 就这个命令文章源自玩技e族-https://www.playezu.com/124287.html
文章源自玩技e族-https://www.playezu.com/124287.html
红线标注的地方就是Linux的文件系统类型,叫做ext4, 啥意思啊?它的中文翻译是第四代拓展文件系统,英文原文是 Fourth extended filesystem, 缩写成ext4.文章源自玩技e族-https://www.playezu.com/124287.html
为什么突然出来一个ext4第四代呢?有1,2,3代吗? 有!
Linux发展到今天一共经历了4代文件系统的更替,当然是一代比一代好。
第一代ext, 1992年4月发布,居于Unix的文件系统做了一些优化,主要还是采用Unix文件系统的元数据结构,因为支持的文件系统大小不是太理想,现在已经基本上不用。
第二代ext2, 1993年发布,它在一代的基础上做了增强,文件系统支持大到2TB, 在Linux的内核发布到2.6的时候,它最大可以支持32TB的大小, 文件系统也比较高效稳定,所以使用了很长一段时间,弱点是非正常关机导致文件系统损坏(几率非常大)。
第三代ext3, 从ext2发展而来,主要加入了日志功能,高可用性进一步提高:
高可用性:系统使用了ext3文件系统后,即使在非正常关机后,文件系统也不容易损坏。
数据的完整性:避免了意外宕机对文件系统的破坏。
文件系统的速度:ext3的日志功能对磁盘的驱动器读写头进行了算法优化,性能有所提升
兼容性:由ext2文件系统转换成ext3文件系统非常容易
第四代ext4, 现行文件系统类型,其实是ext3的改进版,在ext3的基础上提供更佳的性能和可靠性,也提供了更多的功能
改进一,单个文件可以达到16TB, 而ext3单个文件最多2TB。
改进二,无限多个子目录支持,而ext3最多只能支持约32000个子目录,有人说32000个够用了啊,是的,对你够但对工程应用远远不够。
改进三,采用现代文件系统的extents理念,每个extent为一组连续数据块使得读写更加流畅顺滑,提高性能。
改进四,多块分配(multiblock allocator), 一次程序调用可以分配多个数据块,简化了调用控制流程,效率更高。
改进五, 在线数据整理.....
所以它是现行linux文件系统,大数据系统hadoop的最最底层也是使用ext4作为物理存储,当然它还加上了软件定义存储的理念,所以可以无限拓展。
关于Linux的文件系统类型大概是这些,还有其他的方向等待其他的答主补充。
第二个问题,如何修改文件系统的权限?
很简单,登陆到命令行窗口
这里我建了一个目录叫做demo, 和一个文件叫做
demofile.txt
, 用ls -l 命令查看他的权限,我们可以看到有-rw- r-- r-- 的标记,意思是目前这个文件的权限是:文件拥有者(Owner)拥有读写的权限rw- ,跟Owner同一个工作组的成员只有只读的权限 r-- ,其他用户也只有只读的权限r--,那么下面我们来改变它的权限分配,给同工作组的成员也加上可写的权限,因为他们有可能要跟我一起共同编辑这个文件,做法如下:
chmod g=rw demofile.txt
,就是这么简单
g代表group就是组的意思,chmod是专门用来改变文件和目录权限的命令,g=rw就是让组成员拥有rw即读写的权限,另外还可以把执行权限赋给组成员,这样做:chmod g=rwx demofile.txt
这样做之后我们查看文件发现组的权限变成了rwx 同时文件变绿了,x代表这个文件是可以被执行的,当然执行什么内容要自己往文件里面添加。
比如我们想要让其他用户也拥有读取和执行的权限,这样做:chmod o=rx demofile.txt, o代表others的意思。
用同样的方法可以改变其他权限,比如改变自己的权限,给自己添加该文件的可运行权限:
chmod u=rwx
demofile.txt
,这样自己也有运行权限了。
改变文件的权限基本上就是这么简单,就一个命令 chmod.
第三个问题,软链接和硬链接的区别是什么?
为了说清楚这个事情我们最好还是动手建立一个软连接和一个硬链接吧,凭空说很抽象,创建软连接和硬链接的方法如下:
图中我们看到,当我们用ls -li 查看目录下的文件时,我们发现很有意思的事情,我们发现文件file1的编号和硬链接名称f1的编号是一样的是吧?而软连接f2跟file1的编号是不一样的,差别就在这里:
这个编号就是linux文件系统里面大名鼎鼎的inode,中文可以翻译成索引节点。
那差别在什么地方呢?是这样的,现在f1是file1的硬链接,从文件系统的角度看,f1和file1是完全对等的,相当于同一个数据块有两个不同的文件名称,他们都指向系统中的同一个存储块,你这个时候如果删掉file1的话,f1同样可以访问,你删掉f1的话file1也同样可以访问,东西都还在,不影响。但软连接就不一样了,如果你这个时候删除file1那么软连接f2就不可访问了,也就是它找不着数据块了,变空了。
Linux里面对于每个文件都给了一个唯一编号inode index, 但允许一个文件存在两个或多个不同的名字,指向同一个存储空间,他们是完全平等的,互不干扰。而Linux系统在真正删除一个文件的磁盘内容的时候它会判断是否还有使用同样inode的文件名指向这个数据块,如果还有,数据块就不会被删除,如果没有了就真删除。
软连接简单的可以理解成只是原文件的一个快捷方式,在创建软连接的同时会创建一个与源文件不同的inode, 它是通过源文件的其中一个文件名间接找到数据块的,相当于 f2--file1-- data block, 现在你删除了file1这个文件名,那么连接就从中间断开了,快捷方式就没有地方可以指向了,所以就空了,差别就在这里。
希望能帮到你更好的理解linux的文件系统。
补充一句人话:
硬链接是每个连接名(可以理解为文件名)直接指向数据块本身,所以他们拥有相同的inode编号。
软连接是通过数据块的其中一个文件名作为中介转连接到数据块的,它跟数据块本身没有直接关联,所以使用不同的inode编号,区别在这。
我发现工作中很多系统管理员和开发人员都没有真正的理解这二者之间的差别。
评论