磁盘管理:
机械式硬盘:
U盘、光盘、软盘、硬盘、磁带
MBR:主引导记录(512byte),不属于任何分区
446byte:BootLoader,程序
64byte:每16byte标识一个分区(最多只能创建四个主分区,主+扩展<=4,扩展分区只能有一个)
2byte:Magic Number,标记MBR是否有效
RPM:转/每分钟
iNode条目:存储的是inode号,文件的属主属组(Owner/Group)、扩展属性、权限(Mode)、大小(Size)、时间戳(Timestamps)等各种跟文件数据没有关系的信息,以及直接/间接/多级间接磁盘块指针;但是没有文件名
目录:路径映射表
新建文件:找到空iNode以分配iNode节点,找到磁盘块以填充数据内容
删除文件:清空iNode节点内容,存储块标记为未使用,但数据未删除
剪切文件:修改iNode节点的存放路径(同一分区)
复制文件:创建新文件并填充数据内容
跨分区剪切文件:新分区建立文件→从老分区复制文件→老分区删除文件
inode Bitmap(iNode位图):标识iNode
block Bitmap(块位图):位图是为了加快索引
Super Block(超级块):存储的内容--------有多少块组、每个块组中有多少块、块大小、空闲/引用磁盘块、空闲/引用iNode;可有多个备份
GDT(块组描述符表Group Description Table):保存的内容---------当前分区上每个块的块组名,每个块组起始磁盘号、结束块的编号;需备份
Boot Block:任何一个分区的第一个块,预留出来,不能存数据
inode Table(iNode表):存放目录文件与inode号的对应关系
Boot Block | Block Group 0 | Block Group 1 | ... | Block Group n |
/ \
/ \
Super Block | GDT | Block Bitmap | inode Bitmap | inode Table | Data Blocks |
链接文件:
硬链接:直接指向同一个iNode的具有不同路径的两个文件
1.只能对文件创建,不能应用于目录
2.不能跨文件系统
3.创建硬链接会增加文件被链接的次数(ls -l)
软链接(符号链接):链接文件中保存的内容是被链接文件的绝对路径,权限取决于实际被链接文件
1.可应用于目录
2.可以跨文件系统
3.不会增加被链接文件的链接次数
4.其大小为指定的路径所包含的字符个数
# ln [-s -v] SRC DEST
# du FILE (显示目录下每个文件及目录本身的大小)
-s:显示目录的大小
-h:单位换算
# df (显示磁盘分区使用情况)
-i:iNode使用情况
-P:磁盘块使用情况
-h:换算为合适的单位
设备文件:
块设备:以块为单位,随机访问的设备-----硬盘
字符设备:以字符为单位的线性设备-----键盘
# ll /dev/sda1:(没有大小)
brw-rw----. 1 root disk 8, 1 Nov 16 08:57 sda1
8主设备号:标识设备类型
1次设备号:标识同一类型中不同设备
创建设备文件:(设备文件需与真实硬件相关联才能正常使用)
# mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE:指定权限
TYPE:b(块设备)、c(字符设备)
硬盘设备的设备文件名:
IDE、ATA:/dev/hd[a-d](第一个IDE口:主/dev/hda+从/dev/hdb,第一个主分区/dev/hda1)
SATA/SCSI/USB:/dev/sd[a-p]
软驱:/dev/fd[0-1]
打印机:/dev/lp[0-15]
光驱:/dev/cdrom 鼠标:/dev/mouse 磁带机:/dev/st0或/dev/ht0(IDE设备)
a、b、c...来区别同一种类型下的不同设备
逻辑分区可以有多个(从5开始),扩展分区只能有一个,主分区最多可以有四个
查看当前系统识别了几块硬盘:
# fdisk -l [/dev/DEVICENAME] (列出当前系统上的所有[指定]磁盘及其磁盘分区)
管理磁盘分区:
低级格式化:创建磁道
高级格式化:创建文件系统(利用VFS使得Linux可以支持多种文件系统,作翻译官)
# mkfs.文件类型名称 硬盘分区名称(mkfs -t ext2 = mkfs.ext2)
文件类型名称:cramfs,ext2/3/4,fat,msdos,xfs,btrfs,minix,vfat
ext3(journal file system日志文件系统):能加快文件系统的修复速度
分区:数据区、元数据区、日志区
专门管理ext系列文件:
# mke2fs
-j:创建ext3类型文件系统
-b BLOCK_SIZE:指定块大小,默认为4096,可用取值为1024、2048或4096
-L LABEL:指定分区卷标
-m #:指定预留给超级用户的块数百分比
-i #:用于指定为多少字节的空间创建一个inode,默认为8192;这里给出的数值应为块大小的2^n倍
-N #:指定iNode个数
-F:强制创建文件系统
-E:用户指定额外的文件系统属性
# blkid 硬盘分区名称 (显示uuid值全局唯一标识符、卷标label和type等相关属性属性,)
# e2label (用于查看或定义卷标)
# e2label 设备文件 卷标 (设定卷标)
# tune2fs (调整文件系统的相关属性)
-j:不损害原有数据,将ext2升级为ext3
-L LABEL:设定或修改卷标
-m #:调整预留百分比
-r #:指定预留块数
-o:设定默认挂载选项
-c #:指定挂载次数达到#次之后进行自检,0或-1代表关闭此功能
-i #:每挂载使用多少天后进行自检,0或-1代表关闭此功能
-l:显示超级块之后的信息
# dumpe2fs (显示文件系统相关信息)
-h:只显示超级块信息
# fsck (检查并修复Linux文件系统)
-t FSTYPE:指定文件系统类型
-a:自动修复(不询问)
# e2fsck (专用于修复ext2/3文件系统)
-f:强制检查
-p:自动修复
# fdisk /dev/sda (交互式命令)
p:显示当前硬件的分区
n:创建新分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
l:显示所支持的所有类型
# cat /proc/partitions (判断内核是否读到了新建的分区表信息)
# partprobe [/dev/sda] (通知内核重读[指定]分区表)
挂载:将新的文件系统关联至当前根文件系统
卸载:将某文件系统与当前根文件系统的关联关系予以移除
挂载:mount
# mount (显示当前系统已经挂载的设备及挂载点)
# mount [options] [-o options] 设备 挂载点
-a:表示挂载/etc/fstab文件中定义的所有文件系统
-n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件
-t FSTYPE:指定正在挂载设备上的文件系统的类型,不使用此选项时,mount会调用blkid命令获取对应文件系统的类型
-r:只读挂载,挂载光盘时常用此选项
-w:读写挂载
-o:指定额外的挂载选项,也即指定文件系统启用的属性
remount:重新挂载
loop:挂载本地回环设备(可用于挂载镜像)
ro:只读挂载
rw:读写挂载
设备:
设备文件:/dev/sda5
卷标:LABEL=" "
UUID:UUID=" "
挂载点:目录
要求:
此目录没有被其他进程使用
目录得事先存在
目录中的原有文件将会暂时隐藏
挂载完成后,要通过挂载点访问对应文件系统上的文件。如光盘镜像不能直接被访问,经过挂载之后可以在挂载点中查看其包含内容
卸载:umount
# umount 设备/挂载点
卸载注意事项:挂载的设备没有进程使用
# fuser (验证进程正在使用的文件或套接字文件)
-v:查看某文件上正在运行的进程
-k:
-m:
# fuser -km MOUNT_POINT (终止正在访问此挂载点的所有进程)
swap分区(交换分区):必须是一个独立的分区
# free (查看分区使用情况)
buffers:缓冲(大→缓冲区→小)
cached:缓存(小→缓存区→大)
创建交换分区:
fdisk命令中,t调整分区类型为82
# mkswap /dev/sda#
-L LABEL
挂载交换分区:
# swapon /dev/sda# (启用交换分区)
-a:启用所有的定义在/etc/fstab文件中的交换设备
# swapoff /dev/sda# (关闭交换分区)
回环设备:
loopback:使用软件来模拟实现硬件
创建一个镜像文件,120G
创建文件的方式模拟存储空间:
dd命令:直接复制底层数据流
if=input_file:指定数据来源
of=output_file:指定数据存储目标
bs=#:设置每个块的大小
count=#:设置要拷贝块的个数
conv=ucase:将字母从小写转换成大写
conv=lcase:将字母从大写转换为小写
seek=#:创建数据文件时,跳过的空间大小
文件系统的配置文件/etc/fstab:
OS在初始化时,会自动挂载此文件中定义的每个文件系统
内容:
要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 文件系统检测次序
转储频率:跟文件系统备份相关,用于定义多久对此文件系统做一次完全备份,0:不备份,1:每天备份,2:每两天一次备份....
文件系统检测次序:只有/为1,其他文件系统可为2,0表示不检查
文件管理---------压缩、解压缩
压缩格式:gz,bz2,xz,zip,z
压缩算法:算法不同,压缩比也会不同
compress:FILENAME.z
uncompress:
gzip:.gz(只能压缩文件,不能压缩目录)
# gzip /PATH/TO/SOMEFILE (压缩完成后会删除原文件)
-d:解压缩
-#:1-9,指定压缩比,默认是6
# gunzip /PATH/TO/SOMEFILE.gz (解压完成后会删除原文件)
# zcat /PATH/TO/SOMEFILE.gz (不解压的情况,查看文本文件的内容)
bzip2:.bz2,比gzip有更大压缩比的压缩工具,使用格式近似(只能压缩文件,不能压缩目录)
# bzip2 /PATH/TO/SOMEFIE (压缩完成后会删除原文件)
-d:解压缩
-#:1-9,指定压缩比,默认是6
-k:压缩时保留原文件
# bunzip2 /PATH/TO/SOMEFILE.bz2 (解压完成后会删除原文件)
# bzcat /PATH/TO/SOMEFILE.bz2 (不解压的情况,查看文本文件的内容)
xz:.xz,有更大的压缩比(只能压缩文件,不能压缩目录)
# xz /PATH/TO/SOMEFILE (压缩完成后会删除原文件)
-d:解压缩
-#:1-9,指定压缩比,默认是6
-k:压缩时保留原文件
# unxz /PATH/TO/SOMEFILE.bz2 (解压完成后会删除原文件)
# xzcat /PATH/TO/SOMEFILE.bz2 (不解压的情况,查看文本文件的内容)
zip:既归档又压缩的工具
# zip FILENAME.zip FILE1 FILE2 ... (压缩后不删除原文件)
# unzip FILENAME.zip
archive:归档,归档本身并不意味着压缩
tar:归档工具(只归档不压缩)
# tar
-c:创建归档文件
-x:展开归档文件
-f FILE.tar:操作归档文件名
-t:不展开归档,直接查看归档了哪些文件
-z:用Gzip压缩或解压
-j:用bzip2压缩或解压
-J:用xz压缩或解压
-v:显示压缩或解压的过程
-p:保留原始的权限与属性
-P:使用绝对路径来压缩
-C:指定解压到的目录
--xattrs:归档时,保留文件的扩展属性
cpio:归档工具