07笔记:磁盘及文件系统管理

磁盘及磁盘管理:

  • 磁盘:

     1、通常理解为外部存储设备,包括:磁带、软盘、光盘、机械硬盘、固态硬盘、u盘等;常用接口有:ide
     	、sata(1.0,2.0,3.0)、scsi(1.0,2.0,3.0)、sas(1.0,2.0),usb(1.0,2.0,3.0,3.1)
     2、机械磁盘的物理组成:盘片、磁头、柱面(cylinder)、磁道(trace)、扇区(sector);
     3、设备文件:关联至一个设备驱动程序,进而通过该文件实现与对应硬件设备通讯;
     4、0扇区(mbr):不属于任何分区,512bytes
     	446字节:boot loader
     	64字节:主分区表(16字节标识一个分区)
     	2字节:定义分区表的有效性
    
  • uefi和bios、mbr和gpt:

  • 磁盘管理工具:

     参考:
     		http://man.linuxde.net/sub/%E7%A3%81%E7%9B%98%E7%AE%A1%E7%90%86		 			  		
     		https://www.toolfk.com/
     fdisk:
     	磁盘分区工具,只能管理不超过15个的分区;不能管理gpt分区,不支持2T以上的大分区;
     	# fdisk -l [/dev/device]:显示磁盘详细分区信息
     	# fdisk [/dev/device]:交互方式对磁盘进行分区操作:
     		n,p,w,l,d,m,q,t
     	#cat /proc/partitions:查看当前内核识别到的分区信息;
     parted:
     	支持ms-doc和gpt,支持非交互式的命令分区工具
     	参考:http://blog.51cto.com/zhangmingqian/1068779
     	#info parted
     sfdisk:
     	不支持gpt和大分区;显示大小、显示和检查分区、调整分区大小
     	参考:http://www.runoob.com/linux/linux-comm-sfdisk.html
     partprobe、partx、kpartx:
     	#partprobe [/dev/devices]:重读所有分区信息
     	#partx:通知内核重读磁盘分区表信息;
     		-:将分区当成磁盘操作;
     		-a:添加指定分区或所有分区;
     		-d:删除指定分区或所有分区;
     		-u:更新指定分区;
     		-l:显示指定磁盘分区信息;
     		-n:[m,n]指定要操作磁盘上的分区编号;
     		-s:显示扇区个数;
     	#partprobe:通知操作系统分区表变更;
     		-s:显示磁盘简要信息(分区格式、分区编号)
     	kpartx:通过分区表创建设备地图;
     		-l  [device]:显示设备地图
     blkid,lsblk,du:
     	blkid [options] /dev/devices:
     		显示块设备的属性:设备名,UUID,subUUID,partUUID,fstype
     		-U:通过uuid定位设备
     		-L:通过label定位设备
     	lsblk [options] [dev/devices]:
     		列出块设备属性:设备名,主次设备号,大小,设备类型,挂载路径;
     	du:估算文件磁盘空间占用;默认仅估算目录的空间占用
     		-h:human-readable;
     		-a:不仅显示目录,而且显示文件的占用空间大小;
     		--apparent-size:显示表明大小(即文件实际大小,非占用的块大小);
     		-c:显示一个总数
    

文件系统:

  • 文件系统类型:

     linux:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap,iso9660
     windows:fat32,ntfs
     unix:FFS,UFS,JFS2
     网络文件系统:nfs,cifs
     集群文件系统:GFS2,OCFS2
     分布式文件系统:ceph,moosefs,mogilefs,Glusterfs,lustre
     日志性文件系统:ext3,ext4,btrfs。。。
     非日志型文件系统:ext2,vfat
    
  • VFS:

     Linux中的虚拟文件系统,为多个不同的文件系统向上提供统一的调用接口;
    
  • 文件系统组成:

     内核中的模块部分:ext4,xfs,vfat等,实现文件系统功能;(要使用先装载)
     用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat等,实现对内核功能的管理;
     查看当前系统支持的文件系统:cat /proc/filesystems;
    
  • 文件系统管理工具:

     文件系统创建:
     	mkfs.fstype:
     		ext2,ext3,btrfs,xfs等
     	mkfs:
     		调用mksf.fstype
     	mke2fs:
     		ext系列文件系统专用命令
     查看和管理:ext系列
     	e2label:
     		改变ext文件系统的label
     	tune2fs:
     		重新设定ext文件系统可调整参数的值:
     			-l:显示超级块信息
     			-L:修改label
     			-O:修改文件系统属性;
     			-o:修改默认挂载选项;
     			-m:修改预留的块百分比;
     			-j:提升ext2文件系统为ext3;(重载文件系统属性为ext3的默认属性)
     			-U:修改UUID
     	dumpe2fs:
     		查看文件系统信息;
     文件系统检查:
     	fsck.TYPE:
     		文件系统检测,每个文件系统只能使用对应的检查工具:如ext2文件系统只能使用fsck.ext2
     	fsck:
     		调用fsck.type进行文件系统检查
     	fse2ck:
     		ext系列文件系统检查
     文件系统挂载:
     	mount:
     		将根文件系统下的某个目录关联至另一个文件系统,该目录成为访问另一个文件系统的入口;
     		mount 【options】device dir
     			device:指明要挂载的设备,可以是:
     				(1)设备文件,如/dev/sdb1
     				(2)UUID,如b81aaa3d-8ff6-40aa-a72f-00cc5f87140d
     				(3)Label,如“TEST”
     				(4)伪文件系统名称,如proc,sysfs,devtmpfs等
     			dir:挂载点,建议空目录
     			options:
     				-t fstype:指明挂载设备上的文件系统类型;
     				-r:readonly,只读挂载;
     				-w:read and write,读写挂载;
     				-n:挂载设备时不记录进/etc/mtab文件;
     				-L label:以label挂载设备
     				-U uuid:以uuid挂载设备;
     				-B,--bind:绑定目录至另一目录上;
     				-o optios:指定挂载选项
     					async:异步模式
     					sync:同步模式(一般不推荐,影响性能)
     					atime/noatime:读取文件时是否更新atime;
     					diratime/nodiratime:读取目录条目时是否更新时间戳;
     					auto/noauto:是否支持自动挂载;
     					exec/noexec:是否支持文件系统上的程序运行为进程;
     					dev/nodev:是否支持在文件系统上使用设备文件;
     					suid/nosuid:是否支持suid权限;
     					remount:重新挂载;
     					ro:只读
     					rw/w:读写
     					user/nouser:是否允许普通用户挂载此设备;
     					acl/noacl:启用或关闭acl功能;
     					defaults:默认挂载选项:rw,suid,dev,exec,auto,nouser,and async
     					Note:上面特性同时使用时,用comma分隔;
     					
     					
     	umount:
     		解除根文件系统下目录和其他文件系统的关联关系;
     	fuser:使用文件或文件结构识别进程
     		-a:显示命令中指定的所有文件;
     		-l:显示所有信号
     		-m:指定文件系统或块设备
     		-u:在每个进程后面显示所属的用户名
     		-k:杀死访问指定文件的所有进程;
     		-i:杀死进程前进行用户确认;
     	Note:
     		1、如挂载目录不为空,挂载后目录下的原文件将被暂时隐藏,卸载后正常显示;
     		2、# mount:读取/etc/mtab中的内容显示至屏幕;
     		3、/etc/mtab:挂载时未指定-n选项时,挂载会记录进此文件;
     		4、/proc/mounts:当前内核识别到的所有挂载设备;
     	mkswap:
     		mkswap /dev/devices,创建交换分区文件系统
     	swapon:
     		swapon /dev/devices,启用设备为交换分区
     			-a:启用所有定义在fatab文件中的交换分区;
     			-p #:定义优先级
     			-s:同cat /proc/swaps
     	swapoff:
     		swapoff /dev/devices,取消交换分区;
     	free:
     		-b|k|m|g:以指定单位显示;
     		-h:human-readable;
     		-t:显示各列的总数
     		-c #:显示#次;
     		-s #:#秒显示一次;
     	du:显示文件空间占用大小
     		-h:human-readable
     		-B【M|k|G】:以指定单位显示
     		--apparent-size:显示文件实际大小;
     		-b:显示文件实际大小且单位为byte;
     		-s:仅显示总数
     	df:显示文件系统空间使用情况
     		-a:显示所有;
     		-B:同“du”用法;
     		-h:human-readable;
     		-t:total;
     		-i:list inodes;
     		-l:仅限本地文件系统;
     		-t:仅显示指定类型的文件系统;
     		-T:显示文件系统类型;		
     挂载配置文件:
     	/etc/fstab,每行定义一个要挂载的文件系统:
     		列1:要挂载的设备或伪文件系统;
     		列2:挂载点;
     		列3:文件系统类型;
     		列4:挂载选项;
     		列5:转储频率(0:不转储;1:每天一次;2:每2天一次;。。。)
     		列6:启动后自检(0:不自检;1:首先自检,一般只有rootfs才用1;。。。)
    
  • ext2文件系统:

     inode、block、bmap,imap
     文件链接:
     	硬链接:
     		不能用于目录;
     		不能跨文件系统;
     		两个文件的指针指向同一个inode;
     	软链接:
     		可以用于目录;
     		可以跨文件系统;
     		链接的inode中记录的不是块位置,而是一串路径字符;
     	创建链接:
     		ln source 【target】
     			-s:指定创建软链接;
     			-v:详细信息
     			--backup ,-b:对一个或多个文件进行备份(创建硬链接的方式);
     			-f:如果目标文件存在则替换(适用于硬链接);
    
  • btrfs文件系统:

     简介:
     	(B tree fs,Butter fs,Better fs)oracle,2007,GPL,CoW,用于长久替代ext3/ext4,xfs等文件系统;
     特性:
     	1、多物理卷支持:btrfs可由多个底层物理卷组成,支持raid(0,1,5,6,10,single),支持联机‘添加’、‘移除’、‘修改’;
     	2、快照功能:支持快照,支持快照的快照(类似增量备份);
     	3、支持CoW(写时复制):复制、更新及替换指针,而非‘就地’更新;
     	4、支持子卷:sub_volume;
     	5、透明压缩机制:用户可见为原文件,存储时为压缩存储,读取时即时解压缩;支持lzo、zlib压缩机制;
     	6、支持数据及元数据校验码;
     管理工具:
     	创建文件系统:
     		mkfs.btrfs 【options】device1 device2 。。。
     			-b size:指定文件系统大小;
     			-L label:指定卷标;
     			-d  raid:	指定数据存储格式,raid0,1,5,6,10,single等;
     			-m raid:指定元数据存储格式,同上;
     			-f:强制创建
     			-O feature:指定开启某特性;
     			-O list-all:列出所有btrfs支持的特性;
     	挂载文件系统:
     			mount -t btrfs -o feature /device mount-point
     			device:可以是构成btrfs文件系统的任意块设备,挂载任意块设备均为挂载整个btrfs文件系统;
     			挂载时指定透明压缩机制:mount -o compress={lzo|zlib} /device mount-point;
     	btrfs命令:有众多子命令,使用时子命令及子子命令可简写;
     		filesystem、device、balance、property、subvolume、check、rescue、replace、restore等
     		filesystem子命令:
     			df mountpoint:显示指定btrfs文件系统的信息;
     			usage mountpoint:同df,root用户会显示更详细信息;
     			show 【mountpoint】:显示所有或指定btrfs文件系统的device信息;
     			resize mountpoint:调整btrfs文件系统的大小;
     			sync mountpoint:同步缓存中的数据到btrfs文件系统中;
     			defragment mountpoint:文件系统碎片整理;
     		
     		device子命令:
     			add:添加设备到btrfs系统中;-f,强制添加已有文件系统的设备;
     			remove|delete:从btrfs系统中移除设备;(会自动迁移数据到其他设备)
     			stats:查看btrfs系统中设备的错误信息状态;
     			usage:查看btrfs系统中设备空间的分配状况;
    
     		balance子命令:
     			start:开始balance任务;
     				-d【filters】:修改数据的raid级别;
     				-m【filters】:修改元数的raid级别;
     				-s【filters】:修改系统数的raid级别;
     				-f:强制缩减metedata的完整性(raid1到single时可用);
     				-v:显示详细信息;
     			cancel:结束balance任务;
     			pause:暂停balance任务;
     			resume:恢复暂停的任务;
     			status:运行中或暂停的balance任务的状态;
     		
     		propert子命令:获取、设置或列出指定btrfs对象的属性;
     			list:列出可设置的属性列表;
     			get:获取所有或某个属性;
     			set:设定属性值
     		
     		subvolume子命令:
     			子卷和目录的区别(自):
     				1、目录无法被当做设备挂载;
     				2、子卷可以更灵活配置,如raid,大小等;
     				3、对子卷可以进行方便地做快照;
     			create :创建子卷;
     			delete:删除子卷;
     			list:列出指定btrfs文件系统的所有子卷;
     			show:显示指定子卷的信息;
     			snapshot:创建快照卷;例:
     				btrfs sub snap -r /a/b /a/b.snap:对子卷b创建b.snap快照卷
     				NOTE:copy --reflink a a.snap,对文件a创建快照a.snap;
    
     		btrfs-convert:btrfs文件系统和其他支持的文件系统之间转换;
     			-r:将btrfs文件系统转换回原来的文件系统;
     		check子命令:btrfs文件系统检查;
     		rescue:救援一个已损坏的btrfs文件系统;
     		replace:替换btrfs文件系统中的磁盘并按raid结构复制数据到新磁盘;
     		restore:恢复一个已损坏的btrfs文件系统,较rescue是更好的选择;
    

问题:

1、mount挂载时,-n选项无效,挂载还是记录进/etc/mtab文件中?
2,删除分区后,磁盘上还保留有文件系统信息,重新分区后,超级快信息未破坏时,可以直接挂载使用分区,
	并读出之前的一些文件,不太安全,如何解决?
3、由两个100G的磁盘组成的btrfs文件系统,data 为raid0;分配空间为200G时显示可用空间为198G
	btrfs fi resize -100G命令提示错误,btrfs fi resize -50G命令正确,显示空间150G,可用
	空间98G,为什么?
4、如何在btrfs文件系统建立后,修改data、metadata或system的raid级别?
5、btrfs子卷和目录有何不同?

待搞:

1、熟悉各常用文件系统特性及管理工具(xfs、btrfs、rieserfs、vfat)
2、物理扇区、逻辑扇区、块、簇、磁盘IO、uefi、bios、mbr、gpt、msdos的概念
3、根文件系统详解:单独一章
	a、各目录作用
	b、各目录下重要文件详解

练习:

1、创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为test,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项;
2、创建一个5G的文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3;
3、写一个脚本,完成如下功能:
	a,列出当前系统识别到的所有磁盘设备;
	b,如磁盘数量为1,则显示其空间使用信息;否则,显示最后一个磁盘上的空间使用信息;

猜你喜欢

转载自blog.csdn.net/a904441024/article/details/86516467