首页 > 代码库 > Linux硬盘分区Partition与档案系统管理

Linux硬盘分区Partition与档案系统管理

文件系统重点:inode(索引节点),block(逻辑区块),superblock(每个档案系统开始的位置的那个block,用于存储像是档案系统的大小,空的或填满的区块,以及它各自的总数等等信息)

磁盘的物理组成:
圆形的磁盘盘
机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据)
主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据

磁盘盘的物理组成:
扇区(sector)为最小的物理储存单位,每个扇区为512bytes
将扇区组成一个圆,那就是磁柱,磁柱是分区的最小单位
第一个扇区最重要,里面有mbr(主要开机区)及分割表,其中mbr占有446bytes,而分区表则占有64bytes

磁盘分区:指定分区的起始与结束磁柱

分区的磁柱范围记录在第一个扇区的分割表中

Inode:存放权限与属性,有:

 ? 该档案的拥有者与群组(owner/group); 

 ? 该档案的存取模式(read/write/excute);

 ? 该档案的类型(type);

 ? 该档案建立或状态改变的时间(ctime)、近一次的读取时间(atime)、近修改的时间(mtime);

 ? 该档案的容量;

 ? 定义档案特性的旗标(flag),如 SetUID...;

 ? 该档案真正内容的指向 (pointer);

Data block:存放实际数据
Superblock:记录整个文件系统的整体信息,包括inode与block的总量,使用量,剩余量等

由于ext2是索引式文件系统,通常情况下不需要常常进行碎片整理

如果硬盘文件系统高达数百gb,将所有的inode与block通通放置在一起将是很不智的决定,因为inode与block的数量太庞大,不容易管理;因此ext2文件系统在格式化的时候基本上是区分为多个区块群组(block group)的,每个区块群组都有独立的inode/block/superblock系统

一个文件系统仅有一个superblock;除了第一个block group内会含有superblock之外,后续的block group不一定含有superblock,而若含有superblock则该superblock主要是作为第一个block group内superblock的备份,可以进行superblock的救援

Dumpe2fs /dev/hda2:查看hda2分区与superblock的信息

目录并不只会占用一个block而已,就是说:在目录底下的档案数如果太多而导致一个block无法容纳下所有的档名与inode对照表时,linux会给予该目录多一个block来继续记录先关的数据

如果档案太过离散,可以将文件系统内的数据全部复制出来,然后将文件系统重新格式化,再讲数据复制回去就可以解决问题

日志式文件系统:ext3:
预备:当系统要写入一个档案是,会现在日志记录区块中记录某个档案准备要写入的信息
实际写入:开始写入当时的权限与数据;开始更新metadata的数据
结束:完成数据域metadata的更新后,在日志记录区块当中完成该档案的记录
当文件系统出现不一致的情况后,系统只需要去检查日志记录区块,就可以找到异常的档案,然后针对该档案进行一致性检查即可,而不必针对整块filesystem去检查,达到快速修复filesystem的能力

常见的支持文件系统有:
传统文件系统:ext2,mimix,ms-dos,fat(用vfat模块),iso9660(光盘)等等
日志式文件系统:ext3,reiserfs,windows’sntfs,ibm’s jfs,sgi’s xfs
网络文件系统:nfs,smbfs

Linux的标准文件系统是ext2

查看linux支持的文件系统:ll /lib/modules/$(uname -r)/kernel/fs

查看系统目前已加载到内存中支持的文件系统:cat /proc/filesystems

硬连结(不能跨filesystem,不能link目录):通过文件系统的inode连结来产生新档名,而不是产生新档案
软连结:相当于windows下的快捷方式

建立连结文件:Ln [-sf] 源文件目标文件

Linux重新分区后,可能需要重新启动来更新核心的分割表;在不重启的情况下,也可以通过下面的命令来执行:partprobe;partprobe的作用是高职核心必须要读取新的分割表而已

硬盘分区时,最好在单人维护模式下比较安全一些;在进行fdisk的时候,如果该硬盘的某个partition还在用当中,那么很有可能使系统核心无法重载硬盘的partition table,解决的方法是敬爱那个该使用中的partition给卸除,然后再重新进入fdisk一遍,重新写入partition table,就可以成功了

分区:fdisk

Fdisk没有办法处理大于2tb以上的磁盘分区!虽然ext3文件系统已经支持达到16tb以上的磁盘,但是分割指令无法支持;此时需要使用parted指令

磁盘格式化:mkfs
Mkfs –t ext3 /dev/hda3:将/dev/hda3格式化为ext3文件系统
Vfat可以用在windows/linux共享的u盘

磁盘检验:fsck,badblocks

Fsck –C –f –t ext3 /dev/hdc6:检验磁盘/dev/hdc6
-C:显示进度
-f:强制检查
-t:指定文件系统格式

Fsck是用来检查与修正文件系统错误的指令。注意:通常只有身为root且你的文件系统有问题的时候才使用这个指令,否则在正常情况下使用此一指令,可能会造成对系统的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致你在linux开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令

如果怀疑刚刚格式化的硬盘有问题,也可以使用fsck来检查一下硬盘!此外由于fsck在扫描硬盘的时候,可能会造成部分filesystem的损坏,所以执行fsck时,被检查的分区务必不可挂载到系统上!亦即是需要在卸除的状态下

Lost+found:此目录就是在当你使用fsck检查文件系统后,若出现问题时,有问题的数据会被放置的目录!理论上此目录不应该有任何数据

Badblocks:用来检查硬盘或软盘扇区有没有坏轨的指令
Badblocks –svw /dev/hda3
-s:在屏幕上列出进度
-v:可以在屏幕上看到进入
-w:使用写入的方式测试,建议不要使用此参数,尤其是待检查的装置已有档案时

Linux支持的文件系统的驱动程序所在目录是:/lib/modules/2.6.18-238.el5/kernel/fs

Mount:挂载(例:)
Mount /dev/hdc6 /mnt/hdc6
Mount –t iso9660 /dev/cdrom /media/cdrom
Mount –t vfat –o iocharset=cp950 /dev/sda1 /mnt/flash
Mount –o loop test.iso /mnt/dvd(iso挂载以后,可以对iso文件进行修改;这就是为什么很多iso文件提供后,还得要提供验证码(md5)给使用者确认iso文件没有问题)

如果你的挂载参数要改变,或者当根目录出现只读状态时,如何重新挂载呢?最可能的处理方式就是重新启动;除此之外也可以这样做:
将/重新挂载,并加入参数rw与auto
mount –o remount,rw,auto /
重点是那个-oremount,xx的选项与参数!请注意,要重新挂载时,这是个非常重要的机制!尤其是当你进入单人维护模式时,你的根目录常会被系统挂载位只读,这个时候这个指令就太重要了

Umount:卸载
Umount –fn 装置文件名或挂载点
-f:强制卸除!可用在类似网络文件系统(nfs)无法读取到的情况下
-n:不更新/etc/mtab情况下卸除

Dumpe2fs –h /dev/hdc6:查看分区信息

开机挂载:/etc/fstab配置文件项:
磁盘装置文件名或该装置的label
挂载点
磁盘分区的文件系统
文件系统参数
能否被dump备份指令作用
是否以fsck检验扇区

扩展swap分区:
1. 分割:先使用fdisk在磁盘上分区中分一个给系统作为swap。由于linux的fdisk预设会将分区的id设定为linux的文件系统,所以需要设定一下system id
2. 格式化:利用建立的swap格式的mkswap装置文件名,就能够格式化该分区成为swap格式
Mkswap /dev/hda4
3. 使用:最后将swap装置启动,方法为:swapon 装置文件名
Swapon /dev/hda4
4. 观察:最终透过free这个指令来观察一下内存的用量吧

使用档案建置swap:
1. dd if=/dev/zero of=/home/swapbs=1M count=512
2. mkswap /home/swap
3. swapon /home/swap | swapoff/home/swap

superblock大小为1024bytes
superblock前面需要保留1024bytes下来,以让开机管理程序可以安装

parted(对2t以上硬盘进行分区):
parted /dev/hda print:查看分区
parted /dev/had mkpart logical ext3 19.2G 19.7G:建立逻辑分区
parted /dev/had rm 8:删除分区

inode bitmap:inode对照表(inode的总量,使用量,剩余量)
inode table :inode表格(inode指向block)

开机自动挂载可参考/etc/fstab之设定,设定完毕务必使用mount –a测试语法正确否

Linux硬盘分区Partition与档案系统管理