一、相关名词理解
1、设备类型:
块设备(block):随机访问,数据交换单位为“块”
字符(character):线性访问,数据交换单位为字符
设备文件:FHS(LSB)文件系统层级标准
/dev/
设备文件关联设备驱动程序
设备号:
major:主设备号 区分设备类别,用于标明所需驱动程序
minor:次设备号 区分同类设备不同个体
mknod:
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m, 指定其权限
[root@localhost ~]# mknod 5dev b 400 400 -m 755
设备文件的文件名(ICANN):
磁盘设备文件:
IDE接口(ATA):并行,133MB/s
两个IDE控制器:每个控制器可通过线缆介入两块磁盘,一主一从
SCSI接口:并行,640MB/s 工业级别
SATA接口:串行,6Gpbs
USB接口:串行,5Gpbs
SAS接口:串行,
/dev/sd[a-z][#]
磁道:stack
扇区:sectors
柱面:
分区:
寻道时间:平均寻道时间
2、链接文件:访问同一个文件数据不同路径
硬链接:两个文件路径指向了同一个inode
创建方法:cp -l SRC DEST
ln SRC DEST
特性:
1、目录不支持硬链接
2、硬链接不能跨文件系统
3、硬链接文件与原文件是指向同一个Inode,创建硬链接文件会增加Inode的引用计数,
软链接(符号链接):链接文件是一个完全独立的新文件,但其指向了原文件的访问路径
创建方法:ln -s SRC DEST
特性:
1、符号链接文件与原文件是两个独立文件
2、目录可以创建符号链接
3、可以跨文件系统
4、删除链接不影响原文件,但删除原文件,符号指向的文件路径不复存在,因此,此时链接文件将变成失效的链接,
5、其大小并非真正原文件大小,而是指向的原文件的文件路径字符串所包含的字节数
二、硬盘分区格式化
注意:硬盘分区格式和分区文件格式
MBR:0磁道0扇区,主引导扇区(master boot record),512B
分为三个部分:
446bytes:bootloader,操作系统加载器
64bytes:16bytes标记一个分区
2bytes:55AA 当前MBR信息是否有效的标记
GPT:GPT和parted使用详解
分区标识方式:
主分区 1-4
扩展分区
逻辑分区:5+
三、挂载一个硬盘的步骤
fdisk命令
①、 1、-l 查看所有显示已识别的磁盘设备
fdisk -l /dev/[hs]d[a-z][1-9]
2、管理分区
②、 硬盘分区 fdisk /dev/[hs]d[a-z]
fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能 ,所有的操作均在内存中完成。
常用命令:
p:显示现有分区表
n:创建新分区
d:删除现有分区
t:修改分区ID
l:查看支持哪些分区ID
w:保存退出 注意:这里需要注意如果磁盘没有任何分区,没有使用内核能自动重新读取分区表识别分区,并同步到磁盘。如果是已有分区的磁盘则会有警告信息提示,不能识别,不能进行下一步格式化,要重启后才可以。之前一直是在虚拟机上操作的,没注意到这个问题
q:不保存退出
m:显示帮助信息
查看内核是否已经识别新建分区
cat /proc/partitions
fdisk -l 命令能看到然并卵,格式化时就找不到
③、 通知内核强制重新读取分区表:
CentOS 5: partprobe /dev/Device
CentOS 6: partx -a /dev/sd[a-z]
或 kpartx -af /dev/sd[a-z] 注意:成功读取分区,可能需要命令重复执行2次或以上
磁盘格式化: 创建文件系统
文件系统:
元数据:每个索引项称一个Inode,(inode table)
根在内核中:其需要被关联至根文件系统,即rootfs
目录会保存它一级子目录的文件名和指向的indoe信息(编号)
例: /var/log/messages 访问一个文件的过程
根的inode-->根目录对应的磁盘块-->var对应的inode编号-->查inode table,找到编号对应的Inode-->var目录的磁盘块-->logs的Inode编号-->查inode table,找到编号对应的inode-->找到Logs目录的磁盘块-->找到messages文件名对应的INODE编号-->查inode table,找到编号对应的inode-->找到messages磁盘块
dentry:缓存
位图索引
块组
超级块
磁盘块
inode
VFS:
Linux文件系统:ext2,ext3,ext4,reiserfs,xfs,btrfs,
光驱:iso9600
网络文件系统:nfs,cifs
集群文件系统:gfs2,ocfs2
分布式文件系统:ceph
windows文件系统:ntfs,vfat
伪文件系统:tmpfs,hugepagefs,proc,sysfs
Unix的文件系统:FFS,UFS,JFS
交换文件系统:swap
日志型文件系统:加速文件检测并修复的过程。ext3,ext4,xfs
非日志型文件系统:ext2
文件系统管理工具:
创建文件系统:mkfs.ext4 fsck.xfs
查看文件属性:dumpe2fs ture2fs
检测文件系统:fsck.ext3 fsck.ext4 fsck.xfs
创建文件系统(格式化):
mkfs.FSTYPE /dev/DEVICE 查看文件系统: blkid [/dev/DEVICE]
mkfs -t FSTYPE /dev/DEVICE
UUID:全局惟一标识符
④、ext系列文件系统:mke2fs 格式化
mke2fs [OPTION]... /dev/DEVICE
-t {ext2|ext3|ext4},指明要创建的文件系统类型
-b {1024|2048|4096},指明块的大小
-L NAMENAME 指定卷标名(盘符)
-j 相当于-t ext3
-i #:指明inode与字节的比率,即,每多少个字节给创建一个inode
-N #:直接指明给此文件系统创建多少个inode
-m #:指明预留空间的百分比,默认为5
-O FEATURE [,...]: 默认开启特性 是调用 tune2fs命令
-0 FEATURE ^[...] :默认不开启特性
e2label #不影响分区中的数据
查看:e2label /dev/DEVICE
设定卷标:e2label /dev/DEVICE LABELNAME
tune2fs:查看或修改ext系列文件系统的某些属性 #不影响分区中的数据
tune2fs -l 查看超级块分区的信息
修改指定文件系统的属性:
-j:ext2-->ext3
-L LABELNAME:修改卷标
-m #:调整预留空间的百分比
-o [^] mount_options:开启或关闭某种默认挂载选项。常用acl
-O(大写):文件系统属性的启动或关闭
dumpe2fs:显示ext系列文件系统属性信息
dumpe2fs [-h] /dev/DEVICE -h 表示只显示超级块的信息
2、文件系统检测:
因进程意外终止或系统崩溃等原因导致写入操作非正常终止时,可能会导致文件损坏,此时,应修复文件系统.要先卸载
fsck: fsck -t FSTYPE=fsck.FSTYPE
-a 自动修复所有错误
-r 交互式修复错误,默认就有
-f 强制检测
ext系列文件系统的专用工具:
e2fsck:
-y:对所有问题自动恢复为yes
-f:即使文件系统处于clean状态也要强制进行检测 mkfs -t vfat /dev/DEVICE
SWAP文件系统:
free 查看系统内存使用状况
-h,-m,-g
disk /dev/DEVICE t命令调整ID为82
创建交换分区文件系统:
mkswap命令
mkswap [OPTION] /deV/DEVICE
-L LABLENAME
swapon:启用交换分区
swapon [option] [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:设定其优先级
swapoff:禁用交换分区
文件系统等空间占用信息查看工具:
df: 查看分区情况
df [OPTION] [挂载点或DEVICE]
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc
-h 使用习惯单位显示容量,如KB,MB,GB等
-i inode数量
-p 以Posix兼容的格式输出
-T 显示文件系统类型
du:
du [OPTION] [FILENAME]
-a 显示每个子文件的磁盘占用量,默认是只统计子目录
-h 使用。。。
-s 只统计总占用量,而不列出子目录和子文件的大小
du命令和df命令的区别
df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
du是面向文件的,指挥计算文件或目录占用的空间
注意:在Linux系统上,所有的文件系统必须通过根文件系统的某个分支来访问
根文件系统:根关联到的分区
其余所有的其它文件系统如果想要被访问,都只能够通过“关联”至根文件系统上的某个目录来实现,这种操作即所谓的“挂载”也即mount 卸载 umount
挂载点:即用作为另一个文件系统的访问入口的目录
必须事先存在,应该使用别的进程未使用的目录
⑤、mount:
mount [OPTIONS]... [-t FSTYPE] [-o OPTION] DEVICE MOUNT_POINT
mount:通过读取/etc/mtab文件来显示当前系统所以已经存在的挂在设备
命令选项:
-r: 只读挂载
-w: 读写挂载,默认就是以读写挂载的
-t FSTYPE:被挂载的设备上的文件系统类型,可省略,此时mount会自动使用blkid命令来判断之:
-L:以卷标的方式指定要挂载的设备,此时DEVICE可省 moun -L "LABLENAME" /DEVCIE
-U:UUID 以UUID的方式指定要挂载的设备,此时DEVICE可省 mount -U "UUID" /DEVICE
-a: 自动挂载所有的支持自动挂载的设备(/etc/fstab文件中定义的支持自动挂载的设备)
-n: 默认情况下,设备挂载与否的改变结果会保存于/etc/mtab中一份,-n选项用于变动时不更新此文件: 可以用cat /proc/mounts查看
-B:绑定目录至另一个目录上
-o OPTION 挂载选项:
async:异步写入
sync:同步写入即使用同步I/O,
atime/noatime:文件或目录在被访问时是否更新其访问时间戳
diratime/noatime:目录在被访问时是否更新其访问时间戳
auto/noauto:设备是否支持Mount命令使用-a选项时自动挂载
dev/nodev:此设备上是否创建设备文件
exec/noexec:是否允许执行此文件系统上的程序文件
suid/nosuid:是否支持此设备上的文件上使用SUID权限
remount:重新挂载
mount -o remount,acl /dev/sdb1
ro:只读
rw:读写
loop:用来把一个文件当成硬盘分区挂接上系统
iocharset:指定访问文件系统所用字符集
user/nouser:是否允许普通用户挂载此文件系统
所有挂载选项均未指明时,其默认为:
rw,suid,dev,exec,auto,nouser,async,and relatime
umount DEVICE 或 umount MOUNT_POINT
挂载点挂载之前的文件在挂载后会被隐藏,卸载后还会存在,设备卸载前保存的文件,卸载后也会保存,再此挂载就可以访问
fuser
查看正在访问指定挂载点的进程:fuser -v MOUNT_POINT
终止所有正在访问指定挂载点的进程:fuser -km MOUNT_POINT
⑥、/etc/fstab
文件系统相关挂载配置文件
每行定义一个文件系统
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率(备份频率) 自检次序
设备文件, 0 不转储 0 不自检
LABEL= 1 每天转储 1 首先自检“/”
UUID= 2 每隔一天转储 2
伪文件系统名称