1 磁盘基础
1.1 硬盘的物理结构
盘片:硬盘有多个盘片,每盘片2面(正反两面)。
磁头:每面一个磁头。(并不是只有一个磁头)
1.2 硬盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
- 磁道: 同一盘片不同半径的同心圆, 是由磁头在盘片表面划出的圆形轨迹,方便数据存储
- 柱面: 不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
1.3 硬盘存储容量
- 硬盘存储容量=磁头数x磁道(柱面)数×每道扇区数×每扇区字节数(512字节)
- 可以用柱面/磁头扇区来唯一定位磁盘上每一个区域
1.4 硬盘接口类型
- IDE(并口):接口速度133MB/s,并行接口,早期家用电脑。并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所取代。
- SCSI(并口):接口速度640MB/s,并行接口,早期服务器。小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时 CPU占用率较低,转速快,支持热插拔等。
- SATA(串口): 接口速度6Gpb/s,并行接口,早期服务器。抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
- SAS:是新一代的SCSI技术, 和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s。SAS是以整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA不包含供电线。SATA标准实际是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行。
1.5 机械硬盘与固态硬盘
机械硬盘(HDD) :
Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。 磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。信息通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式读取。硬盘作为精密设备,尘埃是其大敌,所以进入硬盘的空气必须过滤。
固态硬盘(SSD) :
Solid State Disk或Solid State Drive,又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。固态硬盘,因为台湾的英语里把固体电容称为Solid而得名。SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。 固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上基本与普通硬盘一致。
机械硬盘与固态硬盘优缺点对比:
- 防震抗摔性:机械硬盘都是磁碟型的,数据储存在磁碟扇区里。而固态硬盘是使用闪存颗粒(即内存、MP3、U盘等存储介质)制作而成,所以SSD固态硬盘内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,而且在发生碰撞和震荡时能够将数据丢失的可能性降到最小。相较机械硬盘,固硬占有绝对优势。
- 数据存储速度:机械硬盘的速度约为120MB/S,SATA协议的固态硬盘速度约为500MB/S,NVMe协议(PCIe 3.0×2)的固态硬盘速度约为1800MB/S,NVMe协议(PCIe 3.0×4)的固态硬盘速度约为3500MB/S。
- 功耗:固态硬盘的功耗上也要低于机械硬盘。
- 重量:固态硬盘在重量方面更轻,与常规1.8英寸硬盘相比,重量轻20-30克。
- 噪音:由于固硬属于无机械部件及闪存芯片,所以具有了发热量小、散热快等特点,而且没有机械马达和风扇。
常见的硬件设备在/dev目录下:
[root@localhost ~]# ll /dev/sd* //此处的8代表设备类型,8后的数字代表第几类的第几块设备 brw-rw----. 1 root disk 8, 0 2月 24 18:36 /dev/sda brw-rw----. 1 root disk 8, 1 2月 24 18:36 /dev/sda1 brw-rw----. 1 root disk 8, 2 2月 24 18:36 /dev/sda2 brw-rw----. 1 root disk 8, 16 2月 25 00:03 /dev/sdb brw-rw----. 1 root disk 8, 17 2月 25 00:03 /dev/sdb1 brw-rw----. 1 root disk 8, 18 2月 25 00:03 /dev/sdb2 brw-rw----. 1 root disk 8, 21 2月 25 00:03 /dev/sdb5 brw-rw----. 1 root disk 8, 22 2月 25 00:03 /dev/sdb6 复制代码
2 MBR与磁盘分区结构
2.1 主引导记录(MBR:Master Boot Record)
- MBR位于硬盘第一个物理扇区处 , MBR中包含硬盘的主引导程序和硬盘分区表
- 第一个扇区总共512字节,前446字节是主引导记录,分区表保存在扇区中的第447-512字节中。
- 分区表有4个分区记录区,每个分区记录区占16字节。
2.2 磁盘分区的表示
Linux中将硬盘、分区等设备均表示为文件。
Linux内核读取光驱、硬盘等资源时,都是通过“设备文件”的形式进行,因此,将硬盘和分区分别表示为不同的文件。
表示:/dev/hda5
- /dev/:硬件设备文件所在的目录
- hd:表示IDE设备(sd表示scsi设备)
- a:硬盘的顺序号,表示的第几块硬盘,以a、b、c…表示
- 5:分区的顺序号,表示第一块硬盘接口的第五个分区
2.3 磁盘分区结构
- 硬盘中的主分区数目只有4个
- 主分区和扩展分区的序号限制在1 ~4
- 扩展分区再分为逻辑分区
- 逻辑分区的序号将始终从5开始
3 Linux中使用的文件系统类型
在计算机中,文件系统(file system)是命名文件及放置文件的逻辑存储和恢复的系统。
文件系统类型决定了向分区中存放、读取数据的方式和效率。
3.1 XFS文件系统
- CenOS 7系统中默认使用的文件系统,高性能的日志型文件系统
- 存放文件和目录数据的分区
- 数据完整性:根据所记录的日志在很短时间内迅速恢复磁盘文件内容
- 传输特性 :用优化算法,日志记录对整体文件操作影响非常小。查询与分配存储空间非常快。
- 可扩展性 :是一个全64-bit的文件系统,最大可以支持8EB的文件系统
- 传输带宽 : XFS 能以接近裸设备I/O的性能存储数据。对单个文件的读写操作,吞吐量可达4GB每秒。
3.2 Swap交换文件系统 (虚拟内存)
- swap交换分区是系统RAM的补充,swap分区支持虚拟内存。
- 当没有足够的RAM保存系统处理的数据时,将数据写入swap分区;当系统缺乏swap空间时,内核会因RAM内存耗尽而终止进程。
- 配置过多swap空间会早存储设备处于分配状态但闲置,造成浪费,过多swap空间还会掩盖内存不足的问题。
3.3 FAT16、FAT32
- FAT32指的是文件分配表是采用32位二进制数记录管理的磁盘文件管理方式,因FAT类文件系统的核心是文件分配表,命名由此得来。
- FAT32是从FAT和FAT16发展而来的,优点是稳定性和兼容性好,能充分兼容Win 9X及以前版本,且维护方便。
- 缺点是安全性差,且最大只能支持32GB分区,单个文件也只能支持最大4GB。
3.4 NTFS
NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能。
3.5 EXT4(Extended file system 4, 第四代扩展文件系统 )
- CenOS 6系统中默认使用的文件系统
- EXT4是EXT文件系统的最新版。提供了很多的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升。
- 适用于那些分区容量不是太大,更新也不频繁的情况,例如/boot分区。
3.6 JFS
主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。
查看当前系统支持的文件系统类型:
[root@localhost ~]# cat /proc/filesystems //查看当前系统支持的文件系统类型 nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev debugfs nodev securityfs nodev sockfs nodev pipefs nodev anon_inodefs nodev configfs nodev devpts nodev hugetlbfs nodev autofs nodev pstore nodev mqueue nodev selinuxfs xfs nodev rpc_pipefs nodev nfsd 复制代码
4 管理磁盘及分区——分区工具fdsik
fdisk命令格式:
fdisk -l [磁盘设备] //非交互式查看磁盘分区 fdisk [磁盘设备] //交互式查看和管理磁盘分区 复制代码
4.1 非交互式查看磁盘及其分区
示例:
[root@localhost ~]# fdisk -l /dev/sda //查看磁盘sda及其分区信息 磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c4763 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 31467519 14684160 8e Linux LVM 复制代码
4.2 交互式查看和管理磁盘分区
交互模式中的常用指令:
- m 打印出菜单(帮助列表)
- p 打印出当前分区表
- n 新建一个分区
- d 删除一个分区
- t 改变分区的格式和系统ID
- w 保存
- q 退出
设置分区后,可使用partprobe 命令使kernel重新读取分区信息(即刷新分区列表),从而避免重启系统。
示例:
[root@localhost ~]# fdisk /dev/sda //交互式查看和管理磁盘分区 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):m //m指令打印出菜单 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 命令(输入 m 获取帮助):p //p指令打印出当前分区表 磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c4763 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 31467519 14684160 8e Linux LVM 命令(输入 m 获取帮助):q //q指令退出 复制代码
设置分区的完整过程在下文第7节中进行演示。