1. 磁盘简介
1.1. 概念
硬盘是由一片或多篇带有磁性的铝合金制的盘片构成,是 一种大容量、永久性的外部存储设备 组成:盘片、马达驱动、缓存、控制电路、接口
图:
1.2. 逻辑结构
磁道:由内到外的同心圆
扇区:半径组成的扇形磁道存储区
柱面:多个盘片的统一磁道
图:
2. 虚拟机添加新硬盘
2.1. 物理设备的命名规则
2.1.1. 传统设别
2.1.2. 固态硬盘
nvmen磁盘号[p1-10]
2.2. 虚拟机添加新硬盘
过程:
关机
编辑虚拟机设置
点击添加
选择硬盘后下一步 :
选择磁盘类型:SATA(A)
创建新虚拟磁盘:
20GB,单个文件 :
默认命名,点击完成:
注意 :在添加3块硬盘,最终共4个新硬盘
3. 硬盘分区概述
3.1. MBR分区
概念:
MBR(Master Boot Record,主引导记录)包含硬盘一系列 参数和一段引导程序,硬盘引导程序的主要作用是检查分 区表是否正确并且在系统硬件完成自检以后引导具有激活 标志的分区上的操作系统,并将控制权交给启动程序
MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖 任何操作系统,而且硬盘引导程序也是可以改变的,从而 实现多系统共存
MBR位于整个硬盘的0磁道0柱面1扇区
主引导扇区512B
MBR=446B
DPT(Disk Partition Table硬盘分区表)=64B
最后两个字节"55,AA"是分区的结束标志
MBR分区类型
**主分区(primary partition)**一块硬盘最多4个主分区,主分区不可以再进行二次分 区 主分区可以直接建立文件系统,存放数据 可以用来引导、启动操作系统
**扩展分区(extended partition)**一块硬盘最多一个扩展分区,加主分区最多4个 不能创建文件系统 可以划分逻辑分区
**逻辑分区(logical partition)**可以创建文件系统,存放数据 逻辑分区的数量没有限制。
支持的分区数量:4个主分区或者3个主分区1个扩展分区
为什么MBR最多只能有4个主分区: 因为分区表占据64个字 节,其中每个分区的信息占用16个字节,分区表里面可以 记录四个分区信息描述。
3.2. GPT分区
产生原因:
MBR分区表中最高支持磁盘容量为2.2TB
MBR分区表中,没有备份机制,分区表被干掉则磁盘全部 死光光
MBR中存储开机管理程序的容量只有446B,无法存储较 多内容
概念::
GPT(GUID Partition Table,全局唯一标识分区表)是一种比 MBR分区更先进、更灵活的磁盘分区模式
GPT分区表使用LBA(Logical Block Address)逻辑区块地址 来记录磁盘引导、分区的相关信息
LAB区块大小(512B-4KB),默认为512B
LAB区块共68个,前34个记录分区信息,后34个进行 备份
图:
不在区分主分区与其它分区,默认情况下,GPT最多可支持 128个分区
支持大于2.2TB的总容量及大于2.2TB的分区,最大支持 18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)
GPT分区机制在较老的BIOS中不能识别,则提供了一个 UEFI (Unified Extensible Firmware Interface)统一的可扩 展固件接口,来取代传统的BISO,又称为UEFI BIOS, UEFI使用C语言编写,支持较多的平台
3.3. lsblk命令
作用:查看磁盘信息
格式:lsblk 参数 设备名
参数:
-d:仅列出硬盘本身信息,不显示分区信息
-f:列出磁盘的内的文件系统名称
-i: 使用ASCII码格式输出信息
-t :显示磁盘的详细信息
-p :显示设备完整名称
示例:
显示内容分析:
**NAME :**设备名称,默认省略前导/dev 目录名
**MAJ:MIN :**主要:次要 设备代码
**RM :**是否可以卸载
**SIZE :**容量
**RO :**是否为 只读
**TYPE :**设备类别(磁盘、分区、光盘等)
**MOUNTPOINT :**挂载点
4. 硬盘分区
4.1. 使用fdisk管理分区
作用:fdisk命令工具默认将磁盘划分为MBR格式的分区
命令:fdisk 设备名
注意:fdisk命令以交互方式进行操作的,在菜单中选择相 应功能键即可
示例:
例1:对/dev/sda硬盘进行分区,方式:P+P+P+E(l+l+l), 容量自定
[root@server ~]# fdisk /dev/sda
# 输入n表示新建
输入p或直接回车因为此时默认分区为p区(主分区)
按照同样的方还可以默认创建俩个P区(主分区),
当创建三个P区后**,默认选项就会变成e区(扩展分区)**
当到达需要输入分区大小时直接回 车,即剩余容量全部分配
之后在添加分区时默认值会转变为逻辑分区:
最后输入命令p , 显示分区列表
若分区符合要求,则直接输入w 保存并退出(w意思是将磁盘信息写入同步)
输入:[root@server ~]# lsblk /dev/sda
**注:**若输入以上命令后若无法查看,则表示分区信息还未写入内核(常见情 况),输入partprobe命令 进行手动将分区信息同步到内 核,再不行就重启
[root@server ~]# partprobe
例2:对/dev/sdb,进行分区,P+P+E (l+l) P:1G P:3G L: 10G L:剩余
命令:****[root@server ~]# fdisk /dev/sdb
命令参考例一,注:此题为P+P+E,因此需要在第三次选择分区时输入e。
[root@server ~]# lsblk /dev/sdb
4.2. 使用gdisk管理分区
注意:
gdisk命令针对GPT分区格式,若在MBR分区格式 下进行添加分区,则所有数据会全部丢失 ,切记 :一块硬 盘中fdisk与gdisk不能混用
格式:gdisk 设备名
示例:
**例:**对/dev/sdc进行gdisk分区,3个分区,容量自定
[root@server ~]# gdisk /dev/sdc
输入n(大小写都可以gdisk不区分大小写):创建一个新的分区
输入p查看分区表:
输入w 回车在输入y回车:
[root@server ~]# lsblk /dev/sdc
若没有则输入 [root@server ~]# partprobe 进行手动将分区信息同步到内 核,再不行就重启
**注意:**实际工作中,硬盘分区是应保留一定的自由空间,以备将 来分区空间不足时可以临时扩容
5. 格式化
5.1. 概念
5.1.1. 格式化的目的
当我们拿到了一张大白纸,首先为了使用方便要裁剪,然 后为了书写工整要先画格,这里的"白纸"就是原始的硬盘, 而"裁剪"意味着分区,然后的"画格"就是格式化,最后写入 内容
格式化是对分区建立文件系统,文件系统是操作系统用于 明确存储设备或分区上的文件的方法和数据结构;即在存 储设备上组织文件的方法
5.1.2. 文件系统组成-ext2
**组成:**super block(超级块)、inode (索引块)、 block(数据块)
**super block:**又称为"硬盘地图",记录文件系统的整体信 息,如:inode/block块的总量、使用量、空闲块量、文 件系统格式等相关信息
**inode:**记录文件的属性,一个文件占用一个inode块,并 且记录次文件的数据所在的block块的号码,默认为128B 大小,存储:文件访问权限、文件所有者与所属组、文件 大小、创建时间或修改内容时间、最有一次访问时间、特 殊权限、真实数据地址
**block块:**记录实际文件的内容,在EXT2文件系统中分为 1KB、2KB、4KB容量,文件太大时,会占用多个数据块
图:
5.1.3. 查看文件系统格式
方法:输入mkfs 在键入**tab(点击2次)**进行命令补全,可显 示支持的文件系统格式
例:
[root@server ~]# mkfs
5.2 格式化命令:
mkfs.xfs -参数 硬盘分区名
mkfs.ext4 -参数 硬盘分区名
参数:
**-f:**强制格式化,已存在文件系统时需要使用
**-c:**建立文件系统前先检查坏块。
**-V:**输出建立文件系统的详细信息
示例
**例1:**对/dev/sda硬盘进行格式化
首先查看可以格式化的分区:
sda4不可以格式化(扩展风区)
[root@server ~]# mkfs.xfs /dev/sda1
[root@server ~]# mkfs.xfs /dev/sda2
[root@server ~]# mkfs.xfs /dev/sda3
[root@server ~]# mkfs.xfs /dev/sda5
[root@server ~]# mkfs.xfs /dev/sda6
[root@server ~]# mkfs.xfs /dev/sda7
使用相同的命令一次将其他分区进行格式化
**例2:**格式化/dev/sda2 ,并使用inte的cpu多线程技术进 行多数据流读写系统
[root@server ~]# mkfs.xfs -d agcount=2 -f /dev/sda2
# -f:强制格式化
# -d:指定核心数
命令含义:使用CPU俩个核心对第一块硬盘的第二个分区进行格式化。
(需要强制格石化-f)
查看CPU内核个数:
[root@server ~]# grep 'processor' /proc/cpuinfo
**例3:**制作大文件/filedev,容量2G,格式化为xfs文件系统
[root@server ~]# dd if=/dev/zero of=/filedev count=2 bs=1GB
[root@server ~]# mkfs.xfs -f /filedev
5.5. blkid命令
**作用:**显示设备的UUID值和文件系统名称
**UUID:**全局单一标识符(Universally Unique Identifier),Linux系统会给所有设备分配一个唯一的UUID 值,以方便挂载
格式: blkid 设备名
示例:
[root@server ~]# blkid /dev/sda1
6. 挂载
6.1. 概念
mount point:挂载点,是一个目录,该目录是进入磁盘 分区(文件系统)的入口
挂载:将一个分区或者设备挂载至挂载点目录,建立连 接,通过挂载点目录进入分区空间
6.2. mount命令
格式:mount [-t 文件系统类型] 设备名 挂载点目录
参数:
**-a:**依照配置文件/etc/fstab的数据将所有未挂载的磁盘都 挂载上来
**-t:**指定文件系统类型
-o 特殊设备选项:挂载设备时使用逗号分割输入额外参数
示例:
例1:新建挂载目录,挂载/dev/sda1
[root@server ~]# mkdir /msda1
[root@server ~]# mount /dev/sda1 /msda1
[root@server ~]# lsblk /dev/sda
**例2:**使用UUID值挂载/dev/sda2
[root@server ~]# blkid /dev/sda2
/dev/sda2: UUID="ba64aeab-15ac-4723-87b2-ea29edf60145" TYPE="xfs" PARTUUID="4914d7d9-02"
[root@server ~]# mkdir /mssda2
[root@server ~]# mount UUID="ba64aeab-15ac-4723-87b2-ea29edf60145" /mssda2
[root@server ~]# lsblk /dev/sda
例3:挂载光盘
查看挂载文件是否存在,若存在则直接挂载:
[root@server ~]# ls /
[root@server ~]# mount /dev/sr0 /media/
查看是否挂载成功 : [root@server ~]# lsblk /dev/sr0
**例4:**查看挂载信息
[root@server ~]# mount
[root@server ~]# mount | grep /dev/sda
注意 :
单一文件系统不应该被重复挂载在不同的挂载点(目录)中
单一目录不应该重复挂载多个文件系统
作为挂载点的目录,应为空目录,否则原有数据会隐藏
例:
[root@server ~]# echo "hello" > /mssda3/test.txt
[root@server ~]# ls /mssda3
[root@server ~]# mount /dev/sda3 /mssda3/[root@server ~]# ls /mssda3/ # test.txt隐藏,卸载设备后恢复
**# lost+found目录作用:**使用标准的ext文件系统格式才会 产生的一个目录,当软件或者硬件出现错误,导致文件系统不 一致时会把有问题的文件放到lost+found目录种,所以是一 种恢复丢失文件的方法,误删除时可使用mklost+found创建
6.3. umount命令
**作用:**卸载分区,要移除USB磁盘、U盘、光盘和硬盘时,需要 先卸载
格式:umount 参数 设备名称[挂载点]
**参数:-f :**强制卸载
示例:
卸载:分区 sda1和sda2
**注意:**若正使用文件系统,则应使用cd命令离开该目录后再卸载
[root@server ~]# cd /mssda3
[root@server mssda3]# ls
[root@server mssda3]# umount /dev/sda3
[root@server mssda3]# cd ~ # 离开需要卸载的目 录
[root@server ~]# umount /dev/sda3
[root@server ~]# ls /mssda3 # 原先隐藏的文 件,卸载设别后会显示
6.4. 开机挂载
作用 :由于mount为手动挂载,重启后就会卸载,则修 改/etc/fstab配置文件,实现开机自动挂载
例: [root@server ~]# lsblk /dev/sda 查看挂载情况
6.4. 配置文件分析
路径:/etc/fstab
[root@server ~]# vim /etc/fstab共六列,分别为:
设备名称或其UUID值
挂载点目录
文件系统名称
文件系统参数:default 是否备份,0
fsck:开机是否用fsck进行扇区检查,但xfs文件系统不 支持则为 0
示例:
将/dev/sda1挂载到/msda1中,并设置开机挂载,重启后 检查\
[root@server ~]# blkid /dev/sda1 查看文件系统名称
[root@server ~]# vim /etc/fstab
[root@server ~]# mount -a # 挂载所有,进行测 试,
[root@server ~]# lsblk /dev/sda
[root@server ~]# reboot
[root@server ~]# lsblk
# 注意:为了防止语法错误,必须进行测试,否则开机无法 启动
注意:
根目录/ 是必须挂载的﹐而且一定要先于其它mount point 被挂载
其它mount point 必须为已建立的目录,可任意指定,但 一定要遵守必须的系统目录架构原则(FHS)
所有mount point 在同一时间之内﹐只能挂载一次。
所有partition 在同一时间之内﹐只能挂载一次。
6.5. 特殊挂载
6.5.1. 挂载大文件
当只有一个分区,剩余空间还很大,自由空间很小不能进 行新的分区,则可以在当前分区制作一个大文件,在进行 挂载,相当于一个新的分区来使用
例:建立根目录下新建1GB大文件,挂载并开机挂载使用
[root@server ~]# dd if=/dev/zero of=/loopdev count=1 bs=1GB
[root@server ~]# mkfs.xfs -f /loopdev****格式化(-f 强制格式化)
[root@server ~]# mkdir /mloop
[root@server ~]# mount -o loop /loopdev /mloop/ 挂载大文件 -o 特殊设备选项查看挂载情况:
实现开机挂:
[root@server ~]# vim /etc/fstab
[root@server ~]# mount -a
6.5.2. 增加swap分区
swap分区:类似于Windows系统虚拟内存的功能,将一 部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为swap毕竟是用硬盘资源虚拟的,所以速度 上比真实物理内存要慢
查看:
添加过程:
新建分区->格式化该分区->启用新的swap->查 看系统信息->挂载
例1:/dev/sdd中划分2G空间为swap分区,并开机挂载使 用
[root@server ~]# gdisk /dev/sdd 在虚拟硬盘/devsdd上划分一个大小为2G的区域。步骤如下:
保存退出并查看分区情况:
# swap 格式化 [root@server ~]# mkswap /dev/sdd1
# 查看容量 [root@server ~]# free -h 发现swap并没增加
# 启用分区 [root@server ~]# swapon /dev/sdd1
# 查看容量 [root@server ~]# free -h****发现swap增加# 开机挂载 [root@server ~]# vim /etc/fstab
检测并重启:
[root@server ~]# mount -a
[root@server ~]# reboot
**例2:**使用大文件建立swap
建立大文件:****[root@server ~]# dd if=/dev/zero of=/swapdev count=2 bs=1G
格式化大文件:[root@server ~]# mkswap /swapdev
根据所提示的建议修改文件权限:[root@server ~]# chmod 600 /swapdev
实现开机挂载:[root@server ~]# vim /etc/fstab
检测: [root@server ~]# mount -a
启用大文件: [root@server ~]# swapon /swapdev
查看容量: [root@server ~]# free -h
若列表中容量没有增加则输入:[root@server ~]# swapon -s刷新列表
注意:
swap在服务器中有时会关闭,如数据库服务器,但一般 用于服务器内存剩余空间有一定压力时会触发使用swap 空间,则swap空间大小设置一般为:当物理内存小于2G 时,swap分区大小为物理内存的2倍;超过2G的部分, swap分区大小跟物理内存相等
可以使用 swapoff命令停用部分swap空间
7. 查看磁盘空间使用量
7.1. df命令
作用:
列出文件系统的磁盘空间占用情况
df,disk free,通过文件系统来快速获取空间大小的信 息,当我们删除一个文件的时候,这个文件不是马上就在 文件系统当中消失了,而是暂时消失了,当所有程序都不 用时,才会根据OS的规则释放掉已经删除的文件, df记 录的是通过文件系统获取到的文件的大小,他比du强的地 方就是能够看到已经删除的文件,而且计算大小的时候, 把这一部分的空间也加上了,更精确了
格式:
df -参数 目录或文件名
参数:
**-a:**列出所有的文件系统,包括系统特有的/proc等文件系 统
**-k:**以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统
**-h:**以人们较易阅读的GB,MB,KB等格式自行显示
**-H:**以M=1000K替代M=1024K的进位方式
**-T:**连同该分区的文件系统名称(例如ext3)也列出
**-i:**不用硬盘容量,而以inode的数量来显示
由于df主要读取的数据几乎都是针对整个文件系统,因此 读取的范围主要是在Super block内的信息,所以这个命令 显示结果的速度非常快速。
示例:
7.2. du命令
作用:
du:显示磁盘空间使用量(统计目录或文件所占磁盘空间 大小),在默认情况下,文件大小的单位是KB。 du,disk usage,是通过搜索文件来计算每个文件的大小 然后累加,
du能看到的文件只是一些当前存在的,没有被 删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统也确定删除了该文件后,这时候 du与df就一致了
格式:
du -参数 文件或目录名
参数:
**-a :**列出所有的文件与目录容量,因为默认仅统计目录下面 的文件量而已;
**-h :**以人们较易读的容量格式(G/M)显示;
**-s :**列出总量,而不列出每个个别的目录占用了容量;
**-S :**不包括子目录下的总计,与-s有点差别;
**-k :**以KB列出容量显示;
**-m :**以MB列出容量显示。
8. RAID
8.1. 概念
当今CPU性能每年可提升30%-50%但硬盘仅提升7%
硬盘在服务器中需要持续、频繁、大量的I/O操作,故障 机率较大,则需要对硬盘进行技术改造,提升读写性能、 可靠性
1988年,加利福尼亚大学伯克利分校首次提出并定义了 RAID技术概念
**原理:**RAID(Redundant Array of Independent Disks) 将多个硬盘设备组成一个大容量、安全更好的磁盘阵列, 并将数据切割成多个片段后分别存储到不同的物理硬盘 上,利用分散读写技术来来提升硬盘性能,同时也备份了 多个副本到不同硬盘中,拥有了备份冗余功能
8.2. 常见RAID组建方案
RAID0:
**原理:**把至少2块硬盘通过硬件或软件方式串联,组成一 个大的卷组,并将数据依次写入到各个硬盘
**优点:**数据同步传输,读取/写入分开,性能大大提升
**缺点:**若任意一块硬盘故障会导致整个系统的数据损坏, 无备份冗余能力错误修复能力
**总结:**使用率100%,至少2块磁盘才能使用,优点是快,提 升磁盘的读写速度,缺点是不安全
图:
RAID1:
**产生原因:**若生产环境对硬盘的读写速度没有较大要求, 但希望增加数据安全性时可使用RAID
**原理:**把至少2块硬盘绑定起来,写入数据时将数据同时 也写入另一或多块硬盘中,
**本质:**多个硬盘作为镜像备份
**优点:**数据备份冗余安全性大大提升
**缺点:**硬盘利用率下降
**总结:**是镜像,使用两块磁盘,一式两份的方式,支持容 错,冗余,数据安全不丢失,缺点是速度不快,使用率 50%,成本较大。
图:
RAID5
**产生原因:**兼顾"读写速度"、"数据安全"、"成本"的一种折 中方式
**原理:**需至少三块硬盘,将数据分块存储到不同硬盘中, 硬盘中必须存储其它一个硬盘的parity(奇偶校验信息)
**优点:**兼顾性能,通过"奇偶校验"替代"镜像备份"
**缺点:**硬盘数据安全性较低
总结:使用率(n-1)/n*容量,磁盘坏了会立即补上,数据会 恢复
图:
RAID10 (主流)
**本质:**RAID1+RAID0 的组合
**原理:**至少需要4块硬盘,先制作两两的RAID1阵列,以保 证安全性,在两两制作RAID0,以提高读写速度
**优点:**兼具速度和安全性
**缺点:**成本较高
图:
8.3. mdadm命令
**作用:**管理系统中的RAID磁盘阵列
稍后完成。。。。