磁盘及文件系统管理初步与进阶(重点内容)
磁盘分区及文件系统
linux系统管理
磁盘分区及文件系统管理:分区工具
linux磁盘及文件系统管理
整个操作系统的硬件组成部分,最底层是硬件设备,计算能力得以运行的最根本的基础。 计算机的五大基本部件:cpu,运算器,控制器被整合到一起,由一个硬件部件来提供。 存储器(主存rom可编址的存储单元)。主板上有cpu插槽和内存设备,cpu需要与内存设备通信,所以二者之间需要线缆通信,通常称线缆为前端总线。 多个硬件之间需要通信需要线缆。还有很多io设备,都是用来实现完成数据的输入输出。 在终端的io设备中,交互式接口有四个:1、磁盘设备(辅存ram,用来实现持久存储,因为断电后内存的数据就消失了) 2、网卡设备(重要的io设备,向外提供设备的基本的输入输出口)磁盘设备和网卡设备是io设备中最常见的两个设备,这两个io设备既能输入又能输出。 交互式接口还有另外两个设备:1、显示器。2、键盘。这么多io设备需要bas总线连接起来。 cpu的连接机制一并连到北桥(高速),其他高速io设备也连到北桥汇总以后连到cpu上由cpu进行处理。还有其他更慢的io设备连到南桥(慢速),再连到北桥,最后连到cpu上由cpu处理。 cpu要和其他显卡和硬盘设备打交道,首先cpu需要事先向这个设备发送控制指令,读请求或者写请求有cpu的控制器来完成。接着cpu还需要向内存上定位每一个可用的空间。 寻址(地址总线),发控制命令(控制总线),数据存取(数据总线),这三类总线是通过一组线缆实现的————总线机制。在某一时刻只能完成一种功能。每一个io设备都连到南桥或北桥。 将来需要预留空间进行扩展,预留pca槽来实现。主要描述的是硬盘接口,实现数据传输的方式不一样。cup怎样实现与不同的通信设备进行交互的。 每一种io设备和cpu通信时,需要槽来实现,这个槽叫控制器(翻译官),作用:把cpu说得通的话翻译为线缆能够传输的,并且让io设备控制芯片能够听懂的语言。 cpu想读硬盘里的数据,需要驱动硬盘里的马达来读取硬盘里的数据,发控制指令。 了解磁盘的接口,如何识别硬盘设备的
计算的五大设备:
CPU、memory(RAM),各种I/O I/O:Disks,Ehtercard(以太网) Disks:实现持久存储数据(辅助存储) 磁盘接口接口类型: IDE(ata):并口总线,133MB/s(并行) SCSI:并口,Ultrascsi320,320MS,UltraSCSI640,640MB/S SATA:串口,6gbps(按序列)速度快 SAS:串口,6gbps USB:3.0串口,480MB/S 并口:同一线缆可以接多块设备; IDE:两个,主,从 SCSI: 宽带:16-1 可以接十五个设备 窄带:8-1 可以接七个设备 串口:同一线缆只能接一个设备;接多个设备只能提供多个线缆 iops:io per second,测试硬盘速度的,io能力 硬盘:机械硬盘,固态硬盘(可以理解为内部是多个并行存取的优盘);接口都是一样的 机械硬盘工作原理: 磁道:真空封装马达带动的弹片,磁性弹片,固定的轨道实现数据的存取。弹片上从外到内有很多轨道,叫作磁道。每一个圆的半径都不一样,每一个圆存储的大小都不一样。磁头,在磁盘上悬浮一个磁头,只有几个微米的间距,读取磁性材料中所存储的数据,也能保存。每一个弹片每一面都有一个磁头,一共四个磁头,固定在同一个机械臂上。机械臂的转动来定位磁道,定位完以后,等待磁盘选择。 第一步,挪动磁头,定位磁道 第二步,等待数据转过来。 整块磁盘读数据都要这么做 机械硬盘: track:磁道 sector:扇区,512bytes cylinder:柱面,几个磁头固定在同一个机械臂上,在某一时刻,不同盘面上的同一个编号的磁道就叫一个柱面。 重点:分区划分基于柱面:越外层性能越好,速度越快 平均寻道时间: 5400rpm:多少转每分钟,台式机7200rpm,10000rpm,150000rpm。真空封装的。不能震动。 不能用一个磁道一个磁道存储,这样很难对数据进行管理,而且容易浪费空间,所以把每个磁道划分成扇区。
linux的哲学思想:一切皆文件; 设备类型: 块(block):随机访问,数据交换单位是“块”; 字符(character):线性访问,数据交换单位是“字符” 设备文件:FHS /dev 设备文件:作用是将设备关联至其的驱动程序(任何时候打开这个设备文件,就相当于是打开这个设备的驱动程序);设备的访问入口; 设备号: major:主设备号,区分设备类型;用于标明设备所需要的驱动程序; minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口; mknod命令:创建设备文件 make block or character special files 创建块设备或字符设备 mknod [OPTION]... NAME TYPE [MAJOR MINOR] 设备文件 类型 [主或次] 例如:mknod /dev/testdev b 111 1
-m MODE:创建后的设备文件的访问权限; 调用用来修改系统调用来实现的 设备文件名:ICANN(互联网名称分别机构) 磁盘: IDE:/dev/hd[a-z] 设备文件再dev下hd命名 例如:L/dev/hda,/dev/hdb,老式的一般四个盘 SCSI,SATA,USB,SAS:/dev/sd[a-z] 分区: /dev/sda#: /dev/sda1.. 注意:centos 6和7通通将硬盘设备文件标识为/dev/sd[a-z]# 引用设备的方式: 设备文件名 卷标 UUID
磁盘分区:
MBR和GPT MBR:0 sector(0磁道0扇区) Master Boot Record:主引导机构 每一个扇区512bytes分为三部分 446bytes:bootloader,程序,引导启动操作系统的程序; 64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区; 4主分区 3主1扩展: n逻辑分区 2bytes:当前MBR区域的有效性标识;55AA表示为有效;否则无效 主分区和扩展分区的标识:1-4 逻辑分区:5+ 即使主分区只用了1个,逻辑分区也只能从5开始 四个主分区中拿出一个出来,不用来标识份分区,而用来指向另外一个存储空间。 当前的分区表,一共只有64bytes,最多只能划分四个分区。500g的硬盘,一个分区100个,剩下100g就无法使用了。不能被分区,空间就浪费了。所以可以,最后一个主分区用来标识指向磁盘上的某一段空间,把这段空间当做一个新的分区表。里面可以保留很多分区,这个分区就叫做扩展分区,整个剩余的空间都可以划分给扩展分区,扩展分区不能直接使用,需要逻辑分区。
分区管理命令:fdisk命令(很危险,不要在生产环境上随便使用)
1、查看磁盘的分区信息: fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况; 管理磁盘分区表
每一个扇区是512bytpe字节,扇区大小,io大小都是512字节,磁盘标签是dos,123是主分区,4是扩展分区,boot下面有个*号,是引导分区,意思是操作系统在这个分区上。 start:centos6标识从哪个柱面开始,到哪个柱面结束 centos7显示是从哪个扇区开始,到哪个扇区结束 block:标识一个扇区上有多少个块 id:表示类型,linux正常的分区都是83,扩展分区是5,交换分区是82 2、管理分区 fdisk device fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上; 常用命令: n:创建新分区 d:删除已有分区 t:修改分区类型 l:查看所有已知ID w:保存并退出 q:不保存并退出 m:查看帮助信息 p:显示现有分区信息
示例:目前只能在逻辑分区里面进行分区操作了
n是新建一个分区
创建一个6分区,逻辑分区的话会自动指定,如果是主分区,我们需要自己指定
d删除分区
从sda5的end开始算,到sda4的end之间的空间都可以
cat /proc/partitions 这里保存了硬件上的所有分区
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别; 查看:cat /proc/partitions 通知内核强制重读磁盘分区表: centos 5:partprobe[device] centos 6或7:partx,kpartx partx -a [device] kpartex -af[device] 一次不成,可能需要执行两次或更多 分区创建工具:parted,sfdisk;
注释:分区创建完以后就可以在分区上创建文件系统了。
创建文件系统:
格式化:低级格式化(分区之前进行,划分磁道)、高级格式化(分区之后对分区进行,创建文件系统) 元数据区,数据区(文件系统的基本管理法则) 元数据区: 文件元数据:inode(index node)节点,每一个文件的inode格式都是一样的,但里面的数据不一样。低级格式化已经把元数据区、多少个inode都划分好了。只是inode里面是空的,只有创建文件时,里面才会有数据。不同的文件系统的inode大小不一样。 大小、权限、属主属组、时间戳、数据块指针等等。就不包含文件名,因为文件名是在目录上存放的 符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;不占据磁盘块 设备文件:存储数据指针的空间当中存储的是设备号(major,minor) 找数据的时候,磁盘块和inode都有索引,0表示磁盘块空闲,1表示已用。按位索引,称为bitmap index:位图索引 数据区:在数据区里划分成一个个块,整个空间被划分成磁盘块,通过元数据里的数据库指针,找到对应的数据区,从而才能读到文件的内容 目前真正的磁盘分区:文件系统,首先先划分成一个个独立的逻辑单位,用来分组存放磁盘块,每一个块组是一个自治区。,独立管理数据块。每一个独立的块组,都有一个元数据区。超级块:对数据块进行统计一共多少个块组,每一个块组从哪开始,到哪结束的一小块区域。超级块至关重要。超级块就是某个块组。 块组,首先先划分块,然后在众多块之间开始切割谁是数据,谁是元数据。众多块中有一些是超级块。每一个块组内部,有块组描述符,用来描述这一个组,块组描述符里表示从哪个块开始,到哪个块结束,块组内部有哪些inode,有多少block,每一个inode中有哪些是已用,哪些未用。位图索引。而超级块是用来管理所有组的。
文件元数据索引inode标号,不是inode本身
查看inode里的数据
文件名在目录上,目录也是一个文件
以下操作比较独特
内核启动完以后就要启动根,假如要找/var/log/messages下的文件。路径名怎么映射
通过inode,找到文件,再找inode不停的映射。每次这个找太慢,每次找完以后都会缓存下来。
buffers和cached用来缓存数据和元数据的,二者是分开存放的
VFS:Virtual File Eystem(虚拟文件系统) 当两个层次之间不衔接时,加一个中间层。程序员,很多文件系统。有一个全能的翻译官,在二者之间不衔接时加一个中间层,中间层向上所输出的接口是整洁而统一的,程序员只要调用vfs所调用的接口就可以,这一层就叫做虚拟层。任何两个系统之间不能衔接时都可以加一个中间层来解决。 linux的文件系统:ext2、ext3、ext4、xfs(centos7),reiserfs,btrfs, 光盘文件系统:iso9660 网络文件系统:nfs,cifs 集群文件系统:gfs2,ocfs2 内核级分布式文件系统:ceph windows的文件系统:vfat,ntfs 伪文件系统:proc,sysfs,tmpfs,hugepagefs Unix的文件系统:UFS,FFS,JFS 交互文件系统:swap(现代内存系统必有的,虚拟内存系统) 用户空间的分布式文件系统:mogilefs,moosefs,glusterfs
文件系统管理工具:
创建文件系统工具:创建文件系统会损坏原有的文件系统 mkfs mkfs.ext2(无日志),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat... 检测及修复文件系统的工具 fsck fsck.ext2,fsck.ext3 查看其属性的工具 dumpe2fs,tune2fs 调整文件系统特性: tune2fs
链接文件:访问同一个文件不同路径: 硬链接:指向同一个inode的多个文件路径,硬链接和原文件的大小是一样的 特性: (1)目录不支持硬链接; (2)硬链接不能跨文件系统; (3)创建硬链接会增加inode引用计数; 创建: ln src(原文件) link_file(链接文件)
不能对目录进行硬链接
符号链接(软链接):指向一个文件路径的另一个文件路径; 简单理解:元数据该放指针的地方放了另外一个字符串,这个字符串就是查找文件真正指向的路径。 特性: (1)符号链接与文件是两个人各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加引用计数; (2)支持对目录创建符号链接,可以跨文件系统; (3)删除符号链接文件不影响原文件;但删除原文件,符号指定的路径及不存在,此时会变成无效链接; 注意:符号链接文件的大小是其指定的文件的路径字符串的字节数; 创建: ln -s src(原文件) link_file(链接文件) -v:verbose(显示过程)
回顾:磁盘、磁盘分区、文件系统
需要外部的存储设备(辅存),主要指磁盘设备 centos 6,7:/dev/sd[a-z]# 创建删除管理分区:fdisk(主要),parted,sfdisk 创建文件系统: linux文件系统类型:ext2,ext3,ext4,xfs,reiserfs,iso9660,swap 文件系统的组织结构中的术语: block groups(块组,内部分为元数据区和数据区),block(磁盘块),inode table(存放inode),inode bitmap(哪些inode已用,哪些inode未使用),block bitmap(哪些块可用和不可用),superblock(有哪些块组)gdt(块组描述符)
磁盘和文件系统管理
centos6当中 lsb_release:查看发行版本 cat /etc/issue:当前 uname -r :看内核的版本
如何手动调整分区类型: 把新分区弄成swap类型
文件系统管理工具: 创建文件系统工具 mkfs mkfs.ext2(无日志),mkfs.ext3,mkfs.ext4,mkfs.exts,mkfs.vfat... 检测及修复文件系统的工具 fsck fsck.ext2,fsck.ext3 查看其属性的工具 dumpe2fs,tune2fs 调整文件系统特性: tune2fs 内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统管理工具:由用户空间的应用程序提供 ext系列文件系统的管理工具: mkfs.ext2(没有日志),mkfs.ext3,mkfs.ext4(建议使用) 创建方法:mkfs.ext2 分区 提醒:格式化化操作会损坏磁盘上的所有数据,慎重操作 注意:mkfs -t ext2 =mkfs.ext2
查看对应文件系统的tpye,还有一个随机的UUID
ext系列文件系统专用管理工具:mke2fs mke2fs [option] device -t {ext2|ext3|ext4}:指明要创建的文件系统类型 mkfs.ext4=mkfs -t ext4=mke2fs -t ext4 -b {1024|2048|4096}:指明文件系统的块大小;
-L LABEL:指明卷标;
-j:创建有日志功能的文件系统ext3; mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3 -i:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个inode -N #:直接指明要给此文件系统创建的inode的数量; -m #:指定预留的空间,百分比;直接写数字,百分之三就直接写3 -O FEATURE:以指定的特性创建目标文件系统 -O [^]FEATURE:取消以指定的特性创建目标文件系统 e2label命令:卷标的查看与设定 查看:e2label device 设定:e2label device LABEL
tune2fs命令:查看或修改ext系列的某些属性 adjust tunable filesystem paramenters on ext2/ext3/ext4 filesystems; 注意:块大小创建后不可修改; tune2fs [options] device -l:查看超级块的内容;
修改指定文件系统的属性; -j:ext2 -> ext3(升级)
-L LABEL:修改卷标; -m #:调整预留给管理员的空间百分比;
-O [^]FEATHER:开启或关闭某种特性; 例如:取消日志功能,还有恢复日志功能
-o [^]mount_options:开启或关闭某种默认挂载选项 acl ^acl dumpe2fs命令:显示ext系列文件系统的属性信息 dumpe2fs [-h] decice
用于实现文件系统检测的工具 因进程意外中止或系统崩溃等,原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行 ext系列文件系统检测的专用工具: e2fsck:check a Linux ext2/ext3/ext4 file system e2fsck [options] device -y:对所有问题自动回答yes; -f:即使文件系统处于clean状态,也要强制进行检测;
fsck:check and repair a linux file system -t fstype:指明文件系统类型; fsck -t ext4=fsck.ext4 -a:无需交互而自动修复所有错误;(不建议使用) -r:交互式修复 提醒:格式化操作会破坏原有的所有数据,慎重操作 centos 6如何使用xfs文件系统: 联网的情况下直接输入:#yum -y intall xfsprogs 在教室里事先: #cd /etc/yum.repos.d/ #wget http://172.16.0.1/centos6.7.repo #mv centos-base.rep 创建:mkfs.xfs 检测:fsck.xfs blkid命令: blkid device:查看设备信息 blkid -L LABEL:根据LABEL定位设备(根据卷标查找对应的设备) blkid -U UUID:根据UUID定位设备
swap文件系统: linux上的交换分区必须使用独立的文件系统; 且文件系统的system ID必须为82; 创建swap设备:mkswap命令 mkswap [option] device -L LABEL:指明卷标 -f:强制
windows无法识别linux的文件系统:因此,存储设备需要两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统:fat32(vfat); #mkfs.vfat device
要明确理解一个概念:对linux系统来说,硬盘上有四个分区,这四个分区abcd该怎么都能访问到。只有一个是根,假如a是rootfs结构,这个分区就作为了根。根下的为此使用的mnt,与b分区建立关联关系。mnt作为其他分区入口的目录,一定要在前一个系统上,mnt被称为挂载点。b分区是挂载设备。mnt在a上面,a.txt在b上面。访问mnt时,自动不在a分区,而是作为b分区的入口,这个过程就叫挂载。尽量从a分区开始挂载。
文件系统的使用:
首先要“挂载”:mount命令和umount命令 挂载主要用到两个组件,一个是挂载点,一个是要挂载的设备。通常只把设备挂载到哪个挂载点上。通过挂载点,可以访问被挂载的设备上的文件。每一个文件系统的根,本身就有一个目录。 根文件系统之外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此目录即为所谓的挂载点,这个关联操作过程即为挂载; 挂载点:mount_point,用于作为另一个文件系统的访问入口; (1)事先存在; (2)应该使用未被或不会被其他进程使用到的目录; (3)挂载点下原有的文件将会被隐藏; mount命令:
mount会显示所有已挂载的系统
centos7上除了正常的挂载系统,伪挂载系统,还有很多cgroup系统
基本用法:
挂载后,目录里本身的文件都会被隐藏。在mnt下新建一个fstab文件,在把挂载点卸载,进/mnt下会发现fstab文件已经没了,因为这个文件在挂载点的分区上,即sda7上。再挂载上,就会再出现,无论挂载到哪个路径上。
mount [-nrw] [-t vfstype] [-o options] device dir 命令选项: -r:readonly,只读挂载;整个文件系统都是只读的,无法向里面写文件
-w:read and write:读写挂载; -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性 -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型; -L LABEL:挂载时以卷标的方式指明设备; mount -L LABEL dir(要挂载的目录)
-U UUID :挂载时以UUID的方式指明设备; mount -U UUID dir(要挂载的目录)
-o options:挂载选项,挂载时文件系统的特性 sync/async:同步/异步操作;一般异步操作好。 atime/noatime:文件或目录在被访问时是否更新其访问时间戳,不更新系统会好很多 diratime/nodiratime:目录在被访问时是否更新其访问时间戳; remount:重新挂载; acl:支持使用facl功能; #mount -o acl device dir #tune2fs -o acl device
ro:指读 rw:读写 dev/nodev:此设备上是否允许创建设备文件; exec/noexec:是否允许运行此设备上的程序文件; auto/noauto: user/nouser:是否允许普通用户挂载此文件系统; suid/nosuid:是否允许程序文件上的suid和guid特殊权限生效; defaults:Use default options;rw,suid,dev,exec,auto,nouser,async,and relatime 一个使用技巧: 可以实现将目录绑定至另一个目录上,作为其临时访问入口; mount --bind 源目录 目标目录 查看当前系统所有已挂载的设备: #mount #cat /etc/mtab #cat /proc/mounts 挂载光盘: mount -r /dev/cdrom mount_point 光盘设备文件:/dev/cdrom,/dev/dvd 挂载U盘: 事先识别u盘的设备文件;然后在用挂载光盘的方法挂载 挂载本地的回环设备: #mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT umount命令: umount device|dir 注意:正在被进程访问到的挂载点无法被卸载; 查看被哪个或哪些进程所占用; #lsof MOUNT_POINT #fuser -v MOUNT_POINT 终止所有正在访问某挂载点的进程; #fuser -km MOUNT_POINT 交互分区的启用和禁用: 创建交换分区的命令:mkswap 启用:swapon swapon [option] [DEVICE] -a:定义在/etc/fstab文件中的所有swap设备; 禁用:swapoff swapoff DEVICE
设定除根文件系统以外的其他文件系统能够开机自动挂载:/etc/fstab文件 每行定义一个要挂载的文件系统及相关属性; 6个字段: (1)要挂载的设备: 设备文件; LABEL UUID 伪文件系统:如sysfs,proc,tmpfs等 (2)挂载点 swap类型的设备的挂载点为swap; (3)文件系统类型: (4)挂载选项 defaults:默认挂载选项; 如果要同时指明多个挂载选项,彼此间以逗号分隔; default,acl,noatime,noexec (5)转储频率 0:从不备份; 1:每天备份; 2:每隔一天备份; (6)自检次序 0:不自检; 1:首先自检,通常只能是根文件系统可用1; 2:次级自检 .... mount -a:可自动挂载定义在此文件中的所支持自动挂载的设备;
如何设置/etc/sda7开机自动挂载
两个命令:df和du
df命令: df[option]..[file].. -i:仅显示本地文件的相关信息; -h:human-readable -l:显示inode的使用状态而非blocks du命令: du[option]..[file].. -s:sumary -h:human-readable 换算成人类易读的单位
原创文章,作者:15152188070,如若转载,请注明出处:http://www.178linux.com/41697