磁盘管理、文件系统管理
磁盘管理
磁盘设备
-
机械硬盘(非固态)
-
I/O Ports —– I/O 设备地址
-
块设备:Block 存取单位“块”;(磁盘)
-
字符设备:char 存取单位“字符”;(键盘)
设备文件:关联一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信;
– 设备号码:
-
主设备号 major number;标识设备类型
-
次设备号 minor number;标识同一类设备中的不同设备
Linux系统硬件设备文件储存在/dev目录下
– 硬盘接口:
-
并行{IDE、SCSI}
-
串口{SATA、SAS、USB}
/dev目录下的硬盘名称一般是/sd*(*代表[a-z]);不同分区之间用数字区分,例如:/sda1、/sda2、/sda3….
– 机械硬盘
-
track:磁道
-
cylinder:柱面
-
secotr:扇区 (512byte)
0扇区(mbr)512byte中 446byte是boot loader;
64byte是分区表(所以最多4个分区);
2byte是4个16进制数值(55AA表示前55个已经使用);
扩展:分区是按照柱面划分的,mbr只能识别2T以下的单块硬盘,超过2T需要使用GPT
磁盘分区
-分区工具:fdisk
-
fdisk:
fdisk -l [-u] [device...] { -l:显示磁盘信息;} fdisk内置命令: p -查看磁盘信息; m -打开帮助信息; n -新创建一个分区; d -删除分区; w -保存退出; q -放弃保存退出; l -列出分区ID t -修改ID
分好区以后,内核中不一定能识别到分区,内核没有识别到分区的话无法进行格式化、文件系统等操作;
-
解决
查看内核有无识别到分区: cat /etc/partations 让内核重新扫描识别分区:partx -a /dev/DEVICE -n M:N kpartx -a /dev/DEVICE -f: force ------------以上是centos 6-7 使用----------------- CentOS 5: 使用:partprobe [/dev/DEVICE]
文件系统管理
-
Linux文件系统:ext2、ext3、ext4、xfs、btrfs、reiserfs、jfs、swap
swap:交换分区;用磁盘空间当内存来使用(虚拟内存)
-
扩展:
光盘: iso9660;
windows: fat32、ntfs
网络文件系统:NFS、CIFS
集群文件系统:GF32、OCFS2
分布式文件系统:ceph、moosefs、mgilefs、Glusterfs、Lustre
-日志文件系统
-
日志型文件系统是一种特殊类型的文件系统,它记录一个被称为日志的追踪文件。日志可以让系统能够修复在异常终止时出现的不一致情况。它通过追踪之前提交到主文件系统的更改。在计算机非正常关机的情况下,任何数据丢失都可被重建。因此,这种文件系统不太可能遭受破坏,并且可以使文件系统快速恢复工作。
-
日志型文件系统:ext3、ext4、xfs…..
-
非日志型文件系统:ext2、vfat
-文件系统的组成
-
内核中的模块:ext4、xfs、vfat
-
用户空间的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat
扩展:Linux的虚拟文件系统叫VFS
-创建文件系统
-
查看当前系统上所支持的文件系统类型: cat /proc/filesystems
-
显示分区属性:blkid [DEVICE]
-
mkfs
(1) # mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat (2) # mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 设定卷标 备注: mkfs.FS_TYPE /dev/DEVICE = mkfa -t FS_TYPE /dev/DEVICE 例子: mkfs.ext4 /dev/sdb1 = mkfa -t ext4 /dev/sdb1
-
mke2fs
mke2fs:ext系列文件系统专用管理工具 -t:设置类型 {ext2|ext3|ext4} -b: 设置块大小{1024|2048|4096} 不自己设置默认大小是4096 -L 'LABEL':设定卷标 -j: 相当于 -t ext3 -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小; -N #:为数据空间创建个多少个inode; -m #: 为管理人员预留的空间占据的百分比; -O FEATURE[,...]:启用指定特性 -O ^FEATURE:关闭指定特性 备注:mke2fs -t ext_TYPE = mkfs.ext_TYPE /dev/DEVICE = mkfa -t ext_TYPE /dev/DEVICE 例子: mke2fs -t ext4 /dev/sdb1 = mkfs.ext4 /dev/sdb1 = mkfa -t ext4 /dev/sdb1
-
mkswap
mkswap:创建交换分区 mkswap [options] device -L 'LABEL':卷标 注意:调整其分区的ID为82;
-
e2label
e2label:管理ext系列文件系统的LABEL # e2label DEVICE [LABEL]
-
tune2fs
tune2fs:重新设定ext系列文件系统可调整参数的值 -l:查看指定文件系统超级块信息;super block -L 'LABEL':修改卷标 -m #:修预留给管理员的空间百分比 -j: 将ext2升级为ext3 -O: 文件系统属性启用或禁用 -o: 调整文件系统的默认挂载选项 -U UUID: 修改UUID号;
-
dumpe2fs
dumpe2fs [DEVICE] 查看超级块的详细信息 -h:查看超级块信息
-文件系统检测
-
fsck
fsck: File System CheCk fsck.FS_TYPE fsck -t FS_TYPE -a: 自动修复错误 -r: 交互式修复错误 Note: FS_TYPE一定要与分区上已经文件类型相同;
-
e2fsck
e2fsck:ext系列文件专用的检测修复工具 -y:自动回答为yes; -f:强制修复;
-文件系统挂载
-
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;
-
解除此关联关系的过程称之为卸载;
把设备关联挂载点:Mount Point mount 卸载时:可使用设备,也可以使用挂载点 umount
注意:挂载点下原有文件在挂载完成后会被临时隐藏;
-
挂载方法:mount DEVICE MOUNT_POINT
mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备 mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要挂载的设备; (1) 设备文件:例如/dev/sda5 (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA' (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e' (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs dir:挂载点 事先存在;建议使用空目录; 进程正在使用中的设备无法被卸载; 常用命令选项: -t vsftype:指定要挂载的设备上的文件系统类型; -r: readonly,只读挂载; -w: read and write, 读写挂载; -n: 不更新/etc/mtab; -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能) -L 'LABEL': 以卷标指定挂载设备; -U 'UUID': 以UUID指定要挂载的设备; -B, --bind: 绑定目录到另一个目录上; 注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts -o options:(挂载文件系统的选项) async:异步模式; sync:同步模式; atime/noatime:包含目录和文件; diratime/nodiratime:目录的访问时间戳 auto/noauto:是否支持自动挂载 exec/noexec:是否支持将文件系统上应用程序运行为进程 dev/nodev:是否支持在此文件系统上使用设备文件; suid/nosuid: remount:重新挂载 ro: rw: user/nouser:是否允许普通用户挂载此设备 acl:启用此文件系统上的acl功能 注意:上述选项可多个同时使用,彼此使用逗号分隔; 默认挂载选项:defaults rw, suid, dev, exec, auto, nouser, and async
-
卸载命令:
# umount DEVICE #umount MOUNT_POINT 查看正在访问指定文件系统的进程: # fuser -v MOUNT_POINT 终止所有在正访问指定的文件系统的进程: # fuser -km MOUNT_POINT
-
挂载交换分区:
启用:swapon swapon [OPTION]... [DEVICE] -a:激活所有的交换分区; -p PRIORITY:指定优先级; 禁用:swapoff [OPTION]... [DEVICE]
-
内存空间使用状态:
free [OPTION] -m: 以MB为单位 -g: 以GB为单位
-
文件系统空间占用等信息的查看工具:
df: -h: human-readable -i:inodes instead of blocks -P: 以Posix兼容的格式输出;
-
查看某目录总体空间占用状态:
du: du [OPTION]... DIR -h: human-readable -s: summary
-
文件挂载的配置文件:/etc/fstab
每行定义一个要挂载的文件系统; 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序 要挂载的设备或伪文件系统: 设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs) 挂载选项: defaults 转储频率: 0:不做备份 1:每天转储 2:每隔一天转储 自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1;
命令总结:fdisk, partx, mkfs, mkswap, mke2fs, tune2fs, blkid, dumpe2fs, e2label, fsck, e2fsck,
mount, umount, free, df, du, swapon, swapoff, fuser
文件系统上的其它概念:
-Inode: Index Node, 索引节点
文件名是源数据但是inode不包含文件名
-
地址指针:地址指针储存的大小决定块的大小
-
直接指针:
-
间接指针:
-
三级指针:
inode bitmap:对位标识每个inode空闲与否的状态信息;
– 链接文件:
-
硬链接:
不能够对目录进行; 不能跨分区进行; 指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数;
-
符号链接(软链接):
可以对目录进行; 可以跨分区; 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数; ln [-sv] SRC DEST -s:symbolic link(符号链接) -v: verbose
-
文件管理操作对文件的影响:
文件删除:把inode引用次数降低为0,对应的位图标记为空闲 文件复制:数据的读取、写入 文件移动:不同分区之间移动就是把数据读取出来复制一份写入目标,然后删除源文件; 同分区内改变路径 inode不变;
原创文章,作者:N21_志建,如若转载,请注明出处:http://www.178linux.com/24711