三种硬盘分区: 主分区、扩展分区、 逻辑分区。
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且 主分区+扩展分区总共不能超过4个。 逻辑分区可以有若干个。
在windows下激活的主分区是硬盘的启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。 在linux下主分区和逻辑分区都可以用来放系统,引导os开机,grub会兼容windows系统开机启动。
分出 主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。但扩展分区是不能直接用的,他是以 逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的 逻辑分区都是扩展分区的一部分。
在linux中第一块 硬盘分区为hda分区, 主分区编号为hda1-4, 逻辑分区从5开始。
硬盘的容量= 主分区的容量+扩展分区的容量
扩展分区的容量=各个 逻辑分区的容量之和
主分区也可成为“ 引导分区”,会被 操作系统和主板认定为这个 硬盘的第一个分区。所以C盘永远都是排在所有 磁盘分区的第一的位置上。
两种分区格式:MRB、GPT
MBR:最多存放4个主分区,最多一个扩展分区,扩展分区能可以分若干个逻辑分区,通常用于小于2T的硬盘空间。分区工具用fdisk
GPT:最多能存放128个主分区,通常用于超过2T的硬盘空间。分区工具用gdisk
适用于磁盘小于2TB的磁盘,分区类型MBR,主分区4或主分区3+扩展分区(逻辑分区+…),分区后需要保存后才能生效
fdisk
,交互式工具详细步骤:
1 | [root@egon ~]# fdisk /dev/sdb |
fdisk
创建分区
1 | [root@egon ~]# fdisk /dev/sdb |
重复上述步骤,创建四个1G的主分区
1 | 命令(输入 m 获取帮助):p |
此时虽然空间够用,但已经无法继续创建新的了
1 | 命令(输入 m 获取帮助):n |
删除主分区4,然后新建一个扩展分区,剩余空间都给他
1 | 命令(输入 m 获取帮助):d # 删除主分区4 |
可以查看一下
1 | [root@egon ~]# lsblk /dev/sdb |
适合2T以上的磁盘空间,可以创建最多128个主分区,与fdisk
命令相似,但不用考虑拓展分区和逻辑分区,全部建立主分区即可
gdisk
,交互式工具详细步骤:
1 | [root@egon ~]# yum install gdisk -y # 需要安装命令 |
gdisk
创建分区
1 | Command (? for help): n # 新建 |
制作文件系统
1 | mkfs.[文件系统类型] [设备目录] # 比如:mkfs.xfs /dev/sdb1,每一个主分区和逻辑分区都可以制作一个文件系统 |
注意:其实不分区也可以制作文件系统,比如:mkfs.xfs /dev/sdb
,整个磁盘相当于一个分区
挂载和卸载
1 | mount [设备目录] [文件目录] # 挂载(临时挂载) |
1 | umount [文件目录] # 卸载,也可以是umount [设备目录],二者效果相同 |
设置开机自动挂载
方式1:编辑
/etc/fstab
文件
1 | vim /etc/fstab # 编辑/etc/fstab文件 |
/etc/fstab
配置文件编写格式
| 要挂载的设备/UUID | 挂载点(入口) | 文件系统类型 | 挂载参数 | 是否备份 | 是否检查 |
| —————– | ————– | ———— | ———— | ——– | ——– |
| /dev/sdb1 | /data | xfs | defaults | 0 | 0 |
第一列:device:指定要挂载的文件系统的设备名称,也可以使用UUID、LABEL来指定分区,UUID可以通过blkid
命令查看。
第二列:dir:指定挂载点的路径;
第三列:type:指定文件系统的类型,如ext3,ext4,xfs等;
第四列:options:指定挂载的参数,默认为defaults;
第五列:dump:表示该挂载后的文件系统能否被dump备份命令作用;
第六列:pass:这里用来指定如何使用fsck来检查硬盘。
方式2:编辑
/etc/rc.local
文件
etc/rc.local
是系统启动时自动执行的脚本文件,把挂载命令写到此文件中,即可完成开机自动挂载。
查看挂载
1 | df -Th # 查看磁盘文件系统的挂载情况 |
查看内存使用情况:free -m
,包括物理内存和虚拟内存
使用fdisk
命令创建出一个分区
1 | fdisk /dev/sdb # 与制作磁盘分区的交互式步骤相同 |
格式化分区
1 | mkswap [设备目录] # 将一块设备格式化为swap格式,比如:mkswap /dev/sdb1 |
启用分区
1 | swapon [设备目录] # 开启虚拟内存,比如:swapon /dev/sdb1 |
设置开机自动挂载
1 | vim /etc/fstab |
创建文件
1 | dd if=/dev/zero of=/swap_file bs=1M count=200 |
格式化文件
1 | mkswap -f /swap_file |
启用文件
1 | swapon /swap_file |
设置开机自动挂载
1 | vim /etc/fstab |
查看交换空间信息
1 | swapon -s # 显示系统启用的交换空间信息,包括已启用交换空间的设备、文件和分区,并显示它们的大小和使用情况。 |
关闭swap分区
1 | swapoff [设备目录] # 关闭某一块交换空间,比如:swapoff /dev/sdb1 |
xfs文件系统的备份与恢复功能需要使用xfsdump
命令,首先需要安装软件包rpm -ivh xfsdump
和rpm -ivh xfsrestore
xfs的备份级别
1 | 0 # 完全备份 |
数据备份
1 | xfsdump -l [备份级别] -L [标签] -M [描述信息] -f [保存路径] [源路径] |
数据恢复
1 | xfsrestore -f [全量备份文件的路径] [恢复到的源路径] # 全量恢复 |
当服务器突然断电,或者文件系统发生读写错误时,会造成文件系统错误:“emergency mode”,无法挂载,或有损坏的超级块等报错。
先尝试命令
xfs_repair [设备目录]
,表示修复xfs文件系统
上个方法无效,再尝试命令
xfs_repair -L [设备目录]
,表示以清除日志的方式强制修复xfs文件系统,会造成数据丢失。
如果是ext文件系统,可以使用命令
fsck -f -y [设备目录]
,-f
表示强制检查,-y
表示非交互式
LVM(logical volume manage)逻辑卷管理,可以理解为在硬盘和文件系统之间的软件系统,可以实现磁盘分区动态扩容和缩容
LVM由三部分组成:PV
、VG
、LV
PV(physical volume):物理卷。很多块物理分区,不同磁盘的不同物理分区。每块物理分区包含多个PE(物理拓展块),PE可以认为是block,是LVM的最小存储块。
VG(volume group):卷组。由若干个PV组成的,也就是我们把上面那些硬盘分区集中到一块,可以堪称一整块虚拟磁盘,做成卷组,方便之后再进行划分。
LV(logical volume):逻辑卷。LV就是从VG里划分出来的卷,它可以在你所用的卷不够用的情况下动态划分其容量。
1 | gdisk /dev/sdb # 不再赘述 |
查询
1 | pvs # 搜寻查看具有PV属性的磁盘分区 |
创建
1 | pvcreate [设备目录] # 创建一个pv(给某块磁盘分区加上pv属性),比如: |
删除
1 | pvremove [设备目录] # 删除一个pv(移除某块磁盘分区的pv属性),只能删掉不属于任何VG的PV |
查询
1 | vgs |
创建
1 | vgcreate [VG名称] [PV设备] # 创建一个VG,比如: |
1 | vgcreate -s [PE块大小] [VG名称] [PV设备] # PE块的大小可以是以M,G,T为单位,默认是4M |
拓展
1 | vgextend [VG名称] [PV设备] # 在原有VG上增加一块PV设备,实现VG的空间拓展,比如: |
删除
1 | pvremove [VG名称] # 删除一个VG |
查询
1 | lvs |
创建
1 | lvcreate -L [容量大小] -n [LV名称] [VG名称] # 在一个VG中创建一个LV,-L指定LV的容量大小,单位可以为M,G,T,比如: |
1 | lvcreate -l [PE块数量] -n [LV名称] [VG名称] # 也可以用 -l 指定PE块的数量,总容量大小=PE块大小*PE块数量,需要自己计算 |
扩容和缩容
扩容
1 | lvextend -L size [LV路径] # 将LV扩充到指定容量,LV路径不能只写名称,要写完整路径,比如: |
1 | lvextend -L +size [LV路径] # 给LV增加指定容量,比如: |
缩容
1 | lvreduce -L -size [LV路径] # 给LV减少指定容量。xfswen'jain'xi't |
重新指定大小
1 | lvresize -L size [LV路径] # 重新指定LV的容量大小,一般使用lvextend |
更新文件系统
1 | xfs_growfs [lv路径] # 改变LV大小之后需要更新xfs文件系统 |
删除
1 | lvremove [LV路径] # 删除一个LV,删除之前需要先卸载掉挂载点 |
1 | mkfs.xfs [LV路径] # 创建文件系统 |
与创建操作系统的快照不同,LVM的快照本质上是创建了一个LV, 采用写时复制技术,当 LVM 快照创建的时候,仅创建到实际数据的 inode 的硬链接(hark-link)而已。只要实际的数据没有改变,快照就只包含指向数据的 inode 的指针,而非数据本身。快照会跟踪原始卷中块的改变,一旦你更改了快照对应的文件或目录,这个时候原始卷上将要改变的数据会在改变之前拷贝到快照预留的空间。快照原理如下图:
创建快照
1 | lvcreate -L [容量大小] -s -n [快照名称] [目标LV路径] # 本质上是在当前VG创建了一个LV,作为一个LV的快照,-s 表示创建的是快照 |
还原快照
方式1:把快照挂载到一个文件目录中,然后将部分文件复制到目标文件目录中。适用于更改的文件数量比较少的情况。
1 | # 先将快照挂载到一个文件目录,快照与其要备份的LV具有相同的UUID,所以不使用UUID挂载 |
方式2:整体恢复,使用LVM的快照恢复命令
1 | # 先把目标文件目录的LV给卸载掉 |
RAID中文是“独立磁盘冗余阵列”, 简称磁盘阵列(Disk Array)。是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
常用的几种RAID形式: RAID 0
、RAID 1
、RAID 5
、RAID 10
RAID0:性能最佳,容错最低
RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据一次写入到各个物理硬盘中。这样硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。
最低要求:两块硬盘。做条带
RAID1:性能最低,容错最好
RAID1是将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”
最低要求:两块硬盘。做镜像
RAID5:均衡性能和容错以及成本
RAID 5技术把多块硬盘设备(至少三块)的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷。
最低要求:三块硬盘。把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,最多容忍一块硬盘损坏
RAID10:相较于RAID5有所提升,成本也对应增加
RAID 10技术是RAID1+RAID0技术的一个组合体。如下图,RAID 10技术需要至少四块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样子从理论上讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性。
最低要求:四块硬盘。先做镜像,再做条带。