Linux磁盘分区的详细步骤(图解linux分区命令使用方法)

时间:2016-10-08 21:01来源:红客联盟 作者:Linux先生 举报 点击:
前言 磁盘是怎么分区的在文章后面会谈到,先谈一下 Linux 文件 系统 的简单操作。不过在 阅读 本文之前,我假定读者们对Linux的磁盘与文件系统以及目录树已经有

前言


磁盘是怎么分区的在文章后面会谈到,先谈一下Linux文件系统的简单操作。不过在阅读本文之前,我假定读者们对Linux的磁盘与文件系统以及目录树已经有了初步的了解。

操作文件系统


介绍操作文件系统的几个命令。

查看磁盘/目录树

一、df命令查看磁盘的分区和已经使用量

这里写图片描述

解释下输出的第一行中某些字段的含义:

文件系统 容量 已用 可用 挂载点 代表磁盘的分区和内存中的某一个区域。 磁盘总共的容量 磁盘已经使用的容量 磁盘未使用的容量 该文件系统挂载在哪一个目录下

 <喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPrTTzbzW0L/J0tS/tLP2ztK1xLTFxczG5Mq1yse31sHLy8S49sf4tcSjrLfWsfDKxy9kZXYvc2RhMaGiL2Rldi9zZGEyoaIvZGV2L3NkYTOhoi9kZXYvc2RhNKOs1eLA77K7z9TKvi9kZXYvc2RhM7XE1K3S8srH0vLOqs7St9bH+LXEyrG68rDRL2Rldi9zZGEzudLU2LW9wLRzd2Fwz8KhozwvcD4NCjxwPsHtzeK1xHVkZXahonRtcHO1yMrHz7XNs9TL0NDKsaOs1NrE2rTmu6631rXE0ruyv7fWx/jT8qGj1eKyv7fWx/jT8rG7wdnKsbnS1Ni1vc7EvP7K98/CoaM8L3A+DQo8cD7B7c3io6xkZsrHtsHIodX7uPbOxLz+z7XNs9bQtcRzdXBlcmJsb2Nr1tC1xMr9vt3AtMrks/a1xKOsy/nS1MvZtsi63L/soaM8L3A+DQo8cD5kZru509DSu9CpxuTL+7XEw/zB7rLOyv2jrL/J0tTTw21hbrLpv7ShozwvcD4NCjxiciAvPg0KIyMjI7b+oaLA+9PDZHXD/MHusunRr7Wxx7DEv8K8z8K1xMv509DEv8K8L87EvP7L+dW8tcTI3cG/ICFb1eLA79C0zbzGrMPoyvZdKGh0dHA6Ly9pbWcuYmxvZy5jc2RuLm5ldC8yMDE2MTAwNjE1NDcxNTY1NSkgyc/NvM/Uyr7By0phdmG5pLPMxL/CvM/CtcTL+dPQzsS8/i/Ev8K8o6zX87LgysfVvL7dtcTI3cG/o6zT0rLgyse+38zltcTOxLz+w/svxL/CvMP7oaM8YnIgLz4NCiMjIyPI/aGiZHVtcGUyZnOy6b+0t9bH+LXEvt/M5cq508PH6b/2ICFb1eLA79C0zbzGrMPoyvZdKGh0dHA6Ly9pbWcuYmxvZy5jc2RuLm5ldC8yMDE2MTAwNjE2MTQxMjYxMSk8YnIgLz4NCrLpv7QvZGV2L3NkYTLV4rj2t9bH+KOsz8LD5r3iys3Su8/Cz+C52Mr9vt2how0KPHRhYmxlPg0KPHRib2R5Pg0KCTx0cj4NCgk8dGQ+RmlsZXN5c3RlbSB2b2x1bWUgbmFtZTwvdGQ+DQoJPHRkPkZpbGVzeXN0ZW0gc3RhdGU8L3RkPg0KCTx0ZD5Jbm9kZSBjb3VudDwvdGQ+DQoJPHRkPkJsb2NrIGNvdW50PC90ZD4NCgk8dGQ+QmxvY2sgc2l6ZTwvdGQ+DQoJPC90cj4NCgk8dHI+DQoJPHRkPs7EvP7Ptc2ztcSx8MP7o6y/ydLU19S8usihw/s8L3RkPg0KCTx0ZD7OxLz+z7XNs7XE17TMrKOsyOe5+8rHY2xlYW7U8rHtyr7V/bOjPC90ZD4NCgk8dGQ+SW5vZGW1xMr9wb88L3RkPg0KCTx0ZD5CbG9ja7/ptcTK/cG/PC90ZD4NCgk8dGQ+w7/Su7j2QmxvY2u/6bXEtPPQoaOsxL/HsNa709AxS0KjrDJLQqOsNEtCtcTIoda1PC90ZD4NCgk8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8YnIgLz4NCiMjI7nY09rBrL3TzsS8/iDU2ndpbmR3b3PW0KOsway9087EvP6+zc/gtbHT2tK7uPa/7L3dt73KvaOsyLu2+NTaTGludXjItMO709DV4sO0vPK1paGjICMjIyPSu6GizsS8/srH1PXDtLG7tsHIobXEDQo8cD7U2kxpbnV41tCjrNK7uPbOxLz+t9bOqsG9uPayv7fWo6zSu7j2ysfOxLz+tcTIqM/eus3K9NDUo6zB7c3i0ru49srHzsS8/rXEvt/M5cTayN2jrNXiwb3V37fWsfC05rfF1Nppbm9kZb/pus1ibG9ja7/p1tCho7b4w7+49mJsb2Nrv+m2vNPQ0ru49sv30v26xcLro6zV4rj2y/fS/brFwuu74bG7vMfCvNTaaW5vZGXA78PmoaM8L3A+DQo8cD7Su7j2zsS8/r/JxNy74brctPOjrMv50tTQ6NKqtuC49mJsb2Nrv+nAtLTmt8XSu7j2zsS8/rXEy/nT0MTayN2ho8O/uPZibG9ja7XEy/fS/ba8u+Gxu7zHwrzU2mlub2RlwO/D5qGjzazKsaOsw7+49rWl0rvOxLz+1rvUytDt09DSu7j2aW5vZGW/6aGjPC9wPg0KPHA+y/nS1LbByKHSu7j2zsS8/rXEwfezzMrH1eK49tH519O1xKOsz8i2wcih1eK49s7EvP5pbm9kZb/pwO/D5rTmt8W1xMv509DL99L9usXC66OsyLu687C01dW6xcLryKXRsNXSttTTprXEYmxvY2u/6aOs1+6687bByKFibG9ja7/pwO/D5rXExNrI3aGjPC9wPg0KPHA+Jm5ic3A7PC9wPg0KPHA+v7TG8MC0uty88rWlo6y21LDJo6EgyLu2+M7KzOLAtMCyo6zOxLz+tcRpbm9kZcrH1PXDtLG7tsHIobXEo7+jvzwvcD4NCjxwPiZuYnNwOzwvcD4NCjxwPrTwsLjKx82ouf3Ev8K8tsHIoaGjTGludXjKx9K7uPbEv8K8yve94bm5o6zL+dPQtcTOxLz+yKuyv7Tmt8XU2sS/wrzPwqOsz+vSqrbByKHSu7j2zsS8/qOssdjPyLbByKHG5MS/wryho9K7uPbEv8K80rLKx9PJaW5vZGW6zWJsb2Nrv+m5ubPJtcSjrMf4sfDKx8S/wry1xGJsb2Nrv+nW0LTmt8W1xMrHuMPEv8K8z8LL+dPQzsS8/rXEzsS8/sP7us24w87EvP61xGlub2RlusXC67XE07PJ5KGjPC9wPg0KPHA+vtm49sD919OjurbByKEvYmluL2xu1eK49s7EvP6hozwvcD4NCjxwPjxpbWcgYWx0PQ=="这里写图片描述" src="/uploads/allimg/161008/2100193017-1.png" title="\" />

读取“/”目录,因为“/”是挂载点,所以可以知道挂载点的inode号码是2,读取bin目录,通过“/”的inode找到“/”的block块,在这个block块里面查询看是否有“bin”这个文件名字,找到这个名字并返回这个名字对应的inode号码,也就是130817。通过编号为130817的inode块来找到对应block块,并查询是否有ln这个文件名,找到这个名字并返回对应的inode号码,也就是130894。在130894这个inode中,来查询所有保存了block索引的记录,并读取对应索引的block。完毕。

二、硬连接

铺垫了这么多,现在回归主题。

在Linux中,生成这个所谓的“快捷方式”有两种,一种是硬连接,另外一种是软连接,先介绍硬连接。

举例说明:我现在要在“/root”目录下创建一个对“/bin/ln”的硬连接,连接名字是ln2。那么Linux它会这样做,它会在“/root”目录的block块中添加一条文件名和inode号码的映射,文件名自然是ln2,inode号码就是“/bin/ln”文件的inode号码。

上图: ![这里写图片描述](http://img.blog.csdn.net/20161006165818217)

在“/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块是用来保存你要连接的文件的文件名”,“/bin/ln”正好7个字符,一个字符就是一个byte,所以文件内容是7个byte。(其他的区别读者们自己去体会)

 

四、软连接和硬连接的区别。

软连接会占用额外inode块和block块,而硬连接不会。(忽略block块恰好被沾满的情况)如果我将“/bin/ln”这个文件删除,那么作为硬连接的“/root/ln2”还是可以正常工作,因为文件被存放在block块中,文件删除只不过是抹去了block上的数据。(这里的正常工作指的是还能够访问之前“/bin/ln”所占用的block块)如果将“/bin/ln”删除,那么软连接“/root/ln3”将无法工作,它会显示找不到源文件。因为软连接保存的是路径,现在这个路径已经没有了。

PS:感觉这个连接我似乎没有讲清楚。有意见请提

 

磁盘的分区–命令fdisk


前面都是铺垫,后面才是具体的磁盘管理操作。但是磁盘的分区只是磁盘管理的一小部分。
本人只有一块磁盘,在Linux中分配的名字是/dev/sda,用之前的df可以查看。

这里写图片描述

看到没,上面的/dev/sda2、/dev/sda4等等,去掉那个数字就是你的磁盘设备名字。现在就要进入这个设备查看一下。

这里写图片描述

看图,上面说明了一切。

按照提示,你输入m就可以查询分区的所有命令,简单易懂。

有两个命令我得着重强调。。。。

w q 此命令会使你的所有对磁盘的操作全部生效,如果不清楚自己所作所为的后果,此命令请慎用。 退出磁盘分区程序,之前所有的操作都无效,当然前提是你没有用w。


输入p,看它告诉我什么信息:

原来我的磁盘分为四个区sda1、sda2、sda3、sda4

现在来删除一个分区试试,输入d:

这里写图片描述

输入d后,电脑要求你输入你想删除的区号,于是我输入了2。

再输入p查看一下:

这里写图片描述

卧槽,sda2没了。。。

破罐子破摔,全部删掉吧。。。删掉来重新添加,添加用n就行。。

这里写图片描述

看见没,让你输入新建区的起始扇区号码,和结束扇区号码,创建成功来,用p查看一下。

这里写图片描述

不玩了,按q退出。

我在Ubuntu安装时,预留了20G的磁盘空间没有进行分区,这次我取出2G用来重新做示范。

这里写图片描述

其中的sda5就是从空闲空间拿出来的2G。
在此处提醒下,输入p查询是不会将没有分区的磁盘空间显示出来的,你只有输入n,系统才会让你知道原来你还有空间未被分配。

这里写图片描述

这里我按了w来写入磁盘。写入的确是成功了,不过系统并没有重新区读取这个分区表,我是不想开机重启的,所以用这个命令去强制它读取吧。
 

将分好的磁盘格式化


选择一种文件格式将新建的分区初始化,是为了让Linux能够识别这个分区里面的文件。所谓的文件格式就是,磁盘的文件是按照怎样的一种形式组织起来,之前提到的文件由两部分组成的,比如inode,block等,就是Linux的所能够识别的文件格式的一种。

格式化的命令 - mkfs

mkfs -t 文件格式 设备文件名

这里写图片描述

这里手贱,文件格式写成ext3了,应该用ext4的,得再重新格式化一次。。

这里写图片描述

完毕。

PS:还有一个命令是mke2fs,自行man。

检查磁盘是否有问题


命令 fsck

系统跑久了,磁盘会出现一些问题,比如坏道,文件损坏之类的。。。(其实我也不太懂,抱歉)。

fsck命令是用来检验磁盘是否有问题的,相关参数自行man。

这里写图片描述

值得注意的一点是:fsck命令可能会损坏文件系统,所以被fsck扫描的分区请不要被挂载。

挂载/卸载磁盘


一、挂载磁盘

这里我打算把sda5挂载到“mnt/sda5”这个目录,这个目录是不存在的,所以要创建。

挂载的命令是mount,命令有点复杂,自行man。

这里写图片描述

注意命令:mount <设备名称> <挂载的目录>
弄完了用df查看一下,看最后一行的/mnt/sda5,是不是成功了!

以下几点要注意:

挂载的目录必须为空,否则目录里面的数据会被隐藏,直到设备被卸载才会显现。挂载的目录每次只能挂载一个设备。同一个设备每次只能挂载到一个目录。

感觉太简单了。。。其实mount是比较复杂的,但用起来简单的原因是系统已经帮我们把许多东西都做好了,真实的过程是这样的:

挂载时,系统要知道设备是何种文件系统,是ext4还是其他的什么。然而系统是不知道设备是什么文件系统系统的,所以它要测试设备是哪一种文件系统,看自己能不能支持,如果支持,则对设备进行挂载。对于Linux支持的文件系统,Linux都会有一个驱动,它会利用这个驱动来测试文件系统的superblock,看能不能匹配。(几乎每个文件系统都会有superblock)

所以说有这个文件很重要:/proc/filesystems
这个文件记录leLinux所有已经加载的文件系统

这里写图片描述

还有一个:/lib/modules/$(uname -r) /kernel/fs/
这个文件夹下面所有的文件都对应着某一个文件系统的驱动。

这里写图片描述

 

二、卸载磁盘

很简单的:umount <设备名字/挂载点>

 

开机挂载

一般情况下,如果你再次开机,就会发现之前已经挂载的磁盘必须手动再次挂载一次,不信可以用df命令查看一下。

为了开机自动挂载磁盘,只需要配置一下 /etc/fstab文件即可。

这里写图片描述

不同的Linux distribution的 fstab文件可能不一样,我的Ubuntu如上所示,需要在末尾添加一些配置才能开机挂载sda5,不过我得先解释下这6列的含义。

file system mount point type options dump pass 设备名称。磁盘号的UUID 挂载点 分区类型.linux分区一般为ext4。 挂载参数。一般为defaults。常用参数如下: auto:开机自动挂载。 default:按照大多数永久文件系统的缺省值设置挂载定义。 noauto:开机不自动挂载。 nouser:只有超级用户可以挂载。 ro:按只读权限挂载。 rw:按可读可写权限挂载。 user:任何用户都可以挂载。 磁盘备份。默认为0,表示不备份。 磁盘检查。默认为0,表示不检查。

关键是怎么查询UUID号码,看这个:

这里写图片描述

查找到后,添加如下配置:
这里写图片描述

这样就可以了。

PS:还有一些东西没写完,以后更新。。

------分隔线----------------------------
推荐内容