序言
c盘是如何分区的在文章旁边会提到,先谈一下Linux文件系统的简单操作。不过在阅读本文之前,我假设读者们对Linux的c盘与文件系统以及目录树早已有了初步的了解。
操作文件系统
介绍操作文件系统的几个命令。
查看c盘/目录树一、df命令查看c盘的分区和早已使用量
解释下输出的第一行中个别数组的含意:
文件系统
容量
已用
可用
挂载点
代表c盘的分区和显存中的某一个区域。
c盘总共的容量
c盘早已使用的容量
c盘未使用的容量
该文件系统挂载在哪一个目录下
从图中可以看出我的c盘虽然是分了四个区的,分别是/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4,这儿不显示/dev/sda3的缘由是由于我分区的时侯把/dev/sda3挂载到来swap下。
另外的udev、tmps等是系统运行时,在显存界定的一部分区域。这部份区域被临时挂载到文件树下。
另外,df是读取整个文件系统中的superblock中的数据来输出的,所以速率很快。
df还有一些其他的命令参数,可以用man查看。
二、利用du命令查询当前目录下的所有目录/文件所占的容量
上图显示了Java工程目录下的所有文件/目录,两侧是抢占的容量,两侧是具体的文件名/目录名。
三、dumpe2fs查看分区的具体使用情况
查看/dev/sda2这个分区,下边解释一下相关数据。
Filesystemvolumename
Filesystemstate
Inodecount
Blockcount
Blocksize
文件系统的别称,可以自己起名
文件系统的状态,假如是clean则表示正常
Inode的数目
Block块的数目
每一个Block块的大小,目前只有1KB,2KB,4KB的取值
关于联接文件
在windwos中,联接文件就相当于一个快捷方法,但是在Linux却没有那么简单。
一、文件是如何被读取的
在Linux中,一个文件分为两个部份linux格式化分区命令,一个是文件的权限和属性,另外一个是文件的具体内容,这三者分别储存在inode块和block块中。而每位block块都有一个索引号码,这个索引号码会被记录在inode上面。
一个文件可能会很大,所以须要多个block块来储存一个文件的所有内容。每位block的索引就会被记录在inode上面。同时,每位单一文件只容许有一个inode块。
所以读取一个文件的流程是这个样子的,先读取这个文件inode块上面储存的所有索引号码,之后根据号码去找寻对应的block块,最后读取block块上面的内容。
看上去很简单,对吧!但是问题来啦,文件的inode是如何被读取的??
答案是通过目录读取。Linux是一个目录树结构,所有的文件全部储存在目录下,想要读取一个文件,必先读取其目录。一个目录也是由inode和block块构成的,区别是目录的block块中储存的是该目录下所有文件的文件名和该文件的inode号码的映射。
举个反例:读取/bin/ln这个文件。
二、硬联接
铺垫了如此多,现今回归主题。
在Linux中,生成这个所谓的“快捷方法”有两种,一种是硬联接,另外一种是软联接,先介绍硬联接。
举例说明:我如今要在“/root”目录下创建一个对“/bin/ln”的硬联接,联接名子是ln2。这么Linux它会这样做,它会在“/root”目录的block块中添加一条文件名和inode号码的映射,文件名自然是ln2,inode号码就是“/bin/ln”文件的inode号码。
上图:
在“/root”目录下生成了ln2的文件,假如双击它,都会执行“/bin/ln”文件。瞧瞧最上面的号码130894,两个都是一样的,表示ln和ln2都是联接到同一个inode号码。
还有一点就是,注意到输出数据中的2吗?就是在-rwxr-xr-x前面的,代表的是有多少个硬联接联接到了这个文件。
三、软联接
硬联接只是在目录的block块上面添加了一条额外的映射记录,并没有多占用额外的inode块和block块,并且软联接就不同了。
软联接是直接新建一个文件。因为一个文件对应一个inode块和起码一个block块,所以新建一个软联接就起码会占用两个block块。其中inode的作用就不用说了,自然是拿来记录属性权限和block索引的。并且软联接的block块作用是保存你要联接的文件的完整路径。
上图举例子:
注意区别,两个文件的inode号码不一样!!说明我们新建了一个文件。还有,大家听到了那种数字7吗,这个位置的值一般代表文件内容的大小,但是为何是7呢?记得刚才说的“软联接的block块是拿来保存你要联接的文件的文件名”linux格式化分区命令,“/bin/ln”正好7个字符,一个字符就是一个byte,所以文件内容是7个byte。(其他的区别读者们自己去感受)
四、软联接和硬联接的区别。
PS:觉得这个联接我好像没有讲清楚。有意见请提
c盘的分区–命令fdisk
后面都是铺垫,前面才是具体的c盘管理操作。并且c盘的分区只是c盘管理的一小部份。
本人只有一块c盘,在Linux中分配的名子是/dev/sda,用之前的df可以查看。
见到没,里面的/dev/sda2、/dev/sda4等等,除去那种数字就是你的c盘设备名子。现今就要步入这个设备查看一下。
看图,里面说明了一切。
根据提示,你输入m就可以查询分区的所有命令,简单易懂。
有两个命令我得注重指出。。。。
此命令会使你的所有对c盘的操作全部生效,假如不清楚自己所作所为的后果,此命令请慎用。
退出c盘分区程序,之前所有的操作都无效,其实前提是你没有用w。
输入p,看它告诉我哪些信息:
原先我的c盘分为四个区sda1、sda2、sda3、sda4
如今来删掉一个分区试试,输入d:
输入d后,笔记本要求你输入你想删掉的区号,于是我输入了2。
再输入p查看一下:
尼玛,sda2没了。。。
破罐子破摔,全部删除吧。。。删除来重新添加,添加用n就行。。
看到没,让你输入新建区的起始磁道号码,和结束磁道号码,创建成功来,用p查看一下。
不玩了,按q退出。
我在Ubuntu安装时,预留了20G的c盘空间没有进行分区,此次我取出2G拿来重新做示范。
其中的sda5就是从空闲空间掏出来的2G。
在此处提醒下,输入p查询是不会将没有分区的c盘空间显示下来的,你只有输入n,系统就会让你晓得原先你还有空间未被分配。
这儿我按了w来写入c盘。写入的确是成功了,不过系统并没有重新区读取这个分区表,我是不想开机重启的linux操作系统怎么样,所以用这个命令去强制它读取吧。
将分好的c盘低格
选择一种文件格式将新建的分区初始化,是为了让Linux才能辨识这个分区上面的文件。所谓的文件格式就是,c盘的文件是根据如何的一种方式组织上去,之前提到的文件由两部份组成的,例如inode,block等,就是Linux的所才能辨识的文件格式的一种。
低格的命令-mkfs
mkfs-t文件格式设备文件名
这儿手贱,文件格式写成ext3了,应当用ext4的,得再重新低格一次。。
完毕。
PS:还有一个命令是mke2fs,自行man。
检测c盘是否有问题命令fsck
系统跑久了redhat linux 下载,c盘会出现一些问题,例如低格,文件受损之类的。。。(虽然我也不太懂,抱歉)。
fsck命令是拿来检验c盘是否有问题的,相关参数自行man。
值得注意的一点是:fsck命令可能会破损文件系统,所以被fsck扫描的分区请不要被挂载。
挂载/卸载c盘一、挂载c盘
这儿我准备把sda5挂载到“mnt/sda5”这个目录,这个目录是不存在的,所以要创建。
挂载的命令是mount,命令有点复杂,自行man。
注意命令:mount
弄完了用df查看一下,看最后一行的/mnt/sda5,是不是成功了!
以下几点要注意:
觉得太简单了。。。虽然mount是比较复杂的,但用上去简单的缘由是系统早已帮我们把许多东西都做好了,真实的过程是这样的:
所以说有这个文件很重要:/proc/filesystems
这个文件记录leLinux所有早已加载的文件系统
还有一个:/lib/modules/$(uname-r)/kernel/fs/
这个文件夹下边所有的文件都对应着某一个文件系统的驱动。
二、卸载c盘
很简单的:umount
开机挂载
通常情况下,假如你再度开机,都会发觉之前早已挂载的c盘必须自动再度挂载一次,不信可以用df命令查看一下。
为了开机手动挂载c盘,只须要配置一下/etc/fstab文件即可。
不同的Linuxdistribution的fstab文件可能不一样,我的Ubuntu如上所示,须要在末尾添加一些配置就能开机挂载sda5,不过我得先解释下这6列的含意。
filesystem
mountpoint
type
options
dump
pass
设备名称。c盘号的UUID
挂载点
分区类型.linux分区通常为ext4。
挂载参数。通常为defaults。常用参数如下:auto:开机手动挂载。default:根据大多数永久文件系统的缺省值设置挂载定义。noauto:开机不手动挂载。nouser:只有超级用户可以挂载。ro:按只读权限挂载。rw:按可读可写权限挂载。user:任何用户都可以挂载。
c盘备份。默认为0,表示不备份。
c盘检测。默认为0,表示不检测。
关键是如何查询UUID号码,看这个:
查找到后,添加如下配置:
这样就可以了。
PS:还有一些东西没写完,之后更新。。