Linux学习笔记(七)

来源:互联网 发布:下载软件那个好 编辑:程序博客网 时间:2024/05/17 18:28

磁盘分区: 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  <==仔细看,不要加上数字喔! 

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

Command (m for help): 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 这支程序是完全不需要背指令的!如同上面的表格中,你只要按下 就能够看到所有的动作! 比较重要的动作在上面已经用底线画出来了,你可以参考看看。

 

删除磁盘分区槽

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

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

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

4.  w (or) q 按 w 可储存到磁盘数据表中,并离开 fdisk ; 

练习一: 先进入 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 = 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 

 

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

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 = 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 被删除。

新增磁盘分区槽 

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

练习一: 进入 fdisk 的分割软件画面中,并删除所有分割槽: 

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

Command (m for help): d 

Partition number (1-5): 4 

 

Command (m for help): d 

Partition number (1-4): 3 

 

Command (m for help): d 

Partition number (1-4): 2 

 

Command (m for help): d 

Selected partition 1 

由于最后仅剩下一个 partition ,因此系统主动选取这个 partition 删除去! 

 

练习二: 开始新增,我们先新增一个 Primary  的分割槽,并指定为 号看看! 

Command (m for help): n 

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

   e   extended 

   p   primary partition (1-4) 

p                         <==选择 Primary 分割槽 

Partition number (1-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 = 8225280 bytes 

 

   Device Boot      Start         End      Blocks   Id  System 

/dev/hdc4               1          63      506016   83  Linux 

注意!叧有 号! 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 = 8225280 bytes 

 

   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 = 8225280 bytes 

 

   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 ,所以由 号开始! 

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

·  1-4 号尚有剩余,且系统未有 extended: 此时会出现让你挑选 Primary / Extended 的项目,且你可以指定 1~4 号间的号码; 

·  1-4 号尚有剩余,且系统有 extended: 此时会出现让你挑选 Primary / Logical 项目;若选择 则你还需要指定 1~4 号间的号码; 若选择 l(L 的小写不需要指定号码,因为系统会自动指定逻辑分割槽的文件名号码; 

·  1-4 没有剩余,且系统有 extended: 此时不会让你挑选分割槽类型,直接会进入 logical 的分割槽形式。

 

磁盘格式化 

·  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 super user 

First data block=0 

Maximum filesystem blocks=515899392 

16 block groups 

32768 blocks per group, 32768 fragments per group 

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 filesystem accounting information: done 

 

This filesystem will be automatically checked 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 喔!

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 super user

First data block=0

Maximum filesystem blocks=537919488

62 block groups

16384 blocks per group, 16384 fragments per group

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 filesystem accounting information: done

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

其实 mke2fs 所使用的各项选项/参数也可以用在『 mkfs -t ext3 ... 』后面,因为最终使用的公用程序是相同的啦! 特别要注意的是 -b, -i 及 -j 这几个选项,尤其是 -j 这个选项,当没有指定 -j 的时候, mke2fs 使用 ext2 为格式化档案格式,若加入 -j 时,则格式化为 ext3 这个 Journaling 的 filesystem 呦!老实说,如果没有特殊需求的话,使用『 mkfs -t ext3....』不但容易记忆,而且就非常好用啰!

 

磁盘检验:fsckbadblocks

1fsck

[root@www ~]# fsck [-t 档案系统] [-ACay] 装置名称

选项与参数:

-t  :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定档案系统。不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨档案系统,因此通常可以不需要这个选项的啰!请看后续的范例说明。

-A  :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。/etc/fstab 于下一小节说明, 通常开机过程中就会执行此一指令了。

-a  :自动修复检查到的有问题的扇区,所以你不用一直按 啰!

-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 sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

vbird_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 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!另外, 如果你怀疑刚刚格式化成功的硬盘有问题的时后,也可以使用 fsck 来检查一硬盘呦!其实就有点像是 Windows 的 scandisk 啦!此外,由于 fsck 在扫瞄硬盘的时候,可能会造成部分 filesystem 的损坏,所以『执行 fsck 时, 被检查的 partition 务必不可挂载到系统上!亦即是需要在卸载的状态喔!』

 

2badblocks

[root@www ~]# badblocks -[svw] 装置名称

选项与参数:

-s  :在屏幕上列出进度

-v  :可以在屏幕上看到进度

-w  :使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有档案时!

[root@www ~]# badblocks -sv /dev/hdc6

Checking blocks 0 to 2008093

Checking for bad blocks (read-only test): done

Pass completed, 0 bad blocks found.

刚刚谈到的 fsck 是用来检验档案系统是否出错,至于 badblocks 则是用来检查硬盘或软盘扇区有没有坏轨的指令! 由于这个指令其实可以透过『 mke2fs -c 装置文件名 』在进行格式化的时候处理磁盘表面的读取测试, 因此目前大多不使用这个指令啰!