root@www ~]# df [-ahikHTm] [目录或文件名]选项与参数:-a  :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k  :以 KBytes 的容量显示各文件系统;-m  :以 MBytes 的容量显示各文件系统;-h  :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H  :以 M=1000K 取代 M=1024K 的进位方式;-T  :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i  :不用硬盘容量,而以 inode 的数量来显示范例一:将系统内所有的 filesystem 列出来![root@www ~]# dfFilesystem      1K-blocks      Used Available Use% Mounted on/dev/hdc2         9920624   3823112   5585444  41% //dev/hdc3         4956316    141376   4559108   4% /home/dev/hdc1          101086     11126     84741  12% /boottmpfs              371332         0    371332   0% /dev/shm# 在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 # (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!# 至于那个 /dev/shm 是与内存有关的挂载,先不要理他!范例二:将容量结果以易读的容量格式显示出来[root@www ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/hdc2             9.5G  3.7G  5.4G  41% //dev/hdc3             4.8G  139M  4.4G   4% /home/dev/hdc1              99M   11M   83M  12% /boottmpfs                 363M     0  363M   0% /dev/shm# 不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看啦!范例三:将系统内的所有特殊文件格式及名称都列出来[root@www ~]# df -aTFilesystem    Type 1K-blocks    Used Available Use% Mounted on/dev/hdc2     ext3   9920624 3823112   5585444  41% /proc          proc         0       0         0   -  /procsysfs        sysfs         0       0         0   -  /sysdevpts      devpts         0       0         0   -  /dev/pts/dev/hdc3     ext3   4956316  141376   4559108   4% /home/dev/hdc1     ext3    101086   11126     84741  12% /boottmpfs        tmpfs    371332       0    371332   0% /dev/shmnone   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_miscsunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs# 系统里面其实还有很多特殊的文件系统存在的。那些比较特殊的文件系统几乎# 都是在内存当中,例如 /proc 这个挂载点。因此,这些特殊的文件系统# 都不会占据硬盘空间喔! ^_^范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示[root@www ~]# df -h /etcFilesystem            Size  Used Avail Use% Mounted on/dev/hdc2             9.5G  3.7G  5.4G  41% /# 这个范例比较有趣一点啦,在 df 后面加上目录或者是文件时, df# 会自动的分析该目录或文件所在的 partition ,并将该 partition 的容量显示出来,# 所以,您就可以知道某个目录底下还有多少容量可以使用了! ^_^范例五:将目前各个 partition 当中可用的 inode 数量列出[root@www ~]# df -ih Filesystem            Inodes   IUsed   IFree IUse% Mounted on/dev/hdc2               2.5M    147K    2.3M    6% //dev/hdc3               1.3M      46    1.3M    1% /home/dev/hdc1                26K      34     26K    1% /boottmpfs                    91K       1     91K    1% /dev/shm# 这个范例则主要列出可用的 inode 剩余量与总容量。分析一下与范例一的关系,# 你可以清楚的发现到,通常 inode 的数量剩余都比 block 还要多呢

磁盘分区 :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 is set to 5005.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): <==等待你的输入!

由于每个人环境都不一样,因此每部主机的磁盘数量也不想同。所以你可以先使用df这个命令来找出可用的磁盘文件名,然后在用fidisk来查阅。在你进入fdisk后,如果你的硬盘太大,就会出现上述信息,不过新版的不用考虑这个问题。

Command (m for help): m<== 输入 m 后,就会看到底下这些命令介绍Command action   a   toggle a bootable flag   b   edit bsd disklabel   c   toggle the dos compatibility flag   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 DOS partition table   p   print the partition table<==在屏幕上显示分割表q   quit without saving changes<==不储存离开fdisk程序   s   create a new empty Sun disklabel   t   change a partition's system id   u   change display/entry units   v   verify the partition table   w   write table to disk and exit<==将刚刚的动作写入分割表   x   extra functionality (experts only)

使用fdisk是完全不用被命令的 ,只要按下m就可看到所有的动作,q是不报村推出,w是保存,在没有把握前 最好先不要保存。

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 = 8225280 bytes <==每个磁柱的大小   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 啊!

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

  • 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 之内;

  • 删除磁盘分区槽

如果你是按照鸟哥建议的方式去安装你的 CentOS ,那么你的磁盘应该会预留一块容量来做练习的。实际练习新增硬盘之前,我们先来玩一玩恐怖的删除好了~如果想要测试一下如何将你的 /dev/hdc 全部的分割槽删除,应该怎么做?

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

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

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

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

# 练习一: 先进入 fdisk 的画面当中去![root@www ~]# fdisk /dev/hdc# 练习二: 先看看整个分割表的情况是如何Command (m for help): pDisk /dev/hdc: 41.1 GB, 41174138880 bytes255 heads, 63 sectors/track, 5005 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes   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): dPartition number (1-5): 4Command (m for help): dPartition number (1-4): 3Command (m for help): pDisk /dev/hdc: 41.1 GB, 41174138880 bytes255 heads, 63 sectors/track, 5005 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes   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
  • 练习新增磁盘分区槽

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

# 练习一: 进入 fdisk 的分割软件画面中,并删除所有分割槽:[root@www ~]# fdisk /dev/hdcCommand (m for help): dPartition number (1-5): 4Command (m for help): dPartition number (1-4): 3Command (m for help): dPartition number (1-4): 2Command (m for help): dSelected partition 1# 由于最后仅剩下一个 partition ,因此系统主动选取这个 partition 删除去!# 练习二: 开始新增,我们先新增一个 Primary  的分割槽,且指定为 4 号看看!Command (m for help): nCommand 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): pDisk /dev/hdc: 41.1 GB, 41174138880 bytes255 heads, 63 sectors/track, 5005 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes   Device Boot      Start         End      Blocks   Id  System/dev/hdc4               1          63      506016   83  Linux# 注意!只有 4 号! 1 ~ 3 保留下来了!

在以上练习中,最终写入分割表的后核心竟然无法捕捉到分跟表信息,此时可以使用reboot来处理或者也可以使用GNU推出的工具来处置,那就是partprobe这个命令。这个命令就是告知核心必须读取新的分割表而已,因此屏幕上并不会显示出任何信息才是,这样就不需要我们再进行重启了

操作环境的说明以root身份运行硬盘的partition时,最好是在单人维护模式下比较安全一些,,此外,再进行fdisk的时候,如果该硬盘某个partition还在使用时,那么很有可能核心会无法重载硬盘的 partition table ,解决的方法就是将该使用中的partition给他卸除,然后在重新进入fdisk一遍重新写入 partition table ,就可以成功!!!就在刚刚 因为这个问题我重装了一遍系统 ,硬盘还在使用中我就给重新分割 ,直接over!!!

磁盘格式化

分割完毕后自然make要进行文件的格式化,这个命令非常简单,(make filesystem ,mkfd)

这个命令其实是个综合的命令,他会去呼叫正确的文件系统格式化工具软件

  • mkfs

[root@www ~]# mkfs [-t 文件系统格式] 装置文件名选项与参数:-t  :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)范例一:请将上个小节当中所制作出来的 /dev/hdc6 格式化为 ext3 文件系统[root@www ~]# mkfs -t ext3 /dev/hdc6mke2fs 1.39 (29-May-2006)Filesystem label=<==这里指的是分割槽的名称(label)OS type: LinuxBlock size=4096 (log=2)<==block 的大小配置为 4K Fragment size=4096 (log=2)251392 inodes, 502023 blocks<==由此配置决定的inode/block数量25101 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=51589939216 block groups32768 blocks per group, 32768 fragments per group15712 inodes per groupSuperblock backups stored on blocks:        32768, 98304, 163840, 229376, 294912Writing inode tables: doneCreating journal (8192 blocks): done<==有日志记录Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 34 mounts or180 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 -t ext3 时,系统会去呼叫mkfs。ext3这个命令来进行格式化的动作。

另外还有mke2fs 这个命令 ,在这不多说 ,

磁盘检验 fsck badblocks

  • fsck

[root@www ~]# fsck [-t 文件系统] [-ACay] 装置名称选项与参数:-t  :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定文件系统。      不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨文件系统,      因此通常可以不需要这个选项的啰!请看后续的范例说明。-A  :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。/etc/fstab 于下一小节说明,      通常启动过程中就会运行此一命令了。-a  :自动修复检查到的有问题的扇区,所以你不用一直按 y 啰!-y  :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数!-C  :可以在检验的过程当中,使用一个直方图来显示目前的进度!EXT2/EXT3 的额外选项功能:(e2fsck 这支命令所提供)-f  :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入      细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!-D  :针对文件系统下的目录进行优化配置。范例一:强制的将前面我们创建的 /dev/hdc6 这个装置给他检验一下![root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006)e2fsck 1.39 (29-May-2006)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationvbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks# 如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,# 检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。范例二:系统有多少文件系统支持的 fsck 软件?[root@www ~]# fsck[tab][tab]fsck         fsck.cramfs  fsck.ext2    fsck.ext3    fsck.msdos   fsck.vfat这是用来检查与修正系统错误的命令。注意,通常只有身为root 且你的文件系统在合格有问题的时候才是用

这个命令,正常情况下使用这个命令会对系统造成危害,通常使用这个命令的场合都是在系统出现极大的问题,导致你在linux启动的时候进入单人单击模式下进行维护的行为,才必须使用这一命令。

另外,如果你怀疑刚刚格式化成功的硬盘有问题的时候,也可以使用fsckl来检测一下硬盘。此外,由于fsck在扫描硬盘的时候,可能会造成filesystem的损坏,所以运行fsck时,被检查的patition无比不可挂载到系统上,一定是在卸除的状态下。

  • badblocks

[root@www ~]# badblocks -[svw] 装置名称选项与参数:-s  :在屏幕上列出进度-v  :可以在屏幕上看到进度-w  :使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有文件时![root@www ~]# badblocks -sv /dev/hdc6Checking blocks 0 to 2008093Checking for bad blocks (read-only test): donePass completed, 0 bad blocks found.

刚刚说道的fask用来检查硬盘扇区有没有算换使用来检验文件系统是否出错至于badblocks硬盘扇区有没有坏轨的命令!目前大多不用这个命令

磁盘挂载与删除

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

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

要做为挂载点的目录,理论伤应该为空目录。

将文件系统挂载到linux'系统上,使用mount 这个命令

[root@www ~]# mount -a[root@www ~]# mount [-l][root@www ~]# mount [-t 文件系统] [-L Label名] [-o 额外选项] \ [-n]  装置文件名  挂载点选项与参数:-a  :依照配置文件  的数据将所有未挂载的磁盘都挂载上来-l  :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!-t  :与  的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。      常见的 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:      重新挂载,这在系统出错,或重新升级参数时,很有用!
会不会觉得光是看这个命令的细部选项就快要昏倒了?如果有兴趣的话看一下 man mount ,那才会真的昏倒的。事实上 mount 是个很万用的命令,他可以挂载 ext3/vfat/nfs 等文件系统,由于每种文件系统的数据并不相同,想当然尔,详细的参数与选项自然也就不相同啦!不过实际应用时却简单的会让你想笑呢!看看底下的几个简单范例先!
  • 挂载Ext2/Ext3文件系统

范例一:用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面![root@www ~]# mkdir /mnt/hdc6[root@www ~]# mount /dev/hdc6 /mnt/hdc6[root@www ~]# dfFilesystem           1K-blocks      Used Available Use% Mounted on.....中间省略...../dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6# 看起来,真的有挂载!且文件大小约为 2GB 左右啦!