MBR,是硬盘的主引导记录,处于0磁道0扇区,共有512字节,其中前446字节为BootLoader,用于引导系统启动,紧接的64字节用于标识分区,每16字节标识一个分区,故一个硬盘最多有4个主分区,若想使用更多的分区,可创建3个主分区,再创建一个扩展分区,然后在扩展分区上创建逻辑分区;最后的2个字节用于标识MBR是否有效。
MBR对于磁盘非常重要,可使用下面命令对MBR进行备份:
dd if =/dev/sda of=/mbrbackup bs=512 count=1
当MBR损坏时,可用下面命令进行修复:
dd if=/mbrbackup of=/dev/sda bs=512 count=1
若要删除磁盘上的所有分区,可使用下面命令:
dd if=/dev/zero of=/dev/sda bs=512 count=1
磁盘类型
常见磁盘类型有IDE、SATA、SCSI、USB等
linux中IDE用hd表示;SATA、SCSI、USB用sd表示;
hda、hdb、hdc....表示同种类型下的不同设备
hda1、hda2、hda3.....表示同一磁盘的不同分区
linux中连接磁盘后,在/dev目录下以文件方式表示。
linux的EXT2文件系统
ext2,是一种文件索引式文件系统,其分区格式可简单图解如下
操作系统的文件数据除了文件实际内容外, 通常含有非常多的属性,例如 Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。 文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。每个block和inode都有对应编号,每个文件占用若干个data block和一个inode,如此,inode记录了文件数据的存放点。系统读取文件时先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合,即读取inode指向的block的内容
superblock:记录文件系统整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格 式与相关信息等,一般来说, superblock 的大小为 1024bytes。
inode table:存放有inode号和文件属主、属组、时间戳等文件属性信息
block bitmap:标识分区中哪些block已用,哪些block还未被使用
inode bitmap:记录使用与未使用的 inode 号码
实际上,为了方便inode和block的管理,ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) 的,每个区块群组都有独立的 inode/block/superblock 系统,如下图
注意事项:
① inode固定大小为128bytes,记录一个block要花掉4bytes;block大小可以有1024/2048/4096bytes;当文件太大时,inode会使用间接的block来记录编号,如下图
② 每个block只能存放一个文件的数据,故如果系统上的文件较小,而格式化时blocksize选4096bytes时会造成磁盘空间的浪费
硬链接:两个路径指向同一个inode,其中一个文件删除后,另一个文件仍可访问该数据
软链接(符号链接):一个文件包含了另一个文件的路径名,即一个文件的文件路径指向的inode指向 了另外一个文件的路径
创建链接:
ln 源 目的 #表示创建硬链接
-s: #创建软链接
使用一个新磁盘的步骤:
1、为磁盘创建分区
2、格式化分区(即为分区创建文件系统)
3、挂载使用
相关命令:
分区管理
fdisk -l :查看系统识别的硬盘
fdisk /dev/sda 管理磁盘分区
回车后可选选项:
p:显示当前硬盘的分区,包括没保存的改动
n:创建新分区
e:创建扩展分区
p:创建主分区
d:删除一个分区
t:修改分区类型
L:显示所支持的所有类型
w:保存退出
q:不保存退出
l:显示所支持的所有分区类型
- 若创建了扩展分区,如创建了扩展分区/dev/sda4,应执行fdisk /dev/sda4,继续创建逻辑分区
- 创建分区后,使用命令partprobe或partx使内核重读分区表,使之识别新创建的分区; partprobe /dev/sda表示只重读sda一个磁盘的分区表;
cat/proc/partitions可查看内核识别了哪些分区;
- 若要创建swap分区,应修改分区类型为82;若创建LVM,应修改分区类型为8e;若创建RAID分区,应修改为fd
文件系统管理
cat /proc/filesystems:查看内核支持的文件系统类型
创建文件系统:mkfs -t 文件系统类型 指定分区
专门管理ext系列文件:
mke2fs 指定分区 (不加选项表示创建ext2)
-j:创建ext3
-b block_size:指定块大小,默认为4096,可用取值为1024、2048、4096
-L LABEL:指定分区卷标
-m #:指定预留给超级用户的块数百分比
-i #:指定#个字节为创建一个inode;默认为8192;所给的数值#应该为块大小的2^n
倍
-N #:指定inode个数
-F: 强制创建文件系统
-E: 用于指定额外的文件系统属性
blkid 指定分区:查看指定分区的相关属性(主要有UUID、TABLE和TYPE)
e2lable:用于查看或定义卷标
e2lable 设备文件卷标:设定卷标
dumpe2fs:显示文件系统属性信息
-h:只显示超级块中的信息
tune2fs:调整文件系统的相关属性
-j:不损害原有数据,将ext2升级为ext3
-L LABLE:设定或修改卷标
-m #:调整预留百分比
-r #:指定预留块数
-o:设定默认挂载选项
-c #:指定挂载次数达到#次后进行自检;0或-1表示关闭此功能
-i #:指定每挂载#天后进行自检;0或-1表示关闭此功能
-l:显示超级块中的信息
fsck:检查并修复linux文件系统
-t fstype:指定文件系统类型
-a:自动修复
e2fsck:专用于修复ext2/ext3文件系统
-f:强制检查
-p:自动修复
创建交换分区:(在此之前,应先调整分区类型为82)
mkswap 指定分区
-L LABLE :指定卷标
挂载管理
挂载:将新的文件系统关联至当前跟文件系统
卸载:将某文件系统与当前跟文件系统的关联移除
mount 设备 挂载点 (命令mount可显示当前已挂载的的设备及挂载点)
设备:
设备文件
卷标:LABLE=””
UUID:UUID=””
挂载点:目录
挂载点要求:
1、此目录没有被其他进程使用
2、目录需存在
3、目录中的原有文件将会被暂时隐藏
mount [option1] [-o option2] 设备 挂载点
option1:
-a:表示挂载/etc/fstab文件中定义的所有文件系统
-n:默认情况下。Mount命令每挂载一个设备,都会把挂载的设备信息保存至
/etc/mtab文件中;使用-n时不将信息写进该文件中
-t fstype:指定正在挂载设备上的文件系统的类型;不适用此选项时,mount会
调用blkid命令获取对应文件系统的类型
-r:只读挂载,挂载光盘时常使用此选项
-w:读写挂载
-o:指定额外的挂载选项,也即指定文件系统启用的属性(后面多个选项时用逗号隔开)
option2:(多个选项之间用逗号隔开)
remount:重新挂载当前文件系统
ro:只读挂载
rw:读写挂载
loop:挂载本地回环设备
挂载交换分区:
swapon 指定分区
-a:启用所有定义在/etc/fstab文件中的swap设备
umount:卸载 (卸载时应确保没有进程使用该分区)
umount 设备|挂载点
卸载交换分区:
swapoff 指定分区
fuser:验证进程正在使用的文件或套接字文件
-v:查看某文件上正在运行的进程
-k:杀掉访问文件的进程
fuser –km 挂载点:终止正在访问此挂载点的所有进程
其他相关命令:
du 指定目录 #显示目录的大小
df #显示整个磁盘的使用情况
选项:
不加选项:显示个分区的块使用情况
-h:单位换算
-i:显示各分区的inode使用情况
创建设备文件mknod:
用法:mknod 选项 文件名 类型 主设备 次设备号
选项:
-m 权限 #指定权限
类型:b c
(b:块设备;c:字符设备)
若有朋友发现错误,请留言指出,一起沟通交流进步(^-^)V