Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78996
  • 博文数量: 25
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 366
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 17:36
文章分类

全部博文(25)

文章存档

2010年(1)

2009年(5)

2008年(19)

我的朋友

分类:

2008-09-09 17:46:36

常用的硬盘与硬件管理命令
硬盘
物理组成:硬盘由多个硬盘盘片组成,每个磁盘盘片上都有一个磁头(Head)进行该硬盘盘片的读写工作,当磁头固定不动,硬盘盘片旋转一周所走轨迹就是磁道(Track),所有硬盘盘片上同一段磁道组成了磁柱(Cylinder),一段磁道就是硬盘分区时的最小单位,即扇区(Sector),最小的硬盘存储物理量,通常为512 bytes.
 
文件系统(Filesystem)
主引导扇区(Master Boot Recoder.MBR)主引导扇区可以说是一块硬盘中最重要的地方,因为它记录了所有硬盘的分割信息,以及启动时可进行启动管理程序的写入等.MBR最大的限制在于它不够大,不足以存储所有的信息,仅能提供最多4个分区的记忆,因此,一块硬盘的主分区(P)与逻辑分区(E)数量之和最多只能有4个,并且扩展分区最多只能有一个.
块(Block):文件在磁盘中会被存储在一人固定大小的块中,即Block,Block的大小通常为2的次方,另外,由于磁盘的扇区物理量通常为0.5K(512Bytes),所以Block通常设为0.5K的整倍数,EXT2预设Block为4K.不过需要注意的是,一个Block最多仅能容纳一个文件,所以当一个不足4K的文件存储时,其剩余的空间将不会再被使用.Block的大小与inode有一定的关联,若Block规划得太小,则磁盘的Block数量会大增,造成inode在指向Block时搜索时间大大增加,又会造成大文件读写效率低下.另外需要注意的是,当系统读取某一个文件时,则该文件所处Block信息会被加载以内存中,所以该磁盘块会被放置的高速缓存区中.若这些块数据被改变,刚开始只有主存储器的块数据会被改变,且缓存区中的块数据会被标记为Dirty,而此时磁盘物理Block尚未被修正,所以,这些"Dirty"块的数据必须写到磁盘中,以保证磁盘物理Block上的数据与主存储器中的块数据的一致性.这也正是Linux系统非正常关机,或者突发性地跳电时,总是会造成系统耗费大量时间用于磁盘检验的原因.
superblock:进行分区时,每个磁盘分区就是一个文件系统(filesystem),而每个文件系统起始位置的Block就称为superblock.superblock的作用是存储诸如文件系统的大小,空Block和填满的Block,以及各自总数和其他诸如此类的信息,也就是说,当要使用这个磁盘分区(或者说文件系统)进行数据存取的时候,第一个要经过的就是superblock块,所以,superblock坏了,这个磁盘分区也就不能用了.
inode:就文件系统而言,一个inode是inode table中的一个项,inode包含了所有文件相关的信息,如名称,大小,连接的数量,数据建立日期,修改及存取时间等.它也包含了磁盘Block的文件指针(pointer),指针用来记录文件的存储位置.要规划inode,可以使用mke2fs工具.
 
 
查看硬盘或目录的容量的命令
df    查看硬盘的总容量,己用容量与inode等.
语法:   #df [-ikm]
-i:   使用i-nodes显示结果
-k:   使用KBytes显示结果
-m:   使用MBytes显示结果
 
 
du   查看文件己用容量
语法:   #du [-abckms] [folder_name & file_name]
-a:   列出所有的文件与目录,默认值是列出目录的值
-b:   列出的值以bytes输出
-c:   最后求总total
-k:   列出的值以KB输出
-m:   列出的值以MB输出
-s:   只列出最后求总的值
 
 
常用的磁盘管理命令
fdisk    硬盘分区工具
语法:    #fdisk [-l][device_name]
        -l:  直接列出该硬盘设备的分区
fdisk最主要的工作就是修改分区表,并没有实际地将硬盘切切割割.它会定义某一个分区是从n1磁柱到n2磁柱之间,因此,如果硬盘分区错误,只要在格式化之前将分区表复原,就可以将硬盘原来的数据恢复过来.
 
附加:一块硬盘最大的逻辑分区可以达到64个(总数,包含1-4的主分区),但是并非所有的Linux版本都会将所有的逻辑分区对应的磁盘代号都写入系统中,如Red Hat,它仅列出1-16个代号,其他的就得自己动手了.Mandrake则自动检测,当以fdisk设定好分区后,磁盘对应的磁盘代号则会自动在/dev/中设定.不过有时还是得自己庙宇磁盘代号,用mknod指令.
 
 
mknod   
语法:   #mknod [device][bcp][Major][Minor]
b:    设定节点为外部设备文档
c:    设定节点为接口设备,如键盘
p:    建立FIFO
 
 
mke2fs     Linux下重要的格式化工具
语法:    #mke2fs [-b block-size][-i inode-size]
        #mke2fs [-c]
        #mke2fs [-L]
        #mke2fs [-j]
说明:
-b:   设定每个数据块占用的大小,目前支持的大小有1024,2048和4096三种
-i:   设定inode值
-c:   检查磁盘错误,会比较慢
-L:   设定这个扇区的label(表头名称)
-j:   建立ext3这个具有日志管理功能的文件格式
 
 
e2label    修改硬盘的label(表头名称)的工具
语法:    #e2label [/dev/hd...][label_name]
example:  #e2label /dev/hda1 /   <==将/dev/hda1这个设备名设为"/"
 
fsck    检查硬盘有没有坏轨
语法:   #fsck [-Aar][device_name]
-A:   依据/etc/fstab的内容,将所有的设备都扫描一次(通常启动过程中就会执行此指令)
-a:   自动修复检查到的问题扇区,所以不用一直按Y.
-r:   一定要让用户决定是否需要修复,与-a相反.
注意:通常只有身为root且在系统有问题的时候才能使用这个命令,在正常情况下使用此指令可能会对文件造成危害.在fsck一个分区之前,一定要先umount这个分区.最好是在单人维护模式(runlevel1)下使用这个命令.
 
 
sync     将内存中的数据同步写入硬盘
语法:    #sync ; sync
在正常情况下,为了提高系统效率,很多时候运行程序产生的临时文件都不会直接存在硬盘中,而是存在内存中.内存的数据传递速度比硬盘快几十倍,所以这样有助于提高整个系统的效率.然而这也产生一个困扰,那就是当系统不正常关机时,可能会使一些己经改变但尚没存入硬盘的数据遗失(因为还在内存中),这时可以使用sync,它可以直接将系统暂存在内存中的数据回存写入硬盘中.
 

 
关于启动盘
mkbootdisk      制作启动软盘
语法:    #mkbootdisk --device /dev/fd0 `uname -r`
--device:   后面接设备,通常接的就是软盘/dev/fd0
 
 
fdformat     用来低级格式化软盘
语法:     #fdformat [device_name]
example:  #fdformat /dev/fd0H1440   <==表示格式化/dev/fd0,后面的H1440表示1.44MB的软盘容量.在低格式化之后,还要将软盘的文件格式化为Linux的ext2文件格式,这要使用mke2fs指令.
 
 
 
硬盘的装载
mount
语法:   #mount [-ahlV]
       #mount -t type /dev/hdxx /mountpoint
       #mount -o [options]
       #umount /mountpoint
-a:      依照/etc/fstab的内容装载所有相关的硬盘
-h:      只列出mount相关的参数,并不装载任何设备
-l:      列出当前己经装载的设备,文件系统名称与装载点
-V:      列出mount的版本信息
type:    将后面/dev/hdxx设备以type的文件格式装载到/mountpoint这个点,常见的type有下面几个:
     vfat,msdos:  是支持windows系统的文件格式,vfat较常用
     ext,ext2:    是Linux的主要文件格式
     iso9660:     光驱的文件格式
     nfs,ntfs,ufs: windows2000使用的NTFS格式
-o:     些参数后面接的项很多,如下:
     rw:     让装载的硬盘为可擦写
     suid:   允许该硬盘配置文件为SUID状态
     exec:   允许该硬盘执行二行制文件
     auto:   允许该硬盘使用mount -a参数设定
     nouser: 禁止他人(非root用户)使用装载功能,这是默认值
     async:  允许硬盘进行异步记录(内存与硬盘不同步,最常用)
     defaults:同时具有rw,suid,dev,exec,auto,nouser,async这些功能
     nosuid: 不允许该硬盘具有SUID文件属性
     ro:     设定为只读属性
     remount:让系统己经装载的硬盘重新被装载
 
 
 
umount
语法:  #umount [-f] [device|mount_point]
-f:  强制将该文件系统退出,最常用在无法退出的NTFS文件系统中.
注:在卸载一个目录的时候,一定要退出该目录.
 
 
hdparm    硬盘效能测试与启用
语法:     #hdparm [-cdmXTt] [device_name]
-c:    提供32位的存取模式,支持的形式有:
       -c0:关闭32位存以模式
       -c1:开启32位存取模式
       -c3:以较为物殊的sync模式开启32位存取模式(建议值)
-d:    是否启动硬盘的DMA模式,0为关闭,1为开启
-m:    设定multiple sector I/O模式,通常默认为16,建议值为16
-X:    设定IDE/ATA模式的项,支持如下设定:
       -X34:开启DMA mode 2  (ATA)
       -X66:开启ultra DMA mode 2 (ATA66)
-T:    测试缓存区cache的存取效能
-t:    测试硬盘的实际存取效能(较正确)
example:  #hdparm -Tt /dev/hda    <==测试hda的cache与实际效能
          #hdparm -d0 /dev/hda    <==关闭DMA模式
          #hdparm -d1 -c3 -X66    <==开启DMA模式为DMA 66,并开启32位存取模式
可以将开启磁盘DMA模式写入/etc/rc.d/rc.local中
 
 
 
 
文件系统的装载
装载软盘
#mount -t ext2 /dev/fd0 /mnt/floppy   <==Linux 格式
#mount -t vfat /dev/fd0 /mnt/floppy   <==Windows 格式
#umount /dev/fd0   <==将软驱卸载
 
装载光驱
#modprobe cdrom         <==加载cdrom模块
#modprobe ide-cd        <==加载模块
#mount -t iso9660 /dev/cdrom /mnt/cdrom    <==装载光驱
#umount /mnt/cdrom        <==卸载
 
装载Windows分区
#mount -t vfat /dev/hda1 /mnt/win98   <==装载windows分区,假设/dev/hda1是windows分区.
 
安装新硬盘的步骤:
1.首先以fdisk分好区(#fdisk /dev/hdb)
2.再以mke2fs格式化分区(#mke2fs /dev/hdb1)
3.建立一个挂载点(#mkdir /mnt/newhard)
4.装载新建的文件系统(#mount -t ext2 /dev/hdb1 /mnt/newhard)
 
 
设定启动实时装载方式(/etc/fstab)
系统装载的一些限制:
1.根目录"/"必须装载,而且一定先于其他装载点.
2.其他装载点必须为己建立的目录,可以任意指定,但一定要遵守必要的系统目录架构原则.
3.所有装载点在同一时间内只能装载一次
4.所有分区在同一时间内只能装载一次
5.若进行卸载,必须先将工作目录移到装载点(及其子目录)之外.
 
 
 
 
 
 
建立与装载虚拟内存文件
增加虚拟内存,有两个方法
.设定一个Swap分区
.建立一个虚拟内存的文件
 
一:建立虚拟内存分区(Swap分区)
1.fdisk /dev/hdxx    <==新建一个分区,分区ID设为82
2.mkswap /dev/hdxx   <==格式化swap分区
3.swapon /dev/hdxx   <==启动swap分区
4.swapoff /dev/hdxx  <==关闭swap分区
 
二:建立虚拟内存文件(Swap文件)
1.dd if=/dev/zero of=/tmp/swap bs=4k count=16382  <==dd指令用来转换文件并用于复制目的.if指的是要被转换的输入文件格式,of指的是输出文件,bs指的是一个分区点用多少KB,count指的是要用多少个bs,所以最后的容量为bs*count.
2.mkswap /tmp/swap   <==以mkswap将swapfile格式化为swap文件格式
3.free   <==print memory usage
4.swapon /tmp/swap   <==以swapon启动该文件,使之为swap
5.free   <==print memory usage
6.swapoff /tmp/swap  <==以swapoff关闭该文件.
 
阅读(542) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~