目录
Linux 磁盘管理好坏直接关系到整个系统的性能问题
认识磁盘
什么是磁盘:
磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写。绝大多数磁盘被永久封存在一个密封的盒子里。
磁盘运行原理:
可以看见,硬盘拆开后,里面存在多张磁盘和多个读写磁头,加入一张磁盘有8张磁盘,就会有16个盘面和16个读写磁头了,所有的盘面构成了磁盘组合。
磁盘组合由一个或多个圆盘组成,他们围绕一根中心主轴旋转,圆盘的上下表面涂抹了一层磁性材料,二进制位被存储在这些磁性材料上。其中,0和1在磁材料中表现位不同的模式。
磁头(head):不用说,主要就是读取磁盘表面磁方向和改变其方向,每个盘面有一个磁头,它极其贴近地悬浮在盘面上,但是绝对不与盘面接触,否则会损坏磁头和盘面;
磁道(track):磁道是单个盘面上的同心圆,当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道,一个盘面上的磁道可以有成千上万个。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会产生相互影响,同时也为磁头的读写带来困难。
柱面(cylinder):在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面。
扇区(sector):磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区。扇区是被间隙(gap)分割的圆的片段,间隙未被磁化成0或者1。注意,扇区是读写磁盘最基本的单位,如果一个扇区因为某种原因被破坏,那么整个扇区的数据都会受影响。
磁盘容量的计算
Megatron747磁盘是一个典型的vintage-2008的大容量驱动器,它具有以下特性:8个圆盘,16个盘面,每个盘面有65536个磁道,每个磁道(平均)有256个扇区,每个扇区可以存储4096个字节(byte)
Ans:那整个磁盘容量的算法是:
16个盘面,乘以65536个磁道,乘以256个扇区,再乘以4096字节,即16*65536*256*4096=2^40 byte,也就是1TB的容量。
硬盘分类:
(1)IDE磁盘:特点价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。
(2)SCSI磁盘:传输速率高,读写性能好,运行稳定,可连接多个设备。可支持热插拔,占用CPU低,但是价格相对来说比较贵,一般用于工作站或服务器上。
(3)SATA磁盘:结构简单、支持热插拔
(4)USB
其中IDE的磁盘的文件名为 /dev/hd[a-d]
而SCSI、SATA、USB的磁盘文件名为 /dev/sd[a-p]
磁盘分区
(1)易于管理和使用:
比如说我们把磁盘分了sda1、sda2、sda3、sda4盘,我们假设sda1盘为系统盘,其他的比如说游戏、办公、软件盘,这样我们要重新分哪个区就直接在对应的盘分就可以了,不需要整块磁盘进行分区。根据用途我们也能较快的去使用相应的磁盘。
(2)有利于数据的安全:
通过分区可以降低数据损失的风险。出现硬盘坏道、错误操作、重装系统都有可能造成数据损失,如果分区了,那么我们就可以将损失最小化。
(3)节约寻找文件的时间:
分区以后,电脑搜索文件时只需要在相对应的分区搜索就可以了,没必要进行全盘搜索。大大节省了寻找文件的时间。
一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节,因此磁盘最多只能分四个分区,要想有多个分区这时候就有了扩展分区。
拓展分区
扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的。扩展分区把逻辑分区的分区信息在扩展分区中找了一个位置给存起来。假如说扩展分区划分了三个逻辑分区那么第1个逻辑分区命名为sda5、第2个为sda6、第3个sda7,以此类推。
上面所说的是一个磁盘被分为四个分区,第四个分区被设置为扩展分区,第一个逻辑分区为sda5。但是当整个磁盘被分为3个分区的时候,我们把扩展分区划分的第1个逻辑分区依然命名为sda5,而不是其它的。总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。
命令
fdisk
格式: fdisk -l 磁盘设备
- -m:打印出菜单
- -p:打印出当前分区表
- -n:新建一个分区
- -d:删除一个分区
- -t:改变分区的属性,系统ID
- -w:保存
- - q:不保存退出
- -l:输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
blkid
查看块设备属性设备
文件格式化
指将分区格式化成不同的文件系统。
Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs. 然后用按TAB、TAB来查看都有哪些文件类型。
XFS特性:
数据完全性
采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
传输特性
XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与分配存储空间非常快。xfs文件系统能连续提供快速的反应时间。笔者曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众。
可扩展性
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大 小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
传输带宽
XFS 能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。
SWAP
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率 。
需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存。SWAP分区只是临时的解决办法.
mkfs
创建文件系统(格式化)
磁盘挂载
(1)Linux的宗旨是一切皆文件,从以上我们也看到。我们存储的所有文件都在sda3下存放着,sda3也就是我们的根。那我们要在sda5中写入文件时,首先要sda5要与sda3先建立一个联系,这个联系就是一个目录。建立联系的过程我们叫做挂载。
(2)当我们访问sda3底下的这个目录的时候,实际上我们访问的才是sda5这个设备文件。这个目录相当于一个访问sda5的入口,可以理解为一个接口,有了这个接口才可以访问这个磁盘。
挂载规则
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
命令
mount
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
findmnt
查看 设备的详细信息
永久挂载
要将文件写进/etc/fstab
UUID确保唯一
blkid可以查看uuid号
umount
解挂载
df
查看挂载情况
df -Th
-T 文件系统
-h 人性化
lsblk
查看分区情况列出块设备信息
- -a (all) 显示所有设备
- -b (bytes) 以bytes方式显示设备大小
- -d (nodeps) 不显示 slaves 或 holders
- -D (discard) print discard capabilities
- -e (exclude) 排除设备(default RAM disks)
- -f (fs) 显示文件系统信息
- -h (help) 显示帮助信息
- -i (ascii) use ascii characters only
- -m (perms) 显示权限信息
- -l (list) 使用列表格式显示
- -n (noheading) 不显示标题
- -o (output) 输出列
- -P (pairs) 使用key=“value”格式显示
- -r (raw) 使用原始格式显示
- -t (topology) 显示拓扑结构信息
badblocks
用于检查磁盘装置中损坏的区块
执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数
格式
badblocks [-svw] [-b <区块大小>] [-o <输出文件>] [磁盘装置] [磁盘区块数] [启始区块]
参数
- -b<区块大小>:指定磁盘的区块大小,单位为字节。
- -o<输出文件>:将检查的结果写入指定的输出文件。
- -s:在检查时显示进度。
- -v:执行时显示详细的信息。
- -w:在检查时,执行写入测试。
- [磁盘装置]:指定要检查的磁盘装置。
- [磁盘区块数]:指定磁盘装置的区块总数。
- [启始区块]:指定要从哪个区块开始检查。