Linux磁盘管理与文件系统
Posted 出水芙蓉薇薇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux磁盘管理与文件系统相关的知识,希望对你有一定的参考价值。
一、磁盘知识体系
Linux磁盘存储描述
二、 磁盘分区
磁盘分区就是使用分区编辑器将一个硬盘上划分几个独立的逻辑部分,盘片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。
MBR原理
MBR主分区引导记录。磁盘的每块扇区都被分配了一个逻辑块地址,引导扇区是每个分区的第一个扇区,主引导扇区是整个硬盘的第一扇区。MBR就保存在主引导扇区中,且扇区还保存了硬盘分区表DPT和结束标志字。扇区共计512字节,MBR占446字节,DPT占64个字节,最后的结束标志字占2个字节。MBR分区缺点是,硬盘最大容量为2T
GPT原理
GPT分区也称GUID分区表。优点是GPT分区硬盘容量几乎无限制;分区个数无限制;自带磁盘数据保险机制。
Linux磁盘分区:主分区和扩展分区
一个硬盘,系统默认分区1~4留给了主分区和扩展分区
主分区1*(星号代表是引导分区)
主分区2
主分区3
主分区4(extended)
逻辑分区n
Linux一切皆文件,磁盘设备在文件系统中也是以文件的形式展示
三、Linux支持的文件系统
虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层。VFS提供访问文件系统对象的通用对象模型(例如:i-node,文件对象,页缓存)和方法,它对用户进程隐藏了各种文件系统的差别。
Linux标准的文件系统ext2,ext3,ext4和xfs外,还有很多种文件系统。
VFS是用户的应用程序与文件系统实现之间的抽象层,如图所示
磁盘分区完成后,需要进行格式化处理,因为不同的操作系统设置文件属性,权限各不相同,将分区格式化后称之为操作系统能够识别、兼容的文件系统。
1. 不同的操作系统,使用的文件系统各不相同
windows 98:FAT/ FAT 16
windows 2000:NTFS
Linux自带文件系统:ext2,ext3(centos 5),ext4(centos 6)和xfs (centos 7)
网络文件系统:smb(服务消息块,文件共享协议),NFS(网络文件系统)
集群文件系统:Gfs,ocfs
分布式文件系统:Ceph(一个统一的分布式存储系统)
交换文件系统:swap
2. 文件系统创建工具
1) 创建文件系统:mkfs 命令(mkfs 把分区格式化为某种文件系统)
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
2)修复文件系统:fsck命令(检查并修复Linux文件系统)
fsck fsck.btrfs fsck.cramfs fsck.ext2 fsck.ext3 fsck.ext4 fsck.minix fsck.xfs
fsck:检查磁盘文件系统,修复错误。针对磁盘进行修复检查。
fsck命令参数
-a:自动修复文件系统,不询问任何问题;
-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
-N:不执行指令,仅列出实际执行会进行的动作;
-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;
-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;
-s:依序执行检查作业,而非同时执行;
-t<文件系统类型>:指定要检查的文件系统类型;
-T:执行fsck指令时,不显示标题信息;
-V:显示指令执行过程。
3)查看文件系统属性:dumpe2fs命令(用于打印文件系统的超级块和块组信息,用于ext2,ext3,ext4文件;针对centos 7使用的xfs文件系统,更换xfs_info命令查看分区信息)
4)调整文件系统特性:tune2fs命令(调整/查看ext2/ext3文件系统的文件系统参数)
设置Linux是否开机自动检查文件系统正常与否。
-c max-mount-counts 设置强制自检的挂载次数 -1表示关闭
5)lsblk命令:列出所有设备以及文件系统信息
列出所有设备关系、文件系统:lsblk命令(列出所有的块设备,而且显示他们之间的依赖关系【lsblk -f】)
四、Linux分区管理
1. 分区管理命令fdisk
fdisk磁盘分区命令参数:
-v 打印 fdisk 的版本信息并退出.
-l 列出指定设备的分区表信息并退出。
-u 以扇区数而不是以柱面数的形式显示分区表中各分区的信息.
-s 分区 将分区的 大小 (单位为块)信息输出到标准输出
2. Linux文件系统挂载
Linux设备不挂载不能使用。
挂载:通常是将一个存储设备挂载到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。挂载后,这个目录称之为挂载点。
mount命令:可以将指定的文件系统挂载到指定目录。
mount -o 参数
#显示已挂载的情况
#分区dev/sda1挂载在 /boot文件夹 文件系统类型是 xfs,参数是(rw,relatime,attr2,inode64,noquota)
rw 读写
relatime mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。
attr2 在磁盘上存储内联扩展属性,提升性能
inode64 允许在文件系统的任意位置创建 inode
noquota 强制关闭所有文件系统限额功能
查看系统已挂载的设备
df 命令
mount -l
cat /etc/mtab
cat /proc/mounts
3. umount 取消挂载
umount可卸除目前挂载在Linux目录中的文件系统
umount 设备|文件夹
-f:强制卸载
注:挂载点被使用中无法卸载,如被进程占用。卸载时提示目标忙
解决办法:1)查看挂载点被哪个进程占用(lsof 文件夹)或者(fuser -v 文件夹)
2)杀死正在使用挂载点进程(fuser -km 文件夹)
4. 添加一块硬盘进行磁盘分区
需求:在vmware上添加一块10G的硬盘,一个主分区,两个逻辑分区
第一步:编辑虚拟机或者虚拟机设置,点击硬盘—添加,然后下一步
选择磁盘大小10G
点击完成
第二步:添加完成后登陆到Linux系统
对该硬盘/dev/sdb进行分区
分区完成后入w回车,进行保存退出
第三步:磁盘划分成功,对分区进行格式化,分别对磁盘进行格式化处理,格式化为ext4文件类型
mkfs -t 文件格式 设备文件名 或者mkfs.ext4 设备文件名
‘
查看分区格式化后的情况
第四步:挂载
’ 临时挂载:
- 先创建一个 /data01
- mount /dev/名字 /data01
- 查看分区挂载情况
设置自动挂载【永久挂载:重启系统后仍挂载】
- vim /etc/fstab(/etc/fstab文件是用来存放文件系统的静态信息文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动地将此文件找中指定的文件系统挂载到指定目录上。)
- 添加完成后,mount -a 立刻生效
#<file system> <mount point><type><options><dunp><pass>
File system(指定设备名称或者远程的文件系统NFS)
mount point挂载点:创建一个目录或者是已存在的目录,然后挂载文件系统到这个目录,即可访问目录—>访问文件(swap分区没有挂载点)
type:Linux能够支持的文件系统(ext3,ext4,swap,xfs,vfat,nfs等)
options:可以通过man mount查看完整的参数,defaults代表包含了选项rw,suid,dev,exec,auto,nouser和async。
dump:表示将整个内容备份,一般为0不备份,1表示每天备份;2表示每隔一天备份
fsck:一般为0,0表示不自检;1表示首要自检,一般只有根分区挂载点为1;2表示次级自检
报告文件系统磁盘空间使用情况
df命令列出的是文件系统的可用空间
-i:用inode代替块
-l:只显示本地文件系统
-h:以kb,mb,gb显示单位
-T:显示每个文件系统的类型
系统重启,再次查看是否挂载
卸载
umount 挂载点
5. 检查系统识别新的分区
使用以下命令重读分区表
partprobe命令用于重读分区表,当出现删除文件后,仍然占用空间,可以使用partprobe命令在不重启的情况下重读分区
partprobe /dev/sdb #重读磁盘分区表
partx命令用来告诉内核当前磁盘的分区情况
partx -a /dev/sdb # 让内核重读分区表
6. parted命令
超过2TB的磁盘分区,使用parted命令。(小于2TB的磁盘都可以用fdisk分区,但是大于2TB的磁盘,只能用parted命令分区,且转换磁盘为GPT格式)
parted -l 显示所有分区信息
创建完分区进行格式化
7.交换分区
1)什么是swap分区
swap分区是一块特殊的硬盘空间,当实际内存不够用时,操作系统会从内存中取出一部分暂时不用的数据,放在交换内存中,从而使当前程序腾出更多的内存量。使用swap交换分区的作用是通过操作系统的调取,程序可以用到的内存远远超过实际物理内存。但是由于频繁读写硬盘,会降低系统运行效率。
2)swap分区大小,根据物理内存大小和硬盘容量计算
内存小于1G,必须用swap交换分区,提升内存使用量
内存使用过多的应用,使用swap防止内存不足,导致软件崩溃
电脑休眠,内存数据断电丢失,因此将内存数据暂时存入swap分区,电脑休眠恢复后,数据从swap读入内存,继续工作。
centos建议分配swap
内存小于2G,swap分配等同内存大小的空间
内存大于2G,分配2G交换空间
3)创建swap分区
第一步:先分区
第二步:格式化(mkswap命令)
第三步:使用swap分区
有关swap分区的几个命令
激活swap分区:swapon 设备文件名
查看swap空间:free -m
关闭swap空间:swapoff 设备文件名
4)free命令
free命令主要查看内存和swap分区的使用情况。
其中:
total:是指总数
used:是指已经使用的
free:是指空闲
shared:是指共享
buffers:是指缓冲内存数。buffers是给写入数据加速的。buffers是指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少磁盘碎片,以及反复的寻道时间,加速数据写入。
cache:是指缓存内存数,单位KB。cache是给读取数据时加速的。cache是指把读取出来的数据保存在内存中,再次读取,不用读磁盘而直接从内存中读取,加速数据读取过程。
buffer和cache总结
二者都是基于内存的中间层
cache解决时间问题,提高读取速度
buffer解决空间问题,给数据一个暂存空间
cache利用内存提供的高速读写特性
buffer利用内存提供的存储容量
释放缓存区内存
清理pagecache(页面缓存):echo 1 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches=1
清理dentries(目录缓存)和inodes:echo 2 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches=2
清理pagecache、dentries(目录缓存)和inodes:echo 3> /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches=3
上述三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可。
另外可以使用sync命令清理文件系统缓存,还可以清理僵尸(zombie)对象和他们占用的内存。
sync:将内存缓冲区内的数据写入磁盘。
8. 统计文件、目录磁盘使用情况
Linux操作系统文件存取的最小单位是块,且单位是4kb,也就是8个扇区
du命令——报告磁盘空间使用情况
显示所有文件的统计大小 du -ah
单独统计文件大小 du -ah 文件名
统计当前目录下所有文件、文件夹大小,除了*.sh文件 du -ah --exclude=\'*.sh\'
以上是关于Linux磁盘管理与文件系统的主要内容,如果未能解决你的问题,请参考以下文章