磁盘存储和文件系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘存储和文件系统相关的知识,希望对你有一定的参考价值。

分区

两种分区格式:MBR、GPT

MBR分区

MBR分区磁盘的分区表信息存放在硬盘0磁道第0个扇区内总共512字节
前446字节为bootloader
中间64位为磁盘分区表信息,每个分区信息占16个字节,总计存放4个分区。(这段就是需要备份出来的数据)
最后的55AA为结束标志位

MBR分区结构

1.硬盘主引导记录MBR由4个部分组成
2.主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行
系统引导程序
3.出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为
0字节

  1. 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,
    每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
  2. 结束标志字,偏移地址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文件系统

fs: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 Point
??mount
卸载时:可使用设备,也可以使用挂载点
??umount 设备名|挂载点
挂载点下原有文件在挂载完成后会被临时隐藏
挂载点目录一般为空

mount

通过查看/etc/mtab文件显示当前已挂载的所有设备

常用命令选项

-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:??(挂载文件系统的选项),多个选项使用逗号分隔

ync ?? ?? ??异步模式
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设备
_netdev ?? ??当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults ?? ??相当于rw, suid, dev, exec, auto, nouser, async

umount

挂载命令

  1. 查看挂载情况
    findmnt MOUNT_POINT|device
  2. 查看正在访问指定文件系统的进程
    lsof MOUNT_POINT
    fuser -v MOUNT_POINT
  3. 终止所有在正访问指定的文件系统的进程
    fuser -km MOUNT_POINT
  4. 卸载
    umount DEVICE
    umount MOUNT_POINT

示例

挂载sdb1
技术图片
判断是否挂载
技术图片
技术图片
重新挂载
技术图片
mknod创建设备文件
技术图片
卸载sdb2

技术图片
如果正在使用,无法取消挂载
技术图片
查看正在使用挂载设备的用户进程
技术图片
技术图片
强行停止使用挂载点
技术图片

文件挂载配置文件

etc/fstab 每行定义一个要挂载的文件系统

1、要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2、挂载点
3、文件系统类型:ext4,xfs,iso9660,nfs,none
4、挂载选项:defaults ,acl,bind
5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6、fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用

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的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放

以上是关于磁盘存储和文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Liunx磁盘存储和文件系统

磁盘存储和文件系统

磁盘存储和文件系统管理

磁盘存储和文件系统管理

磁盘存储和文件系统

认识文件存储与磁盘管理