磁盘及磁盘管理:
-
磁盘:
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子卷和目录有何不同?
6、fsck做了哪些工作,为什么要慎重进行?
待搞:
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,则显示其空间使用信息;否则,显示最后一个磁盘上的空间使用信息;