磁盘分区、格式化、挂载
磁盘分区
    新增分区
    查询分区
    删除分区
磁盘格式化
    mkfs
    mke2fs
磁盘挂载与卸载
    mount
    umount

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

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

  1. 对磁盘进行分区,以创建可用的 partition ;
  2. 对该 partition 进行格式化( format ),以创建系统可用的 filesystem;
  3. 在 Linux 系统上,需要创建挂载点 ( 亦即是目录 ),并将他挂载上来;

磁盘分区: fdisk

命令参数和帮助

  1. [root@www ~]# fdisk [-l] 装置名称
  2. 选项与参数:
  3. -l :输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时,
  4. 则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来。
  5.  
  6. 范例:找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
  7. [root@www ~]# df / <==注意:重点在找出磁盘文件名而已
  8. Filesystem 1K-blocks Used Available Use% Mounted on
  9. /dev/hdc2 9920624 3823168 5585388 41% /
  10.  
  11. [root@www ~]# fdisk /dev/hdc <==仔细看,不要加上数字喔!
  12. The number of cylinders for this disk is set to 5005.
  13. There is nothing wrong with that, but this is larger than 1024,
  14. and could in certain setups cause problems with:
  15. 1) software that runs at boot time (e.g., old versions of LILO)
  16. 2) booting and partitioning software from other OSs
  17. (e.g., DOS FDISK, OS/2 FDISK)
  18.  
  19. Command (m for help): <==等待你的输入!
  20. Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍
  21. Command action
  22. a toggle a bootable flag
  23. b edit bsd disklabel
  24. c toggle the dos compatibility flag
  25. d delete a partition <==删除一个partition
  26. l list known partition types
  27. m print this menu
  28. n add a new partition <==新增一个partition
  29. o create a new empty DOS partition table
  30. p print the partition table <==在屏幕上显示分区表
  31. q quit without saving changes <==不储存离开fdisk程序
  32. s create a new empty Sun disklabel
  33. t change a partition's system id
  34. u change display/entry units
  35. v verify the partition table
  36. w write table to disk and exit <==将刚刚的动作写入分区表
  37. x extra functionality (experts only)

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

 新增磁盘分区

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

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

  1. [root@www ~]# fdisk /dev/hdc
  2. Command (m for help): n
  3. Command action <==因为是全新磁盘,因此只会问extended/primary而已
  4. e extended
  5. p primary partition (1-4)
  6. p <==选择 Primary 分区槽
  7. Partition number (1-4): 4 <==配置为 4 号!
  8. First cylinder (1-5005, default 1): <==直接按下[enter]按键决定!
  9. Using default value 1 <==启始磁柱就选用默认值!
  10. Last cylinder or +size or +sizeM or +sizeK (1-5005, default 5005): +512M
  11. # 这个地方有趣了!我们知道 partition 是由 n1 到 n2 的磁柱号码 (cylinder),
  12. # 但磁柱的大小每颗磁盘都不相同,这个时候可以填入 +512M 来让系统自动帮我们找出
  13. # 『最接近 512M 的那个 cylinder 号码』!因为不可能刚好等于 512MBytes 啦!
  14. # 如上所示:这个地方输入的方式有两种:
  15. # 1) 直接输入磁柱的号码,你得要自己计算磁柱/分区槽的大小才行;
  16. # 2) 用 +XXM 来输入分区槽的大小,让系统自己捉磁柱的号码。
  17. # +与M是必须要有的,XX为数字
  18.  
  19. Command (m for help): p
  20.  
  21. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  22. 255 heads, 63 sectors/track, 5005 cylinders
  23. Units = cylinders of 16065 * 512 = 8225280 bytes
  24.  
  25. Device Boot Start End Blocks Id System
  26. /dev/hdc4 1 63 506016 83 Linux
  27. # 注意!只有 4 号! 1 ~ 3 保留下来了!

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

  1. Command (m for help): n
  2. Command action
  3. e extended
  4. p primary partition (1-4)
  5. e <==选择的是 Extended 喔!
  6. Partition number (1-4): 1
  7. First cylinder (64-5005, default 64): <=[enter]
  8. Using default value 64
  9. Last cylinder or +size or +sizeM or +sizeK (64-5005, default 5005): <=[enter]
  10. Using default value 5005
  11. # 还记得我们在第三章的磁盘分区表曾经谈到过的,扩展分配最好能够包含所有
  12. # 未分区的区间;所以在这个练习中,我们将所有未配置的磁柱都给了这个分区槽喔!
  13. # 所以在开始/结束磁柱的位置上,按下两个[enter]用默认值即可!
  14.  
  15. Command (m for help): p
  16.  
  17. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  18. 255 heads, 63 sectors/track, 5005 cylinders
  19. Units = cylinders of 16065 * 512 = 8225280 bytes
  20.  
  21. Device Boot Start End Blocks Id System
  22. /dev/hdc1 64 5005 39696615 5 Extended
  23. /dev/hdc4 1 63 506016 83 Linux
  24. # 如上所示,所有的磁柱都在 /dev/hdc1 里面啰!

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

  1. Command (m for help): n
  2. Command action
  3. l logical (5 or over) <==因为已有 extended ,所以出现 logical 分区槽
  4. p primary partition (1-4)
  5. p <==偷偷玩一下,能否新增主要分区槽
  6. Partition number (1-4): 2
  7. No free sectors available <==肯定不行!因为没有多余的磁柱可供配置
  8.  
  9. Command (m for help): n
  10. Command action
  11. l logical (5 or over)
  12. p primary partition (1-4)
  13. l <==乖乖使用逻辑分区槽吧!
  14. First cylinder (64-5005, default 64): <=[enter]
  15. Using default value 64
  16. Last cylinder or +size or +sizeM or +sizeK (64-5005, default 5005): +2048M
  17.  
  18. Command (m for help): p
  19.  
  20. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  21. 255 heads, 63 sectors/track, 5005 cylinders
  22. Units = cylinders of 16065 * 512 = 8225280 bytes
  23.  
  24. Device Boot Start End Blocks Id System
  25. /dev/hdc1 64 5005 39696615 5 Extended
  26. /dev/hdc4 1 63 506016 83 Linux
  27. /dev/hdc5 64 313 2008093+ 83 Linux
  28. # 这样就新增了 2GB 的分区槽,且由于是 logical ,所以由 5 号开始!
  29. Command (m for help): q
  30. # 鸟哥这里仅是做一个练习而已,所以,按下 q 就能够离开啰~

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

  • 1-4 号尚有剩余,且系统未有 extended:
  • 此时会出现让你挑选 Primary / Extended 的项目,且你可以指定 1~4 号间的号码;
  • 1-4 号尚有剩余,且系统有 extended:
  • 此时会出现让你挑选 Primary / Logical 的项目;若选择 p 则你还需要指定 1~4 号间的号码; 若选择 l(L的小写) 则不需要配置号码,因为系统会自动指定逻辑分区槽的文件名号码;
  • 1-4 没有剩余,且系统有 extended:
  • 此时不会让你挑选分区槽类型,直接会进入 logical 的分区槽形式。

查看分区表信息

  1. Command (m for help): p <== 这里可以输出目前磁盘的状态
  2.  
  3. Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==这个磁盘的文件名与容量
  4. 255 heads, 63 sectors/track, 5005 cylinders <==磁头、扇区与磁柱大小
  5. Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小
  6.  
  7. Device Boot Start End Blocks Id System
  8. /dev/hdc1 * 1 13 104391 83 Linux
  9. /dev/hdc2 14 1288 10241437+ 83 Linux
  10. /dev/hdc3 1289 1925 5116702+ 83 Linux
  11. /dev/hdc4 1926 5005 24740100 5 Extended
  12. /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris
  13. # 装置文件名 启动区否 开始磁柱 结束磁柱 1K大小容量 磁盘分区槽内的系统
  14.  
  15. Command (m for help): q
  16. # 想要不储存离开吗?按下 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

  1. [root@www ~]# fdisk -l
  2. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  3. 255 heads, 63 sectors/track, 5005 cylinders
  4. Units = cylinders of 16065 * 512 = 8225280 bytes
  5.  
  6. Device Boot Start End Blocks Id System
  7. /dev/hdc1 * 1 13 104391 83 Linux
  8. /dev/hdc2 14 1288 10241437+ 83 Linux
  9. /dev/hdc3 1289 1925 5116702+ 83 Linux
  10. /dev/hdc4 1926 5005 24740100 5 Extended
  11. /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris
  12.  
  13. Disk /dev/sda: 8313 MB, 8313110528 bytes
  14. 59 heads, 58 sectors/track, 4744 cylinders
  15. Units = cylinders of 3422 * 512 = 1752064 bytes
  16.  
  17. Device Boot Start End Blocks Id System
  18. /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 才对!

删除磁盘分区

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

  1. fdisk /dev/hdc :先进入 fdisk 画面;
  2. p :先看一下分区槽的信息,假设要杀掉 /dev/hdc1;
  3. d :这个时候会要你选择一个 partition ,就选 1 啰!
  4. w (or) q :按 w 可储存到磁盘数据表中,并离开 fdisk ;当然啰, 如果你反悔了,呵呵,直接按下 q 就可以取消刚刚的删除动作了!
  1. # 练习一: 先进入 fdisk 的画面当中去!
  2. [root@www ~]# fdisk /dev/hdc
  3.  
  4. # 练习二: 先看看整个分区表的情况是如何
  5. Command (m for help): p
  6.  
  7. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  8. 255 heads, 63 sectors/track, 5005 cylinders
  9. Units = cylinders of 16065 * 512 = 8225280 bytes
  10.  
  11. Device Boot Start End Blocks Id System
  12. /dev/hdc1 * 1 13 104391 83 Linux
  13. /dev/hdc2 14 1288 10241437+ 83 Linux
  14. /dev/hdc3 1289 1925 5116702+ 83 Linux
  15. /dev/hdc4 1926 5005 24740100 5 Extended
  16. /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris
  17.  
  18. # 练习三: 按下 d 给他删除吧!
  19. Command (m for help): d
  20. Partition number (1-5): 4
  21.  
  22. Command (m for help): d
  23. Partition number (1-4): 3
  24.  
  25. Command (m for help): p
  26.  
  27. Disk /dev/hdc: 41.1 GB, 41174138880 bytes
  28. 255 heads, 63 sectors/track, 5005 cylinders
  29. Units = cylinders of 16065 * 512 = 8225280 bytes
  30.  
  31. Device Boot Start End Blocks Id System
  32. /dev/hdc1 * 1 13 104391 83 Linux
  33. /dev/hdc2 14 1288 10241437+ 83 Linux
  34. # 因为 /dev/hdc5 是由 /dev/hdc4 所衍生出来的逻辑分区槽,因此 /dev/hdc4 被删除,
  35. # /dev/hdc5 就自动不见了!最终就会剩下两个分区槽而已喔!
  36.  
  37. Command (m for help): q
  38. # 鸟哥这里仅是做一个练习而已,所以,按下 q 就能够离开啰~

磁盘格式化

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

mkfs

  1. [root@www ~]# mkfs [-t 文件系统格式] 装置文件名
  2. 选项与参数:
  3. -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
  4.  
  5. 范例一:请将上个小节当中所制作出来的 /dev/hdc6 格式化为 ext3 文件系统
  6. [root@www ~]# mkfs -t ext3 /dev/hdc6
  7. mke2fs 1.39 (29-May-2006)
  8. Filesystem label= <==这里指的是分区槽的名称(label)
  9. OS type: Linux
  10. Block size=4096 (log=2) <==block 的大小配置为 4K
  11. Fragment size=4096 (log=2)
  12. 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量
  13. 25101 blocks (5.00%) reserved for the super user
  14. First data block=0
  15. Maximum filesystem blocks=515899392
  16. 16 block groups
  17. 32768 blocks per group, 32768 fragments per group
  18. 15712 inodes per group
  19. Superblock backups stored on blocks:
  20. 32768, 98304, 163840, 229376, 294912
  21.  
  22. Writing inode tables: done
  23. Creating journal (8192 blocks): done <==有日志记录
  24. Writing superblocks and filesystem accounting information: done
  25.  
  26. This filesystem will be automatically checked every 34 mounts or
  27. 180 days, whichever comes first. Use tune2fs -c or -i to override.
  28. # 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!
  29.  
  30. [root@www ~]# mkfs[tab][tab]
  31. mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat
  32. # 按下两个[tab],会发现 mkfs 支持的文件格式如上所示!可以格式化 vfat 喔!

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

  1. 例题:
  2. 将刚刚的 /dev/hdc6 格式化为 Windows 可读的 vfat 格式吧!
  3. 答:
  4. mkfs -t vfat /dev/hdc6

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

mke2fs

  1. [root@www ~]# mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置
  2. 选项与参数:
  3. -b :可以配置每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种;
  4. -i :多少容量给予一个 inode 呢?
  5. -c :检查磁盘错误,仅下达一次 -c 时,会进行快速读取测试;
  6. 如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~
  7. -L :后面可以接标头名称 (Label),这个 label 是有用的喔!e2label命令介绍会谈到~
  8. -j :本来 mke2fs EXT2 ,加上 -j 后,会主动加入 journal 而成为 EXT3

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

  • 这个文件系统的标头配置为:vbird_logical
  • 我的 block 指定为 2048 大小;
  • 每 8192 bytes 分配一个 inode ;
  • 建置为 journal 的 Ext3 文件系统。

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

  1. [root@www ~]# mke2fs -j -L "vbird_logical" -b 2048 -i 8192 /dev/hdc6
  2. mke2fs 1.39 (29-May-2006)
  3. Filesystem label=vbird_logical
  4. OS type: Linux
  5. Block size=2048 (log=1)
  6. Fragment size=2048 (log=1)
  7. 251968 inodes, 1004046 blocks
  8. 50202 blocks (5.00%) reserved for the super user
  9. First data block=0
  10. Maximum filesystem blocks=537919488
  11. 62 block groups
  12. 16384 blocks per group, 16384 fragments per group
  13. 4064 inodes per group
  14. Superblock backups stored on blocks:
  15. 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816
  16.  
  17. Writing inode tables: done
  18. Creating journal (16384 blocks): done
  19. Writing superblocks and filesystem accounting information: done
  20. # 比较看看,跟上面的范例用默认值的结果,有什么不一样的啊?

其实 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 这个命令啦! 不过,这个命令真的是博大精深~粉难啦!我们学简单一点啊~ ^_^

  1. [root@www ~]# mount -a
  2. [root@www ~]# mount [-l]
  3. [root@www ~]# mount [-t 文件系统] [-L Label名] [-o 额外选项] \
  4. [-n] 装置文件名 挂载点
  5. 选项与参数:
  6. -a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
  7. -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
  8. -t :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。
  9. 常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式),
  10. nfs, cifs, smbfs(此三种为网络文件系统类型)
  11. -n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序
  12. 的运行。但在某些情况下(例如单人维护模式)为了避免问题,会刻意不写入。
  13. 此时就得要使用这个 -n 的选项了。
  14. -L :系统除了利用装置文件名 (例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称
  15. (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧!
  16. -o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:
  17. ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)
  18. async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async)
  19. 内存机制,请参考文件系统运行方式。默认为 async
  20. auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto)
  21. dev, nodev: 是否允许此 partition 上,可创建装置文件? dev 为可允许
  22. suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式?
  23. exec, noexec: 是否允许此 partition 上拥有可运行 binary 文件?
  24. user, nouser: 是否允许此 partition 让任何使用者运行 mount ?一般来说,
  25. mount 仅有 root 可以进行,但下达 user 参数,则可让
  26. 一般 user 也能够对此 partition 进行 mount
  27. defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
  28. remount: 重新挂载,这在系统出错,或重新升级参数时,很有用!

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

  1. [root@www ~]# mkdir /mnt/hdc6
  2. [root@www ~]# mount /dev/hdc6 /mnt/hdc6
  3. [root@www ~]# df
  4. Filesystem 1K-blocks Used Available Use% Mounted on
  5. .....中间省略.....
  6. /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6
  7. # 看起来,真的有挂载!且文件大小约为 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名称

  1. [root@www ~]# mount -l
  2. /dev/hdc2 on / type ext3 (rw) [/1]
  3. proc on /proc type proc (rw)
  4. sysfs on /sys type sysfs (rw)
  5. devpts on /dev/pts type devpts (rw,gid=5,mode=620)
  6. /dev/hdc3 on /home type ext3 (rw) [/home]
  7. /dev/hdc1 on /boot type ext3 (rw) [/boot]
  8. tmpfs on /dev/shm type tmpfs (rw)
  9. none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
  10. sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
  11. /dev/hdc6 on /mnt/hdc6 type ext3 (rw) [vbird_logical]
  12. # 除了实际的文件系统外,很多特殊的文件系统(proc/sysfs...)也会被显示出来!
  13. # 值得注意的是,加上 -l 选项可以列出如上特殊字体的标头(label)喔

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

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

挂载 CD 或 DVD 光盘

  1. 范例三:将你用来安装 Linux CentOS 原版光盘拿出来挂载!
  2. [root@www ~]# mkdir /media/cdrom
  3. [root@www ~]# mount -t iso9660 /dev/cdrom /media/cdrom
  4. [root@www ~]# mount /dev/cdrom /media/cdrom
  5. # 你可以指定 -t iso9660 这个光盘片的格式来挂载,也可以让系统自己去测试挂载!
  6. # 所以上述的命令只要做一个就够了!但是目录的创建初次挂载时必须要进行喔!
  7.  
  8. [root@www ~]# df
  9. Filesystem 1K-blocks Used Available Use% Mounted on
  10. .....中间省略.....
  11. /dev/hdd 4493152 4493152 0 100% /media/cdrom
  12. # 因为我的光驱使用的是 /dev/hdd 的 IDE 接口之故!

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

重新挂载根目录

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

  1. 范例六:将 / 重新挂载,并加入参数为 rw auto
  2. [root@www ~]# mount -o remount,rw,auto /

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

挂载不特定目录

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

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

  1. [root@www ~]# mkdir /mnt/home
  2. [root@www ~]# mount --bind /home /mnt/home
  3. [root@www ~]# ls -lid /home/ /mnt/home
  4. 2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home/
  5. 2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /mnt/home
  6.  
  7. [root@www ~]# mount -l
  8. /home on /mnt/home type none (rw,bind)

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

使用 Label name 进行挂载的方法

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

  1. 范例九:找出 /dev/hdc6 label name,并用 label 挂载到 /mnt/hdc6
  2. [root@www ~]# dumpe2fs -h /dev/hdc6
  3. Filesystem volume name: vbird_logical
  4. .....底下省略.....
  5. # 找到啦!标头名称为 vbird_logical 啰!
  6.  
  7. [root@www ~]# mount -L "vbird_logical" /mnt/hdc6

umount 

  1. [root@www ~]# umount [-fn] 装置文件名或挂载点
  2. 选项与参数:
  3. -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  4. -n :不升级 /etc/mtab 情况下卸除。

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

  1. 范例八:将本章之前自行挂载的文件系统全部卸除:
  2. [root@www ~]# mount
  3. .....前面省略.....
  4. /dev/hdc6 on /mnt/hdc6 type ext3 (rw)
  5. /dev/hdd on /media/cdrom type iso9660 (rw)
  6. /dev/sda1 on /mnt/flash type vfat (rw,iocharset=cp950)
  7. /home on /mnt/home type none (rw,bind)
  8. # 先找一下已经挂载的文件系统,如上所示,特殊字体即为刚刚挂载的装置啰!
  9.  
  10. [root@www ~]# umount /dev/hdc6 <==用装置文件名来卸除
  11. [root@www ~]# umount /media/cdrom <==用挂载点来卸除
  12. [root@www ~]# umount /mnt/flash <==因为挂载点比较好记忆!
  13. [root@www ~]# umount /dev/fd0 <==用装置文件名较好记!
  14. [root@www ~]# umount /mnt/home <==一定要用挂载点!因为挂载的是目录

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

  1. [root@www ~]# mount /dev/cdrom /media/cdrom
  2. [root@www ~]# cd /media/cdrom
  3. [root@www cdrom]# umount /media/cdrom
  4. umount: /media/cdrom: device is busy
  5. umount: /media/cdrom: device is busy

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

转自http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_3.php

磁盘分区、格式化、挂载[转自vbird]的更多相关文章

  1. (转)centos7.4 fdisk磁盘分区 格式化 挂载

    centos7.4 fdisk磁盘分区 格式化 挂载 原文:http://blog.csdn.net/capecape/article/details/78499351 1.查看系统中有多少可以识别的 ...

  2. Linux系统添加硬盘设备(磁盘分区-格式化-挂载-使用)

    当全新安装了一块新的硬盘设备后,为了更充分.更安全的利用硬盘空间首先要进行磁盘的分区, 然后格式化,最后挂载使用. 实例:对新添加的硬盘设备进行分区.格式化并挂载到/newFS目录. 第一步:在vmw ...

  3. Linux磁盘分区/格式化/挂载(树莓派3挂载硬盘)

    [前言] 本文将要讲解的功能为Linux环境下对磁盘进行操作.包括分区.格式化.挂载外接移动存储设备等. 该文的写作背景为本人的树莓派需要外接一个固态硬盘作为存储设备,因此,便开始了一系列的折腾. [ ...

  4. Linux磁盘分区/格式化/挂载目录

    分区及挂载目录 以CentOS7.2为例,一般我们服务端应用部署前需要确认部署机的磁盘空间及挂载目录.操作如下: 如上图,如果操作系统是新装的,未挂盘的话需要先挂载盘.操作如下: fdisk -l # ...

  5. CentOS ext4 磁盘分区 格式化 挂载

    [root@appserver ~]# df -h /*查看现有分区情况*/文件系统 容量 已用 可用 已用%% 挂载点/dev/vda1 9.9G 8.2G 1.2G 88% /tmpfs 3.9G ...

  6. centos7.1磁盘分区 格式化 挂载

    1.fdisk -l 查看磁盘状态 2.将 /dev/sdb 分区 fdisk /dev/sdb 3.对分区进行格式化 mkfs -t ext3 /dev/sdb 4.挂载/dev/sdb 到/hom ...

  7. linux增加硬盘 磁盘分区格式化及挂载

    nux磁盘分区格式化及挂载 意义: 给linux 系统服务器扩容, 加一块硬盘 实验环境: virtualBox虚拟软件  + centos6.5 第一步: 添加硬件 硬盘 (我这里用virtualB ...

  8. Linux磁盘分区和挂载

    Linux磁盘分区和挂载 分区 分区的方式: mbr分区 最多支持4个主分区 系统只能安装到主分区上 扩展分区要占用一个主分区 MBR最大支持2TB,但拥有最好的兼容性 gtp分区 支持无线多个主分区 ...

  9. linux磁盘分区、挂载、查看

    实战: 34    查看本机所有磁盘                 fdisk -l 35    查看磁盘挂载情况                lsblk -f 36            39: ...

  10. Linux_磁盘分区、挂载、查看

    一.挂载 1.查看设备的挂载情况 lsblk或lsblk -f 2.挂载 需求 :给我们的Linux系统增加一个新的硬盘,并且挂载到/home/newdisk 说明:我们以增加一块硬盘为例来熟悉一下磁 ...

随机推荐

  1. 提示框alertmsg

    初始化: 1.Data属性:DOM添加属性data-toggle="alertmsg",并定义type及msg参数 示例代码: <button type="butt ...

  2. Deployment failed due to an error in FastDev assembly synchronization.

    在编译的时候发生Assembly synchronization error,显示信息为:Deployment failed due to an error in FastDev assembly s ...

  3. (转)iphone数据存储之-- Core Data的使用

    原文:http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html iphone数据存储之-- Core Data的使用(一)   一. ...

  4. BI--SDN上收集到的SAP BI的极好文章的链接

    1)Overviewhttps://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/60981d00-ca87-2910-fdb ...

  5. SQL2008:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

    错误: 解决方案: 1.查看服务是否开启,如果没有开启,请开启服务. 2.服务器名称栏:格式:主机名\实例名或者ip\实例名 如:10.10.4.81\SQLSERVER

  6. UIWebView stringByEvaluatingJavaScriptFromString的使用方法

    stringByEvaluatingJavaScriptFromString 使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载 ...

  7. LeetCode----Word Ladder 2

    Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...

  8. 神奇彩带KMP

    描述 有两条彩带A,B,如果能制作出一条彩带,这条彩带既是彩带A的前缀,又是彩带B的后缀,称之为神奇彩带 草滩小王子想送一条最长的神奇彩带给拉面女神 给你两条彩带,你能找到最大的神奇彩带的长度是多少吗 ...

  9. postfix 邮件备份方法

    postfix 邮件备份方法: postfix的bcc(密送)功能可以根据条件,将所有经过postfix队列的邮件根据规则密送到指定的邮箱. postfix带有三个bcc参数: ①.always_bc ...

  10. Android自定义View绘图实现拖影动画

    前几天在"Android绘图之渐隐动画"一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下.这次效果好多了. 先看效果吧: 然后我们 ...