磁盘存储与文件系统
分区
两种分区格式:MBR、GPT
MBR分区
MBR分区磁盘的分区表信息存放在硬盘0磁道第0个扇区内总共512字节
前446字节为bootloader
中间64位为磁盘分区表信息,每个分区信息占16个字节,总计存放4个分区。(这段就是需要备份出来的数据)
最后的55AA为结束标志位
MBR分区结构
- 硬盘主引导记录MBR由4个部分组成
- 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行
系统引导程序 - 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为
0字节 - 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,
每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4 - 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA
MBR结构
GPT分区
支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
使用128位UUID表示磁盘和分区 GPT分区表
自动备份在头和尾两份,并有CRC校验位
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
GPT分区结构
管理分区的命令
列出块设备
lsblk
列出所有可用块设备的信息,而且还能显示它们之间的依赖关系
?-a:显示所有设备
?-b:以bytes方式显示设备大小
?-f:显示文件系统信息
创建分区工具
fdisk 创建MBR分区
?-l [-u] [device...] 查看分区
子命令
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
gdisk 创建GPT分区
??类fdisk 的GPT分区工具
parted 高级分区操作
??parted操作是实时生效的,请小心使用。
?–l:列出分区信息
同步分区表
1. 查看内核是否已经识别新的分区
cat /proc/partations
2. centos6通知内核重新读取硬盘分区表
新增分区用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分区用
partx -d --nr M-N /dev/DEVICE
3. CentOS5,7使用partprobe
partprobe [/dev/DEVICE]
重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。
文件系统
定义
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文
件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立
文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压
缩,加密等
Linux中支持的文件系统
?ll /lib/modules/
uname –r
/kernel/fs
创建文件系统
mkfs
mkfs.FS_TYPE /dev/DEVICE
?-t:指定文件系统
创建ext文件系统
mke2fs:ext系列文件系统专用管理工具
?-t {ext2|ext3|ext4} 指定文件系统类型
?-b {1024|2048|4096} 指定块大小
?-L ‘LABEL’ 设置卷标
?-j 相当于 -t ext3
??mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
?-i # 为数据空间中每多少个字节创建一个 inode;不应该小于block大小
?-N # 指定分区中创建多少个inode
?-I 一个inode记录占用的磁盘空间大小,128---4096
?-m # 默认5%,为管理人员预留空间占总空间的百分比
?-O FEATURE[,...] 启用指定特性
?-O ^FEATURE 关闭指定特性
文件系统的标签
blkid:块设备属性信息查看
?-U UUID 根据指定的UUID来查找对应的设备
?-L LABEL 根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
findfs :查找分区
?findfs [options] LABEL=\<label>
?findfs [options] UUID=\<uuid>
tune2fs:重新设定ext系列文件系统可调整参数的值
?-l 查看指定文件系统超级块信息;super block
?-L ‘LABEL’ 修改卷标
?-m # 修预留给管理员的空间百分比
?-j 将ext2升级为ext3
?-O 文件系统属性启用或禁用, –O ^has_journal
?-o 调整文件系统的默认挂载选项,–o ^acl
?-U UUID 修改UUID号
dumpe2fs
将磁盘块分组管理
?-h:查看超级块信息,不显示分组信息
文件系统检测和修复
常发生于死机或者非正常关机之后,挂载文件系统标记的“no clean”
注意:一定不要在挂载状态下进行修复
1. fsck: File System Check
?fsck.FS_TYPE
?fsck -t FS_TYPE
??-p 自动修复错误
??-r 交互式修复错误
?FS_TYPE 一定要与分区上已经文件类型相同
2. e2fsck:ext系列文件专用的检测修复工具
??-y 自动回答为yes
??-f 强制修复
用mount命令挂载文件系统
挂载方法:mount DEVICE MOUNT_POINT
mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
mount 常用命令选项
?-t vsftype 指定要挂载的设备上的文件系统类型
?-r readonly,只读挂载
?-w read and write, 读写挂载
?-n 不更新/etc/mtab,mount不可见
?-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
?-L ‘LABEL‘ 以卷标指定挂载设备
?-U ‘UUID‘ 以UUID指定要挂载的设备
?-B, --bind 绑定目录到另一个目录上
?查看内核追踪到的已挂载的所有设备
??cat /proc/mounts?-o options:(挂载文件系统的选项),多个选项使用逗号分隔
>??async 异步模式 sync 同步模式,内存更改时,同时写磁盘
??atime/noatime 包含目录和文件
??diratime/nodiratime 目录的访问时间戳
??auto/noauto 是否支持自动挂载,是否支持-a选项
??exec/noexec 是否支持将文件系统上运行应用程序
??dev/nodev 是否支持在此文件系统上使用设备文件
??suid/nosuid 是否支持suid和sgid权限
??remount 重新挂载
??ro 只读 rw 读写
??user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
??acl 启用此文件系统上的acl功能
??loop 使用loop设备?defaults:相当于rw, suid, dev, exec, auto, nouser, async
卸载命令
- 查看挂载情况
findmnt MOUNT_POINT|device - 查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT - 终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT - 卸载
umount DEVICE
umount MOUNT_POINT
swap交换分区
swap交换分区是系统RAM的补充,Swap 分区支持虚拟内存。当没有足够的RAM 保存系统处理的数据时会将数据写入 swap 分区
当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过多swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露
启用swap交换分区
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:指定优先级
??/etc/fstab 在第4列中:pri=value
禁用swap交换分区
swapoff [OPTION]... [DEVICE]
swap的优先级
可以指定swap分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放
原文地址:https://blog.51cto.com/12980155/2370325