存储管理一
1.认识硬盘
分类:机械 HDD、固态 SSD
HDD内部结构
机械硬盘(HDD)是一种存储设备,使用旋转磁盘和读/写磁头来存储和检索数据。以下是机械硬盘的基本结构:
盘片(Platters):机械硬盘通常由多个盘片组成,每个盘片都是一个圆形的金属或玻璃基板,上面涂有磁性材料。
磁头(Read/Write Heads):每个盘片都有两个磁头,一个用于读取数据,另一个用于写入数据。磁头位于盘片上方和下方,通过磁性浮动臂和驱动器来移动。
磁道(Tracks):盘片被划分为多个同心圆轨道,称为磁道。每个磁道可以存储一定量的数据。
扇区(Sectors):每个磁道被划分为多个扇区,每个扇区可以存储固定大小的数据块,通常为512字节。
主轴(Spindle):盘片通过主轴连接在一起,并由电机驱动主轴旋转。通常,硬盘的转速以每分钟转数(RPM)来表示,如5400 RPM、7200 RPM或10000 RPM。
磁头臂(Actuator Arm):磁头臂是一个可移动的机械臂,上面安装有磁头。它通过电机和控制器的控制,可以在盘片上移动磁头。
磁头定位器(Head Positioner):磁头定位器负责精确定位磁头在盘片上的位置。它使用电磁力将磁头臂移动到正确的磁道上。
控制器(Controller):硬盘的控制器是一个电子设备,负责控制硬盘的操作。它管理磁头的移动、数据的读写、错误检测和纠正等功能。
HDD工作原理:
当计算机需要读取或写入数据时,控制器将指令发送给磁头臂和磁头,使其移动到正确的位置,并在磁道上读取或写入数据。机械硬盘的工作原理基于磁性材料的磁化和反磁化过程,通过改变磁场的方向来存储和检索数据。然而,由于机械硬盘使用机械部件进行数据访问,因此速度较慢,且容易受到物理冲击和震动的影响。
SSD的优势
SSD采用电子存储介质进行数据存储和读取的一种技术,拥有极高的存储性能,被认为是存储技术发展的未来新星。
内存直接当成硬盘使用
与传统硬盘相比,SSD固态电子盘具有以下优点:
第一,SSD完全的半导体化,不存在数据查找时间、延迟时间,数据存取速度快。
第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。
第三,得益于无机械部件及闪存芯片,SSD没有任何噪音,功耗低。
第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。
常见的硬盘尺寸:
3.5寸 2.5寸 1.8寸
硬盘分类:
从插拔方式:热插拔、非热插拔
从硬盘接口:
IDE(已经淘汰—也叫ATA)
SATA (Serial ATA),是当前主流的一种硬盘接口
SCSI(小型计算机的接口–很少了)
SAS代替了scsi (Serial Attached SCSI),当前SAS接口居多
- IDE和SATA的区别:
1、接口不同,传输的速率不同。IDE根据规范,最高到133MB/s, 而SATA3.0,可达6Gb/S,速度差距巨大。
2、SATA支持热插拔。
- SAS与SCSI的区别:
1、接口不同;
2、SAS兼容SATA,SCSI不兼容SATA;
硬盘设备命名:
物理硬盘: /dev/sd[a-z]
KVM虚拟化:
/dev/vd[a-z](半虚拟化驱动)
/dev/sd[a-z](全虚拟化驱动)
2.磁盘的分区格式
分区的目的: 文件分类
2.1 MBR格式
分区命令:fdisk
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的硬盘。
一块硬盘最多分4个主分区。
一块硬盘可以直接划分4个主分区,也可以划分3个主分区和一个扩展分区,扩展分区下面可以划分多个逻辑分区
2.2 GPT格式
分区命令:gdisk
(parted—rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。最大可以多大,超过目前硬件可以支撑的硬盘大小
- 注意:从 MBR 转到 GPT ,或从 GPT 转换到 MBR 会导致数据全部丢失!因为转换格式要格式化硬盘
3.第一步:基本分区
3.1 fdisk 分区
- MBR 14个分区(4个主分区,扩展分区,逻辑分区)
fdisk -l /dev/sdb # 查看磁盘分区信息
fdisk /dev/sdb # 开始分区
参数介绍: m # 查看帮助 n # 新建分区 Partition type: # 分区类型 p primary (0 primary, 0 extended, 4 free) e extended d # 删除一个分区 o # 转换成[MBR|DOS]分区格式 g # 转换成gpt分区格式 p # ---打印分区信息 w #--保存退出
手动让内核更新分区表命令:
partprobe /dev/sdb
不需要重启
lsblk
# 查看磁盘设备
3.2 gdisk分区
-
GPT 128个主分区
yum install -y gdisk gdisk分区步骤: 1.gdisk -l /dev/sdc 2.gdisk /dev/sdc n # --创建分区 w # ---保存 Do you want to proceed? (Y/N): y # 是否覆盖 3.partprobe /dev/sdc #刷新分区表 4.lsblk
3.3 MBR格式与GPT格式转换
parted -s /dev/sdc mklabel gpt
parted -s /dev/sdc mklabel msdos
4.第二步:格式化分区
格式化分区命令:
mkfs.ext4
or mkfs.xfs
格式化分区后的文件类型有两种:
- ext4文件:
mkfs.ext4 /dev/sdb1
- xfs文件:
mkfs.xfs /dev/sdb5
5.第三步:创建挂载目录并挂载分区
5.1 创建挂载目录
mkdir /data1
5.2 手动挂载分区
mount /dev/sdb1 /data1
5.3 /etc/fstab开机自动挂载
[root@qfedu.com ~]# blkid /dev/sdb1 #查看uuid和文件系统类型
/dev/sdb1: UUID="d1916638-bd0a-4474-8051-f788116a3a92" TYPE="ext4"
[root@qfedu.com ~]# vim /etc/fstab
参数解释:
第1列:挂载设备
(1)/dev/sda5
(2)UUID=设备的uuid rhel6/7的默认写法 同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查
5.4 /etc/rc.d/rc.local开机自动挂载
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可
[root@qfedu.com ~]# vim /etc/rc.d/rc.local #将挂载命令直接写到文件中
date >> /tmp/host_start.txt
mount /dev/sdb1 /mnt/disk1/
mount /dev/sdc1 /mnt/disk2/
[root@qfedu.com ~]# chmod +x /etc/rc.d/rc.local #添加执行权限
[root@qfedu.com ~]# reboot
6.以上三步总结
流程:
-
fdisk分区
fdisk /dev/sdb
-
格式化分区
- ext4文件:
mkfs.ext4 /dev/sdb1
- xfs文件:
mkfs.xfs /dev/sdb5
- ext4文件:
-
创建挂载目录
mkdir /data1
-
挂载分区
-
手动挂载
mount /dev/sdb1 /data1
-
开机自动挂载
-
方式1:
vim /etc/fstab
-
方式2:
- 链接文件:
vim /etc/rc.local
- 源文件:
vim /etc/rc.d/rc.local
chomd +x /etc/rc.d/local
- 链接文件:
-
-
7. 文件系统分类
7.1 分类
- 本地文件系统,不能在网络上用。
ntfs xfs ext2,ext3,ext4 fat32- 网络文件系统,也可以在本地用。
nfs glusterfs hdfs ceph
7.2 理解inode
inode:inoed块、i节点–索引节点。专门存储inode信息。也就是是文件的属性-(也叫元信息).
inode是文件或目录在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点,每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
inode的内容
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime,mtime,atime。
链接数,即有多少文件名指向这个inode
7.3 查看inode信息
stat /etc/hosts
ls -i /etc/hosts
#-i:查看inode号
7.4 EXT与XFS
- EXT 家族支持度最广:andirons
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!- XFS 同样是一种日志式文件系統:
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快
存储管理二
本节需掌握的操作:
1.lvm的制作
2.lvm的使用
3.lvm扩容-------在线扩容。可以在有数据的情况下去扩容。
1.逻辑卷LVM介绍
LVM(Logical Volume Manager)
LVM管理的概念:
lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
lvm的特点:
#传统分区的缺点:
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中。#当采用LVM时:
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.当磁盘空间不足而加入新的硬盘时,不必将数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。
3.文件系统建立在LVM上,可以跨分区,方便使用;#使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。
基本分区流程vs逻辑卷LVM创建
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)
2.lvm的制作和使用
第一步:拥有基本分区(添加磁盘)
第二步:做成物理卷:pv
sdb1、sdb2 打pv的标记。
第三步:加入卷组: vg
卷组里面包含:sdb1 sdb2,建立在PV之上。
第四步:逻辑卷:lv
逻辑卷是从卷组里面拿空间出来做成的逻辑卷,在起个名,建立在VG之上
第五步:制作文件系统
命令:
mkfs.xfs lvm路径
第六步:挂载
命令:
mount
PS:制作lvm的时候可以是一整块硬盘,也可以是硬盘分好的区并且是还没有用的。必须是没有做文件系统的
2.1 创建LVM
-
首先准备添加3块磁盘:可以是/dev/sdb这种没有分区的也可以是/dev/sdb1这种已经分区了的
-
注意:如果没有pv命令安装
yum install -y lvm2
查看磁盘:
ll /dev/sd*
2.2 创建pv并查看
创建pv命令:pvcreate /dev/sdb
查看pv命令:pvs
pvscan
pvdisplay
2.3 创建vg并查看
创建vg命令:vgcreate $vgname /dev/sdb
查看vg命令:vgs
vgscan
vgdisplay
2.4 创建lv并查看
创建lv命令:
lvcreate [-L|-l] [size|+size|pe|+100%FREE] -n $lvname $vgname
查看lv命令:lvs
vgscan
vgdisplay
2.5 制作文件系统并挂载
-
制作文件系统:
- xfs格式:
mkfs.xfs /dev/&vgname/$lvname
- ext4格式:
mkfs.ext4 /dev/&vgname/$lvname
- xfs格式:
-
创建挂载目录:
mkdir /mnt/lv{1..2}
-
手动挂载:
mount /dev/&vgname/$lvname /mnt/lv1
mount /dev/&vgname/$lvname /mnt/lv2
-
自动挂载:参考基本分区
3.LVM逻辑卷扩容
注意:如果lv所在的vg有空间直接扩容lv就ok了!
如果lv所在的vg没有空间,则先给vg扩容
3.1扩大VG vgextend
- 1)创建pv:
pvcreate /dev/sdc
- 2)直接vgextend扩容,vg1是卷组名字,将/dev/sdc扩展到vg1中:
vgextend $vgname /dev/sdc
vgextend vg1 /dev/sdc
- 3)查看当前vg:
vgs
3.2扩大lv lvextend
- 扩展到850M:
lvextend -L 850M /dev/vg1/lv1
- 在原有基础上==+==850M:
lvextend -L +850M /dev/vg1/lv1
- 在原有基础上==+==15个PE:
lvextend -l +15 /dev/vg1/lv1
- 将逻辑卷剩余容量全部给lv:
lvextend -l +100%FREE /dev/vg_name/lv_name
- 扩完之后查看lv:
lvs
4.FS(file system)文件系统扩容
- xfs扩容
xfs_growfs /dev/vg_name/lv_name
- ext4扩容
resize2fs /dev/vg_name/lv_name
5.LVM逻辑卷缩容
在 Linux 系统中,LVM (Logical Volume Manager) 是一种用于管理磁盘分区的工具,它允许你创建、删除、扩展和缩小逻辑卷(Logical Volume)。
重要提示:在进行任何磁盘操作前,请务必备份重要数据。操作错误可能导致数据丢失。
-
备份数据: 在开始缩小逻辑卷之前,首先备份其中的所有数据,以防止数据丢失。
-
卸载逻辑卷: 如果逻辑卷包含操作系统的根目录或者已挂载的其他重要目录,需要在进入单用户模式下或使用 Live CD 环境下卸载该逻辑卷。这是因为无法在线缩小当前正在使用的逻辑卷。
-
卸载文件系统: 在缩小逻辑卷之前,确保已卸载文件系统。如果是 ext2/ext3/ext4 文件系统,可以使用以下命令:
umount /mnt/vg2/lv1/
-
检查文件系统: 在缩小逻辑卷之前,最好使用文件系统检查工具检查文件系统是否有错误。对于 ext2/ext3/ext4 文件系统,可以运行:
e2fsck -f /dev/vg2/lv1
-
缩小逻辑卷: 使用
lvresize
命令来缩小逻辑卷。例如,假设你要将逻辑卷/dev/vg2/lv1
缩小到 10G,可以运行:lvresize --resizefs --size 10G /dev/vg2/lv1
这将缩小逻辑卷的大小,并自动调整文件系统大小。
-
重新挂载逻辑卷: 如果你在步骤2中卸载了逻辑卷,现在可以重新挂载它。
-
验证操作: 确认文件系统和逻辑卷已成功缩小到所需大小。
请注意,缩小逻辑卷涉及风险,如果操作不当可能导致数据丢失。因此,在进行此操作之前,务必备份所有重要数据,并谨慎操作。如果你对这些步骤不确定或不熟悉,建议寻求专业人士的帮助。
6.交换分区
偷懒:磁盘插上后,不用分区,直接格式化
- 制作交换分区:
1)磁盘分区
fdisk /dev/sde
2)格式化
mkswap /dev/sde1
3)挂载
vim /etc/fstab
UUID=ec059692-ddde-4971-9e4f-77246f6cb699 swap swap defaults 0 0
4)生效
swapon -a
5)查看详细信息
swapon -s
- 使用大文件制作:
1)创建大文件:
dd if=/dev/zero of=/data2/swap.img bs=1000M count=10
2)格式化
mkswap /data2/swap.img
3)挂载
vim /etc/fstab
/data2/swap.img swap swap defaults 0 0
4)生效
swapon -a
5)关闭swap分区:swapoff -a
6)显示内存的使用情况:free -m
7.mount umount
查看已经挂载上的系统的属性命令:mount
挂载命令:mount [-o] [remount,rw,ro,exec,noexec,auto]
/dev/vg1/lv1 /mnt/lv1
-o 挂载属性
remount,rw,ro,exec,noexec,auto
-o 指定文件系统属性
rw 读写
ro 只读
noexec 不允许执行二进制文件
exec 允许执行二进制文件
auto mount -a 开机自动挂载
remount 在线重新挂载
案例1:exec/noexec
[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1/ #挂载默认是有执行权限的
[root@linux-server ~]# mount -o noexec /dev/vg1/lv2 /mnt/lv2 #不允许执行二进制文件
[root@linux-server ~]# cat /mnt/lv1/hello.sh
#!/bin/bash
echo "hello"
[root@linux-server ~]# cat /mnt/lv2/hello2.sh
#!/bin/bash
echo "hello"
[root@linux-server ~]# chmod +x /mnt/lv1/hello.sh
[root@linux-server ~]# chmod +x /mnt/lv2/hello2.sh
[root@linux-server ~]# /mnt/lv1/hello.sh
hello
[root@linux-server ~]# /mnt/lv2/hello2.sh
-bash: /mnt/lv2/hello2.sh: Permission denied
取消挂载
umount /dir_point/lv_name
[root@linux-server ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1.7G 34M 1.7G 2% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2
[root@linux-server ~]# umount /mnt/lv2/
8.raid–磁盘阵列
8.1raid介绍
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说,
RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术
8.2raid原理
raid0 ---数据条带卷 最少需要两块磁盘,分别往每一块磁盘上写一部分数据 优点: 1.读写速度快, 2.磁盘利用率:100% 缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。 应用场景: 1)对数据完整性要求不高的场景,如:日志存储,个人娱乐 2)要求读写效率高,安全性能要求不高,如图像工作站 ============================================================================ raid1 又叫镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。 一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。 优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快 缺点:写速度慢,无数据校验。磁盘利用率不高 磁盘利用率:50% 应用场景: 存放重要数据,如数据存储领域 =========================================================== raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。RAID5的磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。 raid5最少需要3块磁盘。 优点: 1.可以找回丢失的数据---数据可以通过校验计算得出, 2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去 3.有校验机制 4.读写速度高 5.磁盘利用率高 缺点: 1.磁盘越多安全性能越差 #定义: RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个校验信息。RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。 应用场景:安全性高,如金融、数据库、存储等。 ================================================== raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式。 RAID6引入双重校验的概念,最少需要四块磁盘,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 优点: 1.容错:允许两块磁盘同时坏掉。读写快。 2.良好的随机读性能 3.有校验机制 缺点: 1.写入速度差 2.成本高 应用场景:对数据安全级别要求比较高的企业 =============================================== RAID10:先做镜像再作条带--也叫混合raid 优点: 1.较高的IO性能 2.有数据冗余 3.无单点故障 4.安全性能高 缺点:成本稍高 应用场景: 特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。 =======================================================
8.3作用
为什么要做raid? #为了保证数据完整性,防止数据丢失
8.4购买磁盘后需要操作
1.有磁盘,
2.制作raids5,
3.开始分区,
4.刷新分区表,
5.制作文件系统,
6.挂载。