磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘BIOS、主控芯片和硬件缓存等单元;接口部件包含电源、数据接口主从跳线等。读取硬盘数据时,主轴电机带动盘片旋转,副轴电机带动磁头臂将磁头放到相应的数据存放的柱面和磁道上,再由磁头读出相应扇区中的数据。(图1-1)
磁道(track):每个盘面被划分成了多个同心圆环,数据就是存储在这些同心圆环上。这些同心圆环被称为磁道。(图1-2)
扇区(sector):每个磁道上划分成若干个圆弧,这每一个圆弧称为扇区,扇区是硬盘上存储的物理单元通常一个扇区为(512byte)。硬盘的扇区与扇区之间隔了交叉因子,因为硬盘的转速很快,读完这个扇区来不及读下一个扇区,这时就必须等待转一圈才能读下一个扇区,造成时间浪费,所有就用交叉因子来解决这个问题。(图1-3)
柱面(cylinder):不同盘面上相同编号的磁道组成的一个同心的圆柱面,称为柱面。硬盘的数据读写和分区是按柱面进行的,磁头读写数据时首先在同一个柱面的0磁头开始依次向下直到所有的磁头全部读写完毕后,磁头在转向下一个柱面。
图1-1 图1-2 图1-3
硬盘分区:
MBR:主引导记录(Master Boot Record),计算机开机后根据主板设备的加载项去读取硬盘的第一个扇区(0柱面,0磁头,1扇区),该扇区大小为512byte,其中446byte负责找到系统的活动分区,并从活动分区中装载并运行系统引导程序(bootloader)。后面64byte为分区表,每16byte标识一个活动分区,最多支持4个活动分区。2byte的结束标识符。
文件系统:
文件系统是一套帮助操作系统管理和存储文件信息的软件。它对存储设备的空间进行管理和分配,负责文件的存储和检索。
fdisk对硬盘进行分区操作
fdisk -l [-u] [DEVICE] ##查看系统的硬盘信息 fdisk [DEVICE] ##管理设备##常用的子命令的管理功能 p print the partition table ##显示已有分区 n add a new partition ##创建新分区 d delete a partition ##删除一个分区 w write table to disk and exit ##保存分区表并退出 q quit without saving changes ##退出不保存修改的内容 m print this menu ##显示帮助菜单 l list known partition types ##列表分区的ID和类型 change a partition's system id ##调整分区的ID
查看/proc/parttions内核是否识别新分区
[root@mage ~]# cat /proc/partitions major minor #blocks name 8 0 8388608 sda 8 1 512000 sda1 8 2 7875584 sda2 8 16 4194304 sdb 8 17 2104483 sdb1 8 18 2088450 sdb2
如果当前硬盘正在使用,新划的分区未能识别则用partx命令重读硬盘分区表
[root@mage ~]# partx -a /dev/sdb ##通知内核重新读取硬盘分区表 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2
Linux支持多种文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap….
由于支持这么多的文件系统,为了方便进程或应用程序的调用,弱化各个文件系统之间的差异,所以就需要在内核与文件系统在有一层中间件。于是就有了虚拟文件系统VFS(Virtual File System),虚拟文件系统将不同文件系统的差异进行隐藏,并向进程或应用程序提供同一的调度接口。应用程序或进程要访问文件时,只需要使用VFS提供的接口,VFS确定要访问的文件所属的文件系统,通过存储在VFS中的指针调用该文件系统进行相应的操作。
ext2(second EXTended Filesysem)是一个被linux广泛使用的文件系统。文件的文件名不能超过255个字符。ext2文件系统第一块为引导扇区(boot sector)用于系统启动引导使用,即使该分区非系统分区也会保留。引导扇区的块被分成若干个块组。
超级块:该文件系统的信息,包括inode和block的总数、空闲、块的大小、文件、块组的大小、文件系统创建时间、默认挂载的参数等。
超级块会备份到若干个块组内。
组描述符:存放block和inode的开始与结束的位置,空闲块数和inode的空闲数,块组中的目录数等信息,
inode位图:对位标识每个inode空闲与否的状态信息
块位图:对位标识每个block空闲与否的状态信息
inode表:大小为128字节,每个inode恰好描述了一个文件。文件类型,链接数据,文件的改变、修改、访问时间,文件的属主、属组、大小,以及12block硬盘物理地址和后面3个间接指针(直接指针、间接指针、三级指针)。
数据块:存放文件内容数据的位置,每个数据块的大小在文件系统创建时都已经确认了,一个文件至少占用一个数据块,可以占用多个数据块。
ext3是ext2文件系统的升级版,并加入了日志文件系统。系统在写入数据时会现将数据写入日志区。再通过日志信息将数据写入数据区中,这样的好处,一旦系统非正常关机成数据的损坏。可以通过日志信息快速检测错误区并加以修复。而不需要像ext2遍历全盘,节约了事件,也提高了数据的可靠性。
创建文件系统
mkfs命令
mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.FS_TYPE /dev/DEVICE mkfs -t FS_TYPE /dev/DEVICE mke2fs ##ext文件系统专用管理工具 mke2fs [OPTION] /dev/DEVICE -t {ext2|ext3|ext4} ##指定要创建的类型 -b {1024|2048|4096} ##指定块大小 -L 'LABEL' ##指定卷标 -i # ##数据空间每多少个字节创建一个inode;此大小不应该小于block的大小; -N # ##为数据空间创建个多少个inode -m ##为管理人员预留的空间占据的百分比;默认为5% -O FEATURE[,....] ##启用指定特性 -O ^FEATURE ##关闭指定特性 [root@mage ~]# mke2fs -t ext4 -b 4096 -L 'TEST' -m 3 /dev/sdb1 mke2fs 1.41.12 (17-May-2010)Filesystem label=TEST ##卷标 OS type: Linux Block size=4096 (log=2) ##块的大小 Fragment size=4096 (log=2) Stride=0 blocks,Stripe width=0 blocks 197600 inodes, 789185 blocks ##该文件系统总共的块和inode的数量 23675 blocks (3.00%) reserved for the super user First data block=0 Maximum filesystem blocks=809500672 25 block groups ##块组数量 32768 blocks per group, 32768 fragments per group ##32768块组成一个块组 7904 inodes per group Superblock backups stored on blocks: ##超级块的备份 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done ##创建的日志文件块 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
块属性的信息查看
blkid [OPTION].........[DEVICE] -U UUID ##根据指定的UUID来查找对应的设备 -L LABEL ##根据指定的LABEL来查找对应的设备 [root@mage ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="TEST" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"
修改ext文件系统的卷标
e2label DEVICE [LABEL] [root@mage ~]# e2label /dev/sdb1 MYDATA [root@mage ~]# blkid /dev/sdb1/dev/sdb1: LABEL="MYDATA" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"
调整ext文件系统的参数
tune2fs [OPTION] /dev/DEVICE -l ##查看指定文件系统超级块信息;super block -L 'LABEL' ##修改卷标 -m # ##修预留给管理员的空间百分比 -j ##将ext2升级为ext3 -O ##文件系统属性启用或禁用 -o ##调整文件系统的默认挂载选项 -U:UUID ##修改UUID号 [root@mage~]# tune2fs -l /dev/sdb1 ##查看超级块 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: TEST Last mounted on: <not available> Filesystem UUID: d2eda9dd-3c63-40d1-8dce-9f2c18b36602 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 197600 Block count: 789185 Reserved block count: 23675 Free blocks: 759231 Free inodes: 197589 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 192 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 7904 Inode blocks per group: 494 Flex block group size: 16 Filesystem created: Sun Dec 13 10:31:18 2015 Last mount time: n/a Last write time: Sun Dec 13 10:31:18 2015 Mount count: 0 Maximum mount count: 26 Last checked: Sun Dec 13 10:31:18 2015 Check interval: 15552000 (6 months) Next check after: Fri Jun 10 10:31:18 2016 Lifetime writes: 113 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 4dc8c1cb-a593-4f0f-8da7-2d787b789e4e Journal backup: inode blocks
dumpe2fs [OPTION] /dev/DEV -h ##查看超级块信息 -x ##查看块组以信息十六进制显示 Group 0: (Blocks 0-32767) [ITABLE_ZEROED] ##块组的block的范围 Checksum 0xc867, unused inodes 7893 ##校验码和未使用的inode的数量 Primary superblock at 0, Group descriptors at 1-1 Reserved GDT blocks at 2-193 Block bitmap at 194 (+194), Inode bitmap at 210 (+210) ##块位图,inode位图 Inode table at 226-719 (+226) ##inode表 24632 free blocks, 7893 free inodes, 2 directories, 7893 unused inodes ##未使用的块,未使用的inode节点,2个目录 Free blocks: 8136-32767 ##未使用块的范围 Free inodes: 12-7904 ##未使用inode的范围
原创文章,作者:Y.sir,如若转载,请注明出处:http://www.178linux.com/9922