1Linux磁盘分区相关1.磁盘的组成和分区表磁盘的组成主要由磁盘盘、机械手臂、磁盘读取头和主轴马达所组成,数据写入在磁盘盘上面,而磁盘盘上面又可以细分出扇区
1 Linux磁盘分区相关
1. 磁盘的组成和分区表
磁盘的组成主要由磁盘盘、机械手臂、磁盘读取头和主轴马达所组成,数据写入在磁盘盘上面,而磁盘盘上面又可以细分出扇区和磁柱,每个扇区大小为512字节。磁盘的第一个扇区主要记录了以下连个信息:
MBR(Master Boot Record)主要启动记录区:可以用来安装开机管理程序,大小为446字节;
partition table分区表:记录整个磁盘的分区情况,大小为64字节。
2. 主分区、拓展分区、逻辑分区:
受限于分区表的大小,储存在分区表中的分区记录最多只有4条,使得硬盘的主分区(Primary)或者拓展分区(Entended)至多只有四个;
主分区格式化后可以直接拿来使用而不可以再分区,作用就是计算机用来进行启动操作系统的,因此每一个操作系统的启动,或者称作是引导程序,都应该存放在主分区上;
拓展分区至多只有一个,它的目的是使用额外的扇区来记录分区信息,需要经过二次分区才能使用,不可以格式化,当然不能储存数据;
由拓展分区再分割出来的是逻辑分区,逻辑分区没有数量限制,不过最终受限于Linux分区数量;
对于IDE硬盘,Linux分配了1-63序列号码作为这块硬盘上的分区号码,如第一块硬盘的标识为hda1-hda63(IDE),其中1-4为主分区或者拓展分区号码,逻辑分区占用5-63这59个号码;而SCSI硬盘只有1-16这些序列号码,1-4为主分区或者拓展分区号码,逻辑分区占用5-16这12个号码。
2 Linux系统支持的文件系统格式
1. Linux支持多种文件系统格式,可以在/lib/modules/`uname -r`/kernel/fs目录下查看:
ls /lib/modules/`uname -r`/kernel/fs
autofs4 configfs exportfs fat jbd mbcache.ko nls
btrfs cramfs ext2 fscache jbd2 nfs squashfs
cachefiles dlm ext3 fuse jffs2 nfs_common ubifs
cifs ecryptfs ext4 gfs2 lockd nfsd udf
上面的命令显示该Linux系统在当前内核下所支持的文件系统格式,包括FAT、NFS、EXT2-4等等,不同的文件系统格式会有不同的分区标识。
2. EXT2文件系统:
EXT系列文件系统是索引式文件系统,采用inode+block模式来进行数据存储,其中文件权限和属性放置在inode中,实际数据放置在data block区块中,superblock超级区块会记录整个文件系统的整体信息,包括inode和block的总量、使用量、剩余量等;
每一个inode和block都有编号,其中:
superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码;
block:实际记录文件的内容,若文件太大时,会占用多个 block 。
Ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) ,每个区块群组都有独立的inode/block/superblock 系统,这样在文件系统很大的时候,不会因为inode和block数量太庞大而不易管理。
Ext2文件系统所支持的block大小有1KB、2KB、4KB,不同的大小,其所支持的最大磁盘容量和最大单一文件容量不同,具体如下:
Block大小 1KB 2KB 4KB
最大单一文件限制 16GB 256GB 2TB
最大文件系统总容量 2TB 8TB 16TB
Ext2的block限制:
block的大小和数量在格式化完就不能够再改变了(除非重新格式化);
每个 block 内最多只能够放置一个文件的数据;
如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
如果文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
Ext2的inode的特点:
每个大小为128字节;
每个文件只会占用一个inode,那么文件系统能够建立的文件数量与inode数量有关;
系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合则能够开始实际读取block的内容。
Ext3是Ext2的改进版,增加了日志式文件系统功能,而Linux kernel从2.6.28开始正式支持新的文件系统 Ext4,Ext4是Ext3的改进版,修改了Ext3部分重要的数据结构。Ext4和Ext3有很多区别,其中较之Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支别1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB 的文件,而且Ext4可以有无限数量的子目录,而Ext3目前只支持32,000个子目录
3 Linux磁盘管理
1. 获取硬盘的属性信息:
dmesg | grep scsi
scsi0 : ata_piix
scsi1 : ata_piix
scsi2 : ata_piix
scsi3 : ata_piix
scsi 0:0:0:0: Direct-Access ATA ST500DM002-1BD14 KC45 PQ: 0 ANSI: 5
scsi 1:0:0:0: CD-ROM TSSTcorp DVD+-RW SH-216BB D100 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray
sr 1:0:0:0: Attached scsi CD-ROM sr0
scsi4 : SCSI emulation for USB Mass Storage devices
scsi 4:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS
sd 0:0:0:0: Attached scsi generic sg0 type 0
sr 1:0:0:0: Attached scsi generic sg1 type 5
sd 4:0:0:0: Attached scsi generic sg2 type 0
2. 查看磁盘整体使用情况:df
df命令各个选项的含义如下:
-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k:以K字节为单位显示。
-m:以M字节为单位显示。
-i:显示i节点信息,而不是磁盘块。
-t:显示各指定类型的文件系统的磁盘空间使用情况。
-x:列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T:显示文件系统类型。
-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示。
df -h