Linux磁盘及文件系统管理初步
(一)Linux系统管理
- 磁盘分区及文件系统管理
- RAID
- LVM
- 网络属性管理
- 程序包管理
- sed and awk
- 进程查看和管理
- 内核管理(编译和安装)
- 系统启动流程
- 定制、编译内核、busybox
- 系统安装:kickstart,dhcp,pxe
- shell脚本编程
(二)磁盘分区及文件系统管理
- 计算机组成:CPU,Memory(RAM),I/O
- 对于服务器来说,I/O主要包括:Disks,EhterCard
- Disks:持久存储数据
- 磁盘的接口类型
- IDE(ata,二者不完全等同):并口,133MB/s;iops:100次
- SCSI:并口,UltraSCSI320:320MB/s; UltraSCSI640:640MB/s;iops:150次
- SATA:串口,6gbps,处以8后单位才和IDE一致,一个是字节,一个是位;iops:100次
- SAS:串口,6gbps;iops:150次
- SATA是IDE的升级版
- SAS是SCSI的升级版
- IDE和SATA设计为桌面应用,在服务器上使用很快会损坏
- USB:串口,3.0:480MB/s
- 并口:同一线缆可以接多块设备
- IDE:两个,主,从
- SCSI
- 宽带:16个设备-1,因为有一个接口被使用
- 窄带:8个设备-1
- 串口:同一线缆只能接一个设备
- 硬盘的存储机制
- 机械硬盘
- 固态硬盘:PCI-E接口的固态硬盘iops可以达到几十万,高端服务器使用;普通桌面固态硬盘使用SATA接口,速度比机械硬盘提高三到五倍
- 机械硬盘工作原理
- track/磁道:同心圆
- 平均寻道时间:5000rpm,7200rpm,10000rpm,15000rpm;rotation per minute
- 旋转如此之快,必须真空封装,否则一粒灰尘就像巨石一样
- sector/扇区:512bytes
- cylinder/柱面:像一个薄薄的铁桶
- 分区的划分基于柱面。越靠外的分区性能越好,因为单位时间内划过的距离大,C盘在最外层。
- Linux哲学思想:一切皆文件
- 设备类型
- 块设备(block):随机访问,数据交换单位是“块”
- 字符设备(character):线性访问,数据交换单位是字符
- 设备文件
- /dev
- 关联至设备的驱动程序;设备的访问入口
- 没有大小,只有设备号
- major:主设备号,区分设备类型;用于标明设备所需要的驱动程序
- minor:次设备号,区分同种类型下的不同设备;是特定设备的访问入口
- mknod命令:创建块或字符的特殊文件(设备文件,虽然二者不完全等同)
- mknod [OPTION]... NAME TYPE [MAJOR MINOR];TYPE指块(b)还是字符(c)。例如:mknod /var/testdev c 111 1
- -m MODE:创建后的设备文件的权限
- mknod [OPTION]... NAME TYPE [MAJOR MINOR];TYPE指块(b)还是字符(c)。例如:mknod /var/testdev c 111 1
- 设备文件名:由“ICANN/互联网名称地址分配机构”决定
- IDE:/dev/hd[a-z]
- SCSI, SATA, USB, SAS:/dev/sd[a-z]
- 分区是设备名加数字,例如:/dev/sda1
- 注意:CentOS 6和7将硬盘设备文件统统标识为sd
- 以上命名在每次开机时,顺序有可能变,因此引用设备采用下面的方式
- 引用设备的方式
- 设备文件名
- 卷标
- UUID
- 磁盘分区两种类型:MBR,GPT
- MBR:Master Boot Record/主引导记录,编号为0的扇区,512bytes。分为三个部分
- 前446bytes:bootloader,引导启动操作系统的程序
- 64bytes:分区表,每16bytes标识一个分区,所以一共只能有四个分区
- 可以再拿出一个分区包含一个新分区表
- 主分区,扩展分区,逻辑分区
- 4个主分区
- 3个主分区1个扩展分区,扩展分区里包括N个逻辑分区
- 2bytes:MBR区域的有效性标识:55AA表示有效,否则为无效
- 主分区和扩展分区的标识:1-4,如sda1
- 逻辑分区只能从5开始,即使1-4没用完
- GPT:课外作业
- MBR:Master Boot Record/主引导记录,编号为0的扇区,512bytes。分为三个部分
- fdisk:分区命令
- 查看磁盘的分区信息:fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况
- 管理分区:fdisk device
- fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘,直到使用w命令保存到磁盘上
- 子命令:
- m:获取帮助
- n:添加新分区
- d:删除分区
- t:改一个分区的system id
- 主分区:83
- 扩展分区:5
- 逻辑分区:82
- l:列出已知的分区类型
- p:显示现有分区信息
- w:保存退出
- q:不保存退出
- 注意:在已经分区,并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建后无法直接直接识别
- 查看内核是否已经识别新分区的方法是:cat /proc/partitions
- 通知内核强制重读磁盘分区表
- CentOS 5:partprobe [device];如果device省略,则强制重读所有设备的分区表
- CentOS 6/7:partx,kpartx
- partx -a [device]
- kpartx -af [device
- 可能需要多次通知强制读取才能有效
- 其它分区创建工具:parted,sfdisk
- 设备类型
实际操作的一个列子:
第一步:fdisk /dev/sda
第二步:键入“P”,分区信息
第三步:键入“n”,添加一个新分区
- 自动给定分区编号(5已经有了,所以新分区编号为6)
- 指定起始扇区,直接按回车表示使用默认值
- 指定扇区大小(结束扇区):+size。直接按回车表示使用默认值
- 再次键入“P”查看一下
- 键入“d”
- 键入“6”,把刚才的分区删除
第四步:再次键入“n”,添加一个新分区
第五步:再次键入“n”,添加一个新分区
第六步:键入“w”,保存退出
-
-
- 文件系统
- 格式化
- 低级格式化:出厂时,由硬件生产商进行的,在分区之前进行,作用是划分磁道
- 高级格式化:在分区之后对分区进行,不是对磁盘进行,作用是创建文件系统
- 元数据区,数据区
- 元数据区:
- 文件元数据:inode(index node)
- 大小,权限,属主属组,时间戳,数据块指针(限制了文件的大小),等等。但是不包含文件名。
- 因为inode大小都是一样的,所以高级格式化的时候,会直接创建好所有的inode,只不过都是空的
- 文件元数据:inode(index node)
- 数据区:包含了若干个block块
- 每个文件只能包含整数个block,会有一定的浪费;这就是为什么文件的总大小和使用的总空间有时候会不一致;
- 如果文件包含的block都是不连续的,说明碎片很多
- 数据区里需要有一段预留空间,供管理人员移动文件等管理操作时使用
- 不同的文件系统设计,导致了各个的特点不同
- 块和inode的比率,需要根据经验值来判断,让浪费不要太多
- 符号链接文件:元数据中,数据块指针里存储的是真实文件的访问路径
- 设备文件:元数据中,数据块指针里存储的是设备的主设备号和次设备号
- 元数据区:
- bitmap index / 位图索引:在元数据区,有两段存储空间,每一位对应一个inode或者block,表示该inode或者block是否被使用
- 实际中,每个分区被分成了很多个块组,每个块组包含自己元数据区和数据区,
- 块组信息存储在超级块中,超级块和它的冗余备份分别存储在块组中
- 每个块组的元数据区中有块组描述符 / group descriptor,记录了该块组的信息
- 位图索引都是在块组级别实现的
- ls -i:查看文件的inode编号
- 目录机制:
- 目录也是文件
- 数据块中存储的是内部的一级子目录和文件对应的inode
- VFS:virtual file system,屏蔽底层不同的文件系统的差异
- 各种文件系统
- Linux的文件系统
- ext2,ext3(CentOS 5),ext4(CentOS 6),该系列的文件系统表现不佳,接近于废弃状态
- xfs(CentOS 7),企业级的64位文件系统,单个文件大小没有上限
- reiserfs,反删除功能非常好,很容易将删除的文件找回来。但是领导者入狱,所以江河日下。
- btrfs:目前仍然处于测试实验型阶段
- 光盘的文件系统:iso9660
- 网络文件系统:nfs,cifs
- 集群文件系统:gfs2,ocfs2
- 内核级分布式文件系统:ceph
- windows文件系统:vfat,ntfs
- 伪文件系统:proc,sysfs,tmpfs,hugepagefs
- Unix文件系统:UFS,FFS,JFS
- 交换文件系统:swap(虚拟内存和真实内存进行数据交换时使用)
- 用户空间的分布式文件系统:mogilefs,moosefs,glusterfs
- Linux的文件系统
- 文件系统管理工具
- 创建文件系统的工具
- mkfs
- 具体实现各不相同,mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat...
- 或者统一使用mkfs -t命令,例如mkfs -t ext2 /dev/sda3
- mkfs
- 检测及修复文件系统的工具
- fsck
- fsck.ext2, fsck.ext3...
- fsck
- 查看文件系统属性的工具
- ext系列文件系统:dumpe2fs,tune2fs
- 其它各个文件系统工具各不相同
- 调整文件系统特性的工具
- ext系列文件系统:tune2fs
- 其它各个文件系统工具各不相同
- 创建文件系统的工具
- journal/日志
- 文件系统可以分为有日志的文件系统和无日志的文件系统
- ext2无日志,其它linux的文件系统都有日志
- 日志原理是,除了元数据区和数据区,再划分一个日志区,在创建一个文件的时候,先把元数据放到日志区,如果创建成功,再把元数据移到元数据区。如果中间出现断电等问题,查看日志区即可知道哪些文件的创建有问题
- 文件系统可以分为有日志的文件系统和无日志的文件系统
- 链接文件:访问同一个文件的不同路径
- 硬链接:指向同一个inode的多个文件路径
- 目录不支持硬链接,避免循环链接
- 硬链接不能跨文件系统
- 创建硬链接会增加inode的引用计数
- 创建方式:ln SourceFile LinkFile
- -v:verbose,显示过程
- 软链接/符号链接:指向一个文件路径的另一个文件路径;即inode的数据指针里存放了一个字符串(一个路径)
- 软链接文件与源文件是两个独立的文件,各自有自己的inode
- 支持对目录创建符号链接
- 可以跨文件系统
- 删除软链接文件不影响源文件;但删除源文件,软链接会变成无效链接
- 创建软链接不会增加源文件inode的引用计数
- 文件大小为其指向的源文件路径字符串的字节数
- 软链接文件的权限通常为777,但是这不是源文件的权限
- 创建方式:ln -s SourceFile LinkFile
- -v:verbose,显示过程
- 硬链接:指向同一个inode的多个文件路径
- 格式化
- 文件系统
-