您的位置:首页 > 其它

磁盘的分区、格式化、挂载

2016-09-04 20:09 246 查看

磁盘的分区、格式化、挂载

对于一个系统管理者( root )而言,磁盘的的管理是相当重要的一环,尤其近来硬盘已经渐渐的被当成是消耗品了 ..... 如果我们想要在系统里面新增一颗硬盘时,应该有哪些动作需要做的呢:

 

对磁盘进行分区,以创建可用的 partition ;

对该 partition 进行格式化( format ),以创建系统可用的 filesystem;

在 Linux 系统上,需要创建挂载点 ( 亦即是目录 ),并将他挂载上来;

 

磁盘分区: fdisk

命令参数和帮助

 

[root@www ~]# fdisk [-l] 装置名称

选项与参数:

-l  :输出后面接的装置所有的partition 内容。若仅有 fdisk -l 时,

     则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来。

 

范例:找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息

[root@www ~]# df /            <==注意:重点在找出磁盘文件名而已

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/hdc2              9920624   3823168  5585388  41% /

 

[root@www ~]# fdisk /dev/hdc  <==仔细看,不要加上数字喔!

The number of cylinders for this disk isset to 5005.

There is nothing wrong with that, but thisis larger than 1024,

and could in certain setups cause problemswith:

1) software that runs at boot time (e.g.,old versions of LILO)

2) booting and partitioning software fromother OSs

  (e.g., DOS FDISK, OS/2 FDISK)

 

Command (m for help):     <==等待你的输入!

Command (m for help): m   <== 输入 m 后,就会看到底下这些命令介绍

Command action

  a   toggle a bootable flag

  b   edit bsd disklabel

  c   toggle the dos compatibilityflag

  d   delete a partition            <==删除一个partition

  l   list known partition types

  m   print this menu

  n   add a new partition           <==新增一个partition

  o   create a new empty DOSpartition table

  p   print the partition table     <==在屏幕上显示分区表

  q   quit without savingchanges   <==不储存离开fdisk程序

  s   create a new empty Sundisklabel

  t   change a partition's system id

  u   change display/entry units

  v   verify the partition table

  w   write table to disk andexit  <==将刚刚的动作写入分区表

  x   extra functionality (expertsonly)

 

老实说,使用 fdisk 这支程序是完全不需要背命令的!如同上面的表格中,你只要按下 m 就能够看到所有的动作!比较重要的动作在上面已经用底线画出来了,你可以参考看看。其中比较不一样的是『q 与 w』这两个玩意儿!不管你进行了什么动作,只要离开 fdisk 时按下『q』,那么所有的动作『都不会生效!』相反的,按下『w』就是动作生效的意思。所以,你可以随便玩 fdisk ,只要离开时按下的是『q』即可。

 

新增磁盘分区

 

新增磁盘分区槽有好多种情况,因为新增 Primary / Extended / Logical 的显示结果都不太相同。 底下我们先将 /dev/hdc 全部删除成为干净未分区的磁盘,然后依序新增给大家瞧瞧!

 

开始新增,我们先新增一个 Primary 
的分区槽,且指定为 4
号看看


 

[root@www ~]# fdisk /dev/hdc

Command (m for help): n

Command action            <==因为是全新磁盘,因此只会问extended/primary而已

  e   extended

  p   primary partition (1-4)

p                         <==选择 Primary 分区槽

Partition number (1-4): 4 <==配置为 4 号!

First cylinder (1-5005, default 1): <==直接按下[enter]按键决定!

Using default value 1               <==启始磁柱就选用默认值!

Last cylinder or +size or +sizeM or +sizeK(1-5005, default 5005): +512M

# 这个地方有趣了!我们知道partition 是由 n1 到 n2 的磁柱号码 (cylinder),

# 但磁柱的大小每颗磁盘都不相同,这个时候可以填入 +512M 来让系统自动帮我们找出

# 『最接近 512M 的那个 cylinder 号码』!因为不可能刚好等于512MBytes 啦!

# 如上所示:这个地方输入的方式有两种:

# 1) 直接输入磁柱的号码,你得要自己计算磁柱/分区槽的大小才行;

# 2) 用 +XXM 来输入分区槽的大小,让系统自己捉磁柱的号码。

#   +与M是必须要有的,XX为数字

 

Command (m for help): p

 

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc4               1          63      506016  83  Linux

# 注意!只有 4 号! 1 ~ 3 保留下来了!

 

继续新增一个,这次我们新增 Extended
的分区槽好了


 

Command (m for help): n

Command action

  e   extended

  p   primary partition (1-4)

e   <==选择的是 Extended 喔!

Partition number (1-4): 1

First cylinder (64-5005, default 64):<=[enter]

Using default value 64

Last cylinder or +size or +sizeM or +sizeK(64-5005, default 5005): <=[enter]

Using default value 5005

# 还记得我们在第三章的磁盘分区表曾经谈到过的,扩展分配最好能够包含所有

# 未分区的区间;所以在这个练习中,我们将所有未配置的磁柱都给了这个分区槽喔!

# 所以在开始/结束磁柱的位置上,按下两个[enter]用默认值即可!

 

Command (m for help): p

 

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1              64        5005   39696615    5  Extended

/dev/hdc4               1          63      506016  83  Linux

# 如上所示,所有的磁柱都在/dev/hdc1 里面啰!

 

这次我们随便新增一个 2GB
的分区槽看看


 

Command (m for help): n

Command action

  l   logical (5 or over)     <==因为已有 extended ,所以出现 logical分区槽

  p   primary partition (1-4)

p  <==偷偷玩一下,能否新增主要分区槽

Partition number (1-4): 2

No free sectors available   <==肯定不行!因为没有多余的磁柱可供配置

 

Command (m for help): n

Command action

  l   logical (5 or over)

  p   primary partition (1-4)

l  <==乖乖使用逻辑分区槽吧!

First cylinder (64-5005, default 64):<=[enter]

Using default value 64

Last cylinder or +size or +sizeM or +sizeK(64-5005, default 5005): +2048M

 

Command (m for help): p

 

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1              64        5005   39696615    5  Extended

/dev/hdc4               1          63      506016  83  Linux

/dev/hdc5              64         313    2008093+  83  Linux

# 这样就新增了 2GB 的分区槽,且由于是logical ,所以由 5 号开始!

Command (m for help): q

# 鸟哥这里仅是做一个练习而已,所以,按下 q就能够离开啰~

 

一般来说创建分区槽的形式会有底下的数种状况:

 

1-4 号尚有剩余,且系统未有 extended:

此时会出现让你挑选 Primary / Extended 的项目,且你可以指定1~4 号间的号码;

1-4 号尚有剩余,且系统有 extended:

此时会出现让你挑选 Primary / Logical 的项目;若选择 p 则你还需要指定 1~4 号间的号码;若选择 l(L的小写) 则不需要配置号码,因为系统会自动指定逻辑分区槽的文件名号码;

1-4 没有剩余,且系统有 extended:

此时不会让你挑选分区槽类型,直接会进入 logical 的分区槽形式。

 

查看分区表信息

 

Command (m for help): p  <== 这里可以输出目前磁盘的状态

 

Disk /dev/hdc: 41.1 GB, 41174138880bytes        <==这个磁盘的文件名与容量

255 heads, 63 sectors/track, 5005cylinders      <==磁头、扇区与磁柱大小

Units = cylinders of 16065 * 512 = 8225280bytes <==每个磁柱的大小

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1  *           1          13      104391  83  Linux

/dev/hdc2              14        1288   10241437+  83  Linux

/dev/hdc3            1289        1925    5116702+  83  Linux

/dev/hdc4            1926        5005   24740100    5  Extended

/dev/hdc5            1926        2052    1020096   82  Linux swap / Solaris

# 装置文件名 启动区否 开始磁柱    结束磁柱  1K大小容量 磁盘分区槽内的系统

 

Command (m for help): q

# 想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!

 

 

使用『 p 』可以列出目前这颗磁盘的分区表信息,这个信息的上半部在显示整体磁盘的状态。以鸟哥这颗磁盘为例,这个磁盘共有 41.1GB 左右的容量,共有 5005 个磁柱,每个磁柱透过 255 个磁头在管理读写,每个磁头管理 63 个扇区,而每个扇区的大小均为 512bytes ,因此每个磁柱为『 255*63*512 = 16065*512 = 8225280bytes 』。

 

下半部的分区表信息主要在列出每个分区槽的个别信息项目。每个项目的意义为:

 

Device:装置文件名,依据不同的磁盘接口/分区槽位置而变。

Boot:是否为启动引导块?通常 Windows 系统的 C 需要这块!

Start, End:这个分区槽在哪个磁柱号码之间,可以决定此分区槽的大小;

Blocks:就是以 1K 为单位的容量。如上所示,/dev/hdc1大小为104391K = 102MB

ID, System:代表这个分区槽内的文件系统应该是啥!不过这个项目只是一个提示而已, 不见得真的代表此分区槽内的文件系统喔!

从上表我们可以发现几件事情:

 

整部磁盘还可以进行额外的分区,因为最大磁柱为 5005 ,但只使用到 2052 号而已;

/dev/hdc5 是由 /dev/hdc4 分区出来的,因为/dev/hdc4 为 Extended,且 /dev/hdc5 磁柱号码在 /dev/hdc4 之内;

 

查询系统内的所有 partition

 

[root@www ~]# fdisk -l

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1  *           1          13      104391  83  Linux

/dev/hdc2              14        1288   10241437+  83  Linux

/dev/hdc3            1289        1925    5116702+  83  Linux

/dev/hdc4            1926        5005   24740100    5  Extended

/dev/hdc5            1926        2052    1020096   82  Linux swap / Solaris

 

Disk /dev/sda: 8313 MB, 8313110528 bytes

59 heads, 58 sectors/track, 4744 cylinders

Units = cylinders of 3422 * 512 = 1752064bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sda1               1        4745    8118260    b  W95 FAT32

 

由上表的信息我们可以看到我有两颗磁盘,磁盘文件名为『/dev/hdc 与 /dev/sda』,/dev/hdc 已经在上面谈过了,至于 /dev/sda 则有 8GB 左右的容量,且全部的磁柱都已经分区给 /dev/sda1 ,该文件系统应该为 Windows 的 FAT 文件系统。这样很容易查阅到分区方面的信息吧!

 

这个 fdisk 只有 root 才能运行,此外,请注意,使用的『装置文件名』请不要加上数字,因为 partition 是针对『整个硬盘装置』而不是某个 partition 呢!所以运行『 fdisk /dev/hdc1 』就会发生错误啦!要使用 fdisk /dev/hdc 才对!

 

 

删除磁盘分区

 

删除磁盘分区,应该怎么做?

 

fdisk /dev/hdc :先进入 fdisk 画面;

p :先看一下分区槽的信息,假设要杀掉/dev/hdc1;

d :这个时候会要你选择一个partition ,就选 1 啰!

w (or) q :按 w 可储存到磁盘数据表中,并离开 fdisk ;当然啰,如果你反悔了,呵呵,直接按下 q 就可以取消刚刚的删除动作了!

 

# 练习一: 先进入 fdisk 的画面当中去!

[root@www ~]# fdisk /dev/hdc

 

# 练习二: 先看看整个分区表的情况是如何

Command (m for help): p

 

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1  *           1          13      104391  83  Linux

/dev/hdc2              14        1288   10241437+  83  Linux

/dev/hdc3            1289        1925    5116702+  83  Linux

/dev/hdc4            1926        5005   24740100    5  Extended

/dev/hdc5            1926        2052    1020096   82  Linux swap / Solaris

 

# 练习三: 按下 d 给他删除吧!

Command (m for help): d

Partition number (1-5): 4

 

Command (m for help): d

Partition number (1-4): 3

 

Command (m for help): p

 

Disk /dev/hdc: 41.1 GB, 41174138880 bytes

255 heads, 63 sectors/track, 5005 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/hdc1  *           1          13      104391  83  Linux

/dev/hdc2              14        1288   10241437+  83  Linux

# 因为 /dev/hdc5 是由 /dev/hdc4 所衍生出来的逻辑分区槽,因此 /dev/hdc4 被删除,

# /dev/hdc5 就自动不见了!最终就会剩下两个分区槽而已喔!

 

Command (m for help): q

# 鸟哥这里仅是做一个练习而已,所以,按下 q就能够离开啰~

 

 

磁盘格式化

分区完毕后自然就是要进行文件系统的格式化啰!格式化的命令非常的简单,那就是『make filesystem, mkfs』这个命令啦!这个命令其实是个综合的命令,他会去呼叫正确的文件系统格式化工具软件!不啰唆,让我们来瞧瞧吧!

 

 

 

mkfs

 

[root@www ~]# mkfs [-t 文件系统格式] 装置文件名

选项与参数:

-t  :可以接文件系统格式,例如ext3, ext2, vfat 等(系统有支持才会生效)

 

范例一:请将上个小节当中所制作出来的 /dev/hdc6 格式化为 ext3 文件系统

[root@www ~]# mkfs -t ext3 /dev/hdc6

mke2fs 1.39 (29-May-2006)

Filesystem label=                <==这里指的是分区槽的名称(label)

OS type: Linux

Block size=4096 (log=2)          <==block 的大小配置为 4K

Fragment size=4096 (log=2)

251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量

25101 blocks (5.00%) reserved for the superuser

First data block=0

Maximum filesystem blocks=515899392

16 block groups

32768 blocks per group, 32768 fragments pergroup

15712 inodes per group

Superblock backups stored on blocks:

       32768, 98304, 163840, 229376, 294912

 

Writing inode tables: done

Creating journal (8192 blocks): done <==有日志记录

Writing superblocks and filesystemaccounting information: done

 

This filesystem will be automaticallychecked every 34 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

# 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!

 

[root@www ~]# mkfs[tab][tab]

mkfs        mkfs.cramfs  mkfs.ext2    mkfs.ext3   mkfs.msdos   mkfs.vfat

# 按下两个[tab],会发现 mkfs 支持的文件格式如上所示!可以格式化 vfat 喔!

 

 

mkfs 其实是个综合命令而已,事实上如同上表所示,当我们使用『 mkfs -t ext3 ...』时,系统会去呼叫 mkfs.ext3 这个命令来进行格式化的动作啦!若如同上表所展现的结果,那么鸟哥这个系统支持的文件系统格式化工具有『cramfs, ext2, ext3, msdoc, vfat』等, 而最常用的应该是 ext3, vfat 两种啦! vfat 可以用在Windows/Linux 共享的 U盘闪盘啰。

 

例题:

将刚刚的 /dev/hdc6 格式化为 Windows 可读的 vfat 格式吧!

答:

mkfs -t vfat /dev/hdc6

在格式化为 Ext3 的范例中,我们可以发现结果里面含有非常多的信息,由于我们没有详细指定文件系统的细部项目,因此系统会使用默认值来进行格式化。其中比较重要的部分为:文件系统的标头(Label)、Block的大小以及 inode 的数量。如果你要指定这些东西,就得要了解一下 Ext2/Ext3 的公用程序,亦即 mke2fs 这个命令啰!

 

mke2fs

 

[root@www ~]# mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置

选项与参数:

-b  :可以配置每个 block的大小,目前支持 1024, 2048, 4096 bytes 三种;

-i  :多少容量给予一个inode 呢?

-c  :检查磁盘错误,仅下达一次-c 时,会进行快速读取测试;

     如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~

-L  :后面可以接标头名称(Label),这个 label 是有用的喔!e2label命令介绍会谈到~

-j  :本来 mke2fs 是 EXT2 ,加上 -j 后,会主动加入 journal而成为 EXT3。

 

 

mke2fs 是一个很详细但是很麻烦的命令!因为里面的细部配置太多了!现在我们进行如下的假设:

 

这个文件系统的标头配置为:vbird_logical

我的 block 指定为 2048 大小;

每 8192 bytes 分配一个 inode ;

建置为 journal 的 Ext3 文件系统。

 

开始格式化 /dev/hdc6
结果会变成如下所示:


 

[root@www ~]# mke2fs -j -L"vbird_logical" -b 2048 -i 8192 /dev/hdc6

mke2fs 1.39 (29-May-2006)

Filesystem label=vbird_logical

OS type: Linux

Block size=2048 (log=1)

Fragment size=2048 (log=1)

251968 inodes, 1004046 blocks

50202 blocks (5.00%) reserved for the superuser

First data block=0

Maximum filesystem blocks=537919488

62 block groups

16384 blocks per group, 16384 fragments pergroup

4064 inodes per group

Superblock backups stored on blocks:

       16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

 

Writing inode tables: done

Creating journal (16384 blocks): done

Writing superblocks and filesystemaccounting information: done

# 比较看看,跟上面的范例用默认值的结果,有什么不一样的啊?

 

 

其实 mke2fs 所使用的各项选项/参数也可以用在『 mkfs -t ext3 ... 』后面,因为最终使用的公用程序是相同的啦!特别要注意的是 -b, -i 及 -j 这几个选项,尤其是 -j 这个选项,当没有指定 -j 的时候, mke2fs 使用 ext2 为格式化文件格式,若加入 -j 时,则格式化为 ext3 这个 Journaling 的 filesystem 呦!

 

老实说,如果没有特殊需求的话,使用『 mkfs -t ext3....』不但容易记忆,而且就非常好用啰!

 

磁盘挂载与卸载

mount

挂载点目录是进入磁盘分区槽(其实是文件系统啦!)的入口就是了。不过要进行挂载前,你最好先确定几件事:

 

单一文件系统不应该被重复挂载在不同的挂载点(目录)中;

单一目录不应该重复挂载多个文件系统;

要作为挂载点的目录,理论上应该都是空目录才是。

尤其是上述的后两点!如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时的消失。举个例子来说,假设你的 /home 原本与根目录 (/) 在同一个文件系统中,底下原本就有 /home/test 与 /home/vbird 两个目录。然后你想要加入新的硬盘,并且直接挂载 /home 底下,那么当你挂载上新的分区槽时,则 /home 目录显示的是新分区槽内的数据,至于原先的 test 与 vbird 这两个目录就会暂时的被隐藏掉了!注意喔!并不是被覆盖掉,而是暂时的隐藏了起来,等到新分区槽被卸除之后,则
/home 原本的内容就会再次的跑出来啦!

 

而要将文件系统挂载到我们的 Linux 系统上,就要使用 mount 这个命令啦!不过,这个命令真的是博大精深~粉难啦!我们学简单一点啊~ ^_^

 

[root@www ~]# mount -a

[root@www ~]# mount [-l]

[root@www ~]# mount [-t 文件系统] [-LLabel名] [-o 额外选项] \

 [-n]  装置文件名  挂载点

选项与参数:

-a  :依照配置文件/etc/fstab 的数据将所有未挂载的磁盘都挂载上来

-l  :单纯的输入 mount 会显示目前挂载的信息。加上-l 可增列 Label 名称!

-t  :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。

     常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式),

     nfs, cifs, smbfs(此三种为网络文件系统类型)

-n  :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序

     的运行。但在某些情况下(例如单人维护模式)为了避免问题,会刻意不写入。

     此时就得要使用这个 -n 的选项了。

-L  :系统除了利用装置文件名(例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称

     (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧!

-o  :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:

     ro, rw:       挂载文件系统成为只读(ro)或可擦写(rw)

     async, sync:  此文件系统是否使用同步写入(sync) 或异步 (async) 的

                    内存机制,请参考文件系统运行方式。默认为 async。

     auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto)

     dev, nodev:   是否允许此partition 上,可创建装置文件? dev 为可允许

     suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式?

     exec, noexec: 是否允许此 partition 上拥有可运行 binary 文件?

     user, nouser: 是否允许此 partition 让任何使用者运行 mount ?一般来说,

                    mount 仅有 root 可以进行,但下达 user参数,则可让

                    一般 user 也能够对此partition 进行 mount 。

     defaults:     默认值为:rw,suid, dev, exec, auto, nouser, and async

     remount:      重新挂载,这在系统出错,或重新升级参数时,很有用!

 

 

用默认的方式,将刚刚创建的 /dev/hdc6
挂载到 /mnt/hdc6
上面!


 

[root@www ~]# mkdir /mnt/hdc6

[root@www ~]# mount /dev/hdc6 /mnt/hdc6

[root@www ~]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

.....中间省略.....

/dev/hdc6              1976312     42072  1833836   3% /mnt/hdc6

# 看起来,真的有挂载!且文件大小约为 2GB左右啦!

 

 

利用『mount 装置文件名挂载点』就能够顺利的挂载了!真是方便啊!为什么可以这么方便呢(甚至不需要使用 -t 这个选项)?由于文件系统几乎都有 superblock ,我们的 Linux 可以透过分析 superblock 搭配 Linux 自己的驱动程序去测试挂载,如果成功的套和了,就立刻自动的使用该类型的文件系统挂载起来啊!那么系统有没有指定哪些类型的 filesystem 才需要进行上述的挂载测试呢?主要是参考底下这两个文件:

 

/etc/filesystems:系统指定的测试挂载文件系统类型;

/proc/filesystems:Linux系统已经加载的文件系统类型。

那我怎么知道我的 Linux 有没有相关文件系统类型的驱动程序呢?我们 Linux 支持的文件系统之驱动程序都写在如下的目录中:

 

/lib/modules/$(uname -r)/kernel/fs/

例如 vfat 的驱动程序就写在『/lib/modules/$(uname -r)/kernel/fs/vfat/』这个目录下啦! 简单的测试挂载后,接下来让我们检查看看目前已挂载的文件系统状况吧!

 

 

观察目前『已挂载』的文件系统,包含各文件系统的Label名称

 

[root@www ~]# mount -l

/dev/hdc2 on / type ext3 (rw) [/1]

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts(rw,gid=5,mode=620)

/dev/hdc3 on /home type ext3 (rw) [/home]

/dev/hdc1 on /boot type ext3 (rw) [/boot]

tmpfs on /dev/shm type tmpfs (rw)

none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs typerpc_pipefs (rw)

/dev/hdc6 on /mnt/hdc6 type ext3 (rw)[vbird_logical]

# 除了实际的文件系统外,很多特殊的文件系统(proc/sysfs...)也会被显示出来!

# 值得注意的是,加上 -l 选项可以列出如上特殊字体的标头(label)喔

 

 

这个命令输出的结果可以让我们看到非常多信息,以 /dev/hdc2 这个装置来说好了(上面表格的第一行),他的意义是:

 

  『/dev/hdc2 是挂载到 / 目录,文件系统类型为ext3 ,且挂载为可擦写 (rw) ,另外,这个 filesystem 有标头,名字(label)为 /1 』

 

挂载 CD 或 DVD
光盘


 

范例三:将你用来安装 Linux 的 CentOS 原版光盘拿出来挂载!

[root@www ~]# mkdir /media/cdrom

[root@www ~]# mount -t iso9660 /dev/cdrom/media/cdrom

[root@www ~]# mount /dev/cdrom /media/cdrom

# 你可以指定 -t iso9660 这个光盘片的格式来挂载,也可以让系统自己去测试挂载!

# 所以上述的命令只要做一个就够了!但是目录的创建初次挂载时必须要进行喔!

 

[root@www ~]# df

Filesystem           1K-blocks     Used Available Use% Mounted on

.....中间省略.....

/dev/hdd               4493152   4493152         0 100% /media/cdrom

# 因为我的光驱使用的是 /dev/hdd 的 IDE 接口之故!

 

 

光驱一挂载之后就无法退出光盘片了!除非你将他卸除才能够退出!从上面的数据你也可以发现,因为是光盘嘛!所以磁盘使用率达到 100% ,因为你无法直接写入任何数据到光盘当中!另外,其实 /dev/cdrom 是个链接文件,正确的磁盘文件名得要看你的光驱是什么连接接口的环境。以鸟哥为例,我的光驱接在 /dev/hdd,所以正确的挂载应该是『mount /dev/hdd /media/cdrom』比较正确喔!

 

 

重新挂载根目录

 

整个目录树最重要的地方就是根目录了,所以根目录根本就不能够被卸除的!问题是,如果你的挂载参数要改变,或者是根目录出现『只读』状态时,如何重新挂载呢?最可能的处理方式就是重新启动 (reboot)!不过你也可以这样做:

 

范例六:将 / 重新挂载,并加入参数为 rw 与 auto

[root@www ~]# mount -o remount,rw,auto /

重点是那个『 -o remount,xx 』的选项与参数!请注意,要重新挂载 (remount) 时,这是个非常重要的机制!尤其是当你进入单人维护模式时,你的根目录常会被系统挂载为只读,这个时候这个命令就太重要了!

 

 

挂载不特定目录

 

另外,我们也可以利用 mount 来将某个目录挂载到另外一个目录去喔!这并不是挂载文件系统,而是额外挂载某个目录的方法!虽然底下的方法也可以使用 symbolic link 来连结,不过在某些不支持符号链接的程序运行中,还是得要透过这样的方法才行。

 

 

将 /home
这个目录暂时挂载到 /mnt/home
底下


 

[root@www ~]# mkdir /mnt/home

[root@www ~]# mount --bind /home /mnt/home

[root@www ~]# ls -lid /home/ /mnt/home

2 drwxr-xr-x 6 root root 4096 Sep 29 02:21/home/

2 drwxr-xr-x 6 root root 4096 Sep 29 02:21/mnt/home

 

[root@www ~]# mount -l

/home on /mnt/home type none (rw,bind)

 

看起来,其实两者连结到同一个 inode 嘛!透过这个 mount --bind 的功能,您可以将某个目录挂载到其他目录去喔!而并不是整块 filesystem 的啦!所以从此进入 /mnt/home 就是进入 /home 的意思喔!

 

 

使用 Label name 进行挂载的方法

 

除了磁盘的装置文件名之外,其实我们可以使用文件系统的标头(label)名称来挂载喔!举例来说,我们刚刚卸除的 /dev/hdc6 标头名称是『vbird_logical』,你也可以使用 dumpe2fs 这个命令来查询一下啦!然后就这样做即可:

 

范例九:找出 /dev/hdc6 的 label name,并用 label 挂载到 /mnt/hdc6

[root@www ~]# dumpe2fs -h /dev/hdc6

Filesystem volume name:   vbird_logical

.....底下省略.....

# 找到啦!标头名称为vbird_logical 啰!

 

[root@www ~]# mount -L"vbird_logical" /mnt/hdc6

 

umount

[root@www ~]# umount [-fn] 装置文件名或挂载点

选项与参数:

-f :强制卸除!可用在类似网络文件系统(NFS) 无法读取到的情况下;

-n :不升级 /etc/mtab 情况下卸除。

就是直接将已挂载的文件系统给他卸除即是!卸除之后,可以使用 df 或 mount -l 看看是否还存在目录树中?卸除的方式,可以下达装置文件名或挂载点,均可接受啦!底下的范例做看看吧!

 

范例八:将本章之前自行挂载的文件系统全部卸除:

[root@www ~]# mount

.....前面省略.....

/dev/hdc6 on /mnt/hdc6 type ext3 (rw)

/dev/hdd on /media/cdrom type iso9660 (rw)

/dev/sda1 on /mnt/flash type vfat(rw,iocharset=cp950)

/home on /mnt/home type none (rw,bind)

# 先找一下已经挂载的文件系统,如上所示,特殊字体即为刚刚挂载的装置啰!

 

[root@www ~]# umount /dev/hdc6      <==用装置文件名来卸除

[root@www ~]# umount /media/cdrom   <==用挂载点来卸除

[root@www ~]# umount /mnt/flash     <==因为挂载点比较好记忆!

[root@www ~]# umount /dev/fd0       <==用装置文件名较好记!

[root@www ~]# umount /mnt/home      <==一定要用挂载点!因为挂载的是目录

 

由于通通卸除了,此时你才可以退出光盘片、软盘片、U盘闪盘等设备喔!如果你遇到这样的情况:

 

[root@www ~]# mount /dev/cdrom /media/cdrom

[root@www ~]# cd /media/cdrom

[root@www cdrom]# umount /media/cdrom

umount: /media/cdrom: device is busy

umount: /media/cdrom: device is busy

 

由于你目前正在 /media/cdrom/ 的目录内,也就是说其实『你正在使用该文件系统』的意思!所以自然无法卸除这个装置!那该如何是好?就『离开该文件系统的挂载点』即可。以上述的案例来说,你可以使用『 cd / 』回到根目录,就能够卸除 /media/cdrom 。

文章来源
http://www.cnblogs.com/ggjucheng/archive/2012/09/02/2667234.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: