磁盘管理
块设备:block,存取单位"块",磁盘
设备文件:关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信
设备号码
主设备号:major number
次设备号:minor number
brw-rw----. 1 root disk 8, 1 Dec 5 09:19 sda1 brw-rw----. 1 root disk 8, 2 Dec 5 09:19 sda2
硬盘接口类型:
并口: IDE: 133MB/s :硬盘接口速率 SCSI:640MB/s 串口: SATA:6Gb/s SAS:6Gb/s USB:480MB/s
磁盘设备的设备文件命名:
IDE: /dev/hd SCSI,SATA,SAS,USB:/dev/sd
不同设备:a-z
/dev/sda,/dev/sdb
同一个设备上的不同分区:1,2...
/dev/sda1,/dev/sda2...
磁盘的组成
磁道:track
扇区:sector
柱面:cylinder
第0磁道0扇区:512bytes 446bytes:bootloader 64bytes:分区表 2bytes:用于校验:55AA 4个主分区 3个主分区+1个扩展分区(N个逻辑分区)
分区管理工具:fdisk,parted,sfdisk,gdisk
fdisk:对一块硬盘来讲,最多只能管理15个分区
fdisk -l :查看所有的磁盘分区情况
fdisk device :对某个磁盘进行分区
:p 显示磁盘分区情况
:n 创建磁盘分区
:d 删除磁盘分区
:w 保存退出
:q 不保存直接退出
:l 列表显示所有分区id
:t 调整分区id
:m 获取帮助
分区完后,查看系统识别到的磁盘分区:
cat /proc/partitions
如果系统没有识别到,那就通知内核重新读取硬盘分区表:
partx [OPTION] device -a:识别所有的磁盘分区 -n m:n 识别指定的几个磁盘分区 kpartx [OPTION] device -f:强制识别分区 partprobe [device]
分区完之后,就需要进行文件系统格式化
常见的文件系统有:
linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
swap:交换分区
光盘:iso9660
windows:fat32,ntfs
unix:FFS,UFS,JFS2
网络文件系统:NFS,CIFS
集群文件:GFS2,OCFS2
分布式文件系统:ceph
moosefs,mogilefs,GlusterFS,lustre
根据其是否支持”jounal“功能:
日志型文件系统:ext3,ext4
非日志型文件系统:ext2,vfat
文件系统的组成部分:
内核中的模块:ext4,xfs,vfat
用户空间的管理工具:mkfs.ext2,mkfs.xfs,mkfs,vfat
linux的虚拟文件系统:VFS
创建文件系统相关命令:
mkfs命令 1.mkfs.FS_TYPE /dev/DEVICE mkfs.ext2 mkfs.ext4 mkfs.btrfs ...
2.mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL':设定卷标
mke2fs:ext系列文件系统专用管理工具 -t {ext2|ext3|ext4} -b {1024|2048|4096} -L '卷标' -j:相当于-t ext3 mkfs.ext3=mkfs -t ext3=mke2fs -t ext2 -j = mke2fs -t ext3 -i #:为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小 -N #:为数据空间创建多少个inode -m #:为管理人员预留的空间占据百分比 -O FEATURE[,...]:启用指定特性 -O ^FEATURE:关闭指定特性
mkswap [OPTION] DEVICE #创建交换分区 -L 'LABEL' 前提:调整其分区id为82
其他常用工具:
blkid:块设备属性信息查看 blkid [OPTION] [DEVICE] -U UUID:根据指定的UUID来查找相应的设备 -L LABEL:根据指定的LABEL来查找对一个的设备 e2label:管理ext系列文件系统卷标 e2label DEVICE [LABEL]
tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看超级块信息 supper block
-L 'LABEL':修改卷标
-m #:修改预留给管理员的空间百分比
-j:将ext2升级为ext3
-O:文件系统属性开启或禁用
-o:调整文件系统的默认挂载选项
-U UUID:修改UUID号
dumpefs //不带参数默认查看块组信息
-h:查看超级块信息
文件系统检测: fsck.FS_TYPE fsck -t FS_TYPE -a :自动修复错误 -r :交互式修复错误
NOTE:FS_TYPE一定要与分区上已有文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答yes
-f:强制修复
文件系统格式化之后,还需要挂载才能使用
挂载:
将额外的文件系统与根文件系统上现行某目录建立起关联关系,进而使得此目录为其他文件的访问入口的行为称之为挂载
卸载:
解除关系关系的过程称之为卸载
挂载与卸载相关命令
挂载:mount
卸载:umount
注意点:挂载点下原文件在挂载完成后会被临时隐藏
挂载方法:mount DEVICE MOUNT_POINT mount [常用OPTION] [-o OPTION] device dir
device:指明要挂载的设备
1.设备文件:例如:/dev/sda5
2.卷标:-L 'LABEL' 例如 -L "MYDATA"
3.UUID,-U 'UUID' 例如:-U 'ABD12as12'
4.伪文件系统名称:proc,sysfs,devtmpfs,configfs
dir:挂载点
事先存在,建议使用空目录
进程正在使用中的设备无法被卸载
常用选项:
-t vfstype:指定要挂载的设备上的文件系统类型
-r:readonly,只读挂载
-w:读写挂载
-m:不更新/etc/mtab文件
-a:自动挂载所有支持自动挂载的设备:(定义在/etc/fstab文件中,且挂载选项中有"自动挂载"功能)
-U 'UUID':以UUID指定要挂载的设备
-L 'LABEL':以UUID指定要挂载的设备
-B,--bind:绑定目录到另一个目录上
-o options:(挂载文件系统的选项)
async:异步挂载
sync:同步挂载
atime/noatime:是否支持更新访问时间
diratime/nodiratime :是否支持目录访问时间
exec/noexec :是否支持挂载的文件系统上的程序运行为进程
dev/nodev :是否支持挂载的文件系统访问设备文件
user/nouser :是否支持普通用户挂载此设备
remount :重新挂载
ro :只读挂载
rw :读写挂载
suid/nosuid:是否支持suid权限
acl:是否支持文件系统上的acl功能
auto/noauto:是否支持自动挂载
注意:上述选项可同时使用,彼此以逗号分隔
默认挂载选项:defaults
acl,exec,nouser,dev,rw,auto,async
通过查看/etc/mtab文件显示当前系统已挂载的所有设备
查看内核追踪到的已挂载的所有设备:cat /proc/mounts
卸载命令:umount
umount DEVICE
umount MOUNT_POINT
挂载交换分区: 启用:swapon swapon [OPTION]... [DEVICE] -a:激活所有的交换分区 -p PRIORITY:指定优先级 禁用:swapoff swapoff [OPTION]... [DEVICE]
其他相关命令:
查看谁正在访问指定的文件系统: fuser -v MOUNT_POINT 终止所有正在访问指定的文件系统的进程 fuser -km MOUNT_POIN
内存空间使用情况 free :默认以KB为单位 -m :以MB为单位 -g :以GB为单位
查看某目录的总体空间占用状态 du [OPTION] DIR -h:human-readable -s:summary
文件系统空间占用等信息的查看工具 df -h:human-readable -l:inodes instead of blocks -P:以Posix兼容的格式输出
dd命令:convert and copy a file 用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# :block size,复制单元大小 count=# :复制多少个bs
1.备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
2.破坏MBR中的bootloaer
dd if=/dev/zero of=/dev/sda bs=512 count=1
两个特殊设备: /dev/null /dev/zero
文件挂载的配置文件:/etc/fstab
每行定义一个要挂载的文件系统:
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
要挂载的设备或伪文件系统
设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc,sysfs)
挂载选项
defaults,acl
转储频率
0:不做转储
1:每天转储
2:每隔一天转储
自检次序
0:不自检
1:首先自检,一般只有rootfs才会用1
2:同时自检
...
文件系统挂载使用
挂载光盘设备 光盘设备的文件: IDE:/dev/hdc SATA:/dev/sr0 符号链接文件: /dev/cdrom /dev/cdrw /dev/dvd /dev/dvdrw mount -r /dev/cdrom /media/cdrom umount /media/cdrom
文件系统的其他概念
文件系统把磁盘空间分成N个块,N个块又分成N个块组,每个块组又分成元数据区和数据区,元数据区存放数据块的索引inode,有个专门存放inode的inode table,还会预留一些空间用来存放inode bitmap,block bitmap,因为这么多块扫描也挺耗费时间的,所以有块位图,inode bitmap和block bitmap在磁盘空间中也有相应的块。
Inode:Index Node,索引节点
地址指针:
直接指针
间接指针
三级指针
inode bitmap:对位标识每个inode空闲与否的状态信息
链接文件:
硬链接:指向相同inode的不同路径;创建文件的硬链接即为inode创建新的引用路径,因此会增加其引用计数
不能对目录进行
不能跨分区:因为不同分区文件系统不一样,文件路径也是不一样的
符号链接:指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
可以对目录进行
也可以跨分区
创建链接文件方式:
ln [-sv] SRC DEST
-s:symbolic link
-v:verbose
文件删除、复制、移动
文件删除:意味着目标文件的引用计数为0,元数据区的inode置为0,inode bitmap也置为0,block bitmap也置为0
文件复制:不管是同分区还是跨分区,都很耗时间。因为文件复制是先创建一个空白的文件,然后将原文件的元数据和数据区填充到新文件中
文件移动:如果是跨分区,那么和复制差不多,都是要新创建文件,然后将原文件的内容填充到创建的文件中,最后将原文件删除。如果是同分区,那么文件移动只需要修改指向inode的路径即可