linux

位置:IT落伍者 >> linux >> 浏览文章

Linux 磁盘与硬件管理


发布日期:2023年03月17日
 
Linux 磁盘与硬件管理

认识硬盘

让我们再来复习一下 硬盘 里面有什么东西值得我们来讨论的!

·物理组成

就物理组成来说硬盘是由多个硬盘盘所组成的而每一个硬盘盘上面都有个磁头( Head )在进行该硬盘盘上面的读写工作而当磁头固定不动硬盘盘转一圈所画出来的圆就是所谓的磁道( Track )全部硬盘盘上面同一个磁道组成了磁柱( Cylinder )这个磁柱也是磁盘分割( partition )时最小的单位了!另外由圆心向半径方向划直线而每个 Track 上面细分成一个一个的扇区( Sector )那就是最小的磁盘储存物理量了一个 Sector 通常为 Bytes 这就是整个硬盘的构造啰那么如果以硬盘的 filesystem 来做为检视呢?你可以简单的这样想啦一个 Partition 当中就具有一个 filesystem ( 档案系统 ) 啰!那么一个 partition 当中能不能具有两个 filesystem 呢?理论上应该是不行的!因为每个档案系统都有其独特的支持方式例如 Linux 的 ext 就无法被 Windows 系统所读取!而你将一个 partition 格式化的时候总不能格式化为 ext 也同时格式化为 fat 吧?!那是不可能的啊!底下来谈一谈关于档案系统的相关功能吧!

·Filesystem

在进行磁盘格式化或者是分割的时候都会需要知道磁盘的一些基本的名词定义主要有

o主要开机扇区( Master Boot Recorder MBR )主要开机扇区可以说是一颗硬盘里面最重要的地方了怎么说呢?因为他记录了所有硬盘的分割信息以及开机的时候可以进行开机管理程序的写入等等如果一颗硬盘的 MBR 死掉了那么这颗硬盘几乎就可以说是寿终正寝了~那么 MBR 有什么限制呢?他最大的限制来自于他的大小不够大到储存所有的信息因此他仅提供最多四个 partition 的记忆这就是所谓的 Primary (P)与 Extended (E)扇区最多相加只能有四个的原因了所以说如果你预计分割超过 个 partition 的话那么势必需要使用 P + E 并且将所有的剩余空间都拨给 Extended 才行( 记得呦! Extended 最多只能有一个 )否则只要 P + E 之后还有剩下的空间那么那些容量将成为废物而浪费了?所以结论就是『如果您要分割硬盘时并且已经预计规划使用掉 MBR 所提供的 个 partition ( P + E 或 P )那么磁盘的全部容量需要使用光否则剩下的容量也不能再被使用』不过如果您仅是分割出 P + E 的话那么剩下的空间就还能再分割两个 partition !

o区块( Block )档案在磁盘当中会被储存在一个固定的大小区块中那就是 Block 而 Block 的大小通常为 的次方其中由于磁盘的扇区物理量通常为 K ( Bytes )所以 Block 通常规划为 K 的倍数例如 EXT 预设 Block 为 K 即是一例!其中需要特别留意的地方是一个 Block 最多仅能容纳一个档案所以当一个档案不足 K 时例如大小仅为 K 那么剩下的 K 容量将会被浪费掉这与 inode 也有一定的相关性!因此在规划您的磁盘时需要留意到您主机的用途来进行规划较佳!与此同时若 Block 规划的太小则磁盘的 Block 数目会大增而造成 inode 在指向 block 时候的一些搜寻时间的增加又会造成大档案读写方面的效率较差这也与 inode 有一定程度的相关性呢!需要特别留意的是『当系统读取了某一个档案则该档案所在的区块资料会被加载到内存当中所以该磁盘区块就会被放置在主存储器的缓沖快取区中若这些区块的资料被改变时刚开始资料仅有主存储器的区块资料会被改变而且在缓沖区当中的区块资料会被标记为 Dirty 这个时候磁盘实体区块尚未被修正!所以亦即表示这些 Dirty 区块的数据必需写到磁盘当中以维持磁盘实体区块上的数据与主存储器中的区块资料的一致性』这也是为什么当 Linux 系统不正常关机或者是突发性的跳电时总是会造成系统在磁盘检验上面大花时间的原因了!

oSuperblock当我们在进行磁盘分割( partition )时每个磁盘分割槽( partition )就是一个档案系统( filesystem )而每个档案系统开始的位置的那个 block 就称为 superblock superblock的作用是储存像是档案系统的大小空的和填满的区块以及他各自的总数和其它诸如此类的信息等等这也就是说当您要使用这一个磁盘分割槽( 或者说是档案系统 )来进行资料存取的时候第一个要经过的就是 superblock 这个区块了所以啰 superblock 坏了您的这个磁盘槽大概也就回天乏术了!

oInode: 在 Linux 档案与目录管理 当中我们提到了很多的 inode 概念这里在加重补强一下说明对于档案系统而言一个inode是在inode tables 中的一个项目Inode包含了所有档案有关的信息例如名称大小连接的数量资料建立之日期修改及存取的时间它也包含了磁盘区块的档案指向(pointer)pointer是用来记录档案被储存在何处对于 inode 的规划方面我们可以使用 mkefs 来进行

大致上硬盘就有这些东西您还得了解每一个 filesystem 就是一个磁盘分割槽免得到时候底下讲的东西太混乱时造成您的困扰那就不好意思啦!

查看硬盘或目录的容量

好了!那么在文字接口底下有什么方法可以查看目前的磁盘最大容许容量已经使用掉的容量目前所在目录的已使用容量?还有还有怎么知道目前目录底下使用掉的硬盘容量呢?以及如何查询目前的 inodes 数目?呵呵!底下我们就来谈一谈主要的两个指令

df 查看以挂载磁盘的总容量使用容量与 inode 等等

du 查看档案使用掉的容量有多少?

·df

语法

[root @tsai /root ]# df [ikm] 参数说明 i:使用 inodes 显示结果 k:使用 KBytes 显示结果 m:使用 MBytes 显示结果 范例 [root @test /root ]# df k <==以 KB 显示磁盘空间 Filesystem 1k-blocksUsed Available Use% Mounted on /dev/hda12118832904600 110660045% / /dev/hda3 497861 37525434632 8% /disk1 none 31220 0 31220 0% /dev/shm /dev/hda5 1010894127 91743 5% /proxy1 /dev/hda6 1010894127 91743 5% /proxy2 /dev/hda21004052 38360914688 5% /var /dev/fd0142314051999% /mnt/floppy

说明:

这是用来显示目前磁盘空间的指令!需要注意的是,由于我们的档案或者是外挂的磁盘都是加在『 / 』底下,所以当根目录没有空间的时后,嘿嘿!你的 Linux 系统大概就是挂了吧~(说个笑话!当初我们系上有个研究生在管理 Sun 的工作站,是别研究室的,他的硬盘明明有好几 GB ,但是就是没有办法将几 MB 的资料 copy 进去,他就去跟老板讲说机器坏了!嘿!明明才来维护过几天而已为何会坏了!结果老板将维护商叫来骂了 2 小时左右吧!后来,维护商发现原来硬盘的『总空间』还有很多,只是某个扇区填满了,偏偏该研究生就是要将资料 copy 去那个扇区!呵呵!后来那个研究生就被命令『再也不许碰 Sun 主机』了~~)当然啰!你可以将你的资料放置在加挂的硬盘中,那么如何知道目前哪一个磁盘还有多少空间呢?!

这里要请大家再复习一下,我们的硬盘扇区规划中, primary 扇区每一颗硬盘只允许 4 个,其它的就放置在 Extended 扇区中了!而,硬盘的代号与 IDE 的插槽是有关系的!如果忘记了,那就回去安装 Linux 那一章复习一下吧!好了!假设我只有一棵硬盘,且放在 IDE 的 mater ,那么我的硬盘就是 /dev/hda 啰!而在这颗硬盘中的分割扇区就可以由 /dev/hda1 开始向上加!

OK,那么使用 df -k 之后,出现的上面的资料中,可以知道我的硬盘更分为 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5 与 /dev/hda6 ,咦! /dev/hda4 跑去哪里了!呵呵!其实 /dev/hda4 通常就是 Extended 扇区啦!而后面的 /dev/hda5, /dev/hda6 等扇区就是由 /dev/hda4 所切出来的!所以 /dev/hda5 + /dev/hda6 = /dev/hda4 !当然,如果还有没有显示出来的,例如 Swap ,则 /dev/hda4 还有可能更大呦!

那么来解释一下上面的资料吧!

·Filesystem:说的是扇区啦!另外,如果你有加挂软盘的话,那么就会出现如上表中最后一行啰!

·1k-blocks:说明底下的数字单位是 1KB 呦!如果你使用 df -m 则这一栏会出现 1M-blocks 啰!

·Used :顾名思义,就是使用掉的硬盘空间啦!

·Available :也就是剩下的磁盘空间大小;

·Use% :就是磁盘的使用率啦!如果使用率高达 90% 以上时,最好需要注意一下了,免得容量不足造成系统问题(例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁盘!)。Tw.wINgWiT.coM

·Mounted on :就是磁盘挂载的目录所在啦!例如 /dev/hda5 是挂载在 /proxy1 底下,而 /var 是 /dev/hda2 这个扇区啰!

另外,需要注意的是,有的时后某些系统会出现 /proc 这个扇区,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要加载的系统资料,而且是挂载在『内存当中』的,有点像是以前 DOS 年代的虚拟硬盘啦!所以当然没有占任何的硬盘空间啰!

·du

语法:

[root @test /root ]# du [-abckms] [目录名称] 参数说明: [目录名称] 可以省略,如果省略的话,表示要统计目前所在目录的档案容量 -a :全部的档案与目录都列出来!默认值是指列出目录的值! -b :列出的值以 bytes 输出 -c :最后加总 total ! -k :列出的值以 KB 输出 -m:列出的值以 MB 输出 -s :只列出最后加总的值! 范例: [root               

上一篇:Linux 指令大全(3)

下一篇:在Linux创建库函数(2)