首页 > 系统相关 >Linux-存储管理

Linux-存储管理

时间:2024-07-29 18:55:39浏览次数:15  
标签:存储管理 分区 文件系统 dev Linux 挂载 磁盘 硬盘

文章目录

1.硬盘

1.1 初识硬盘

2.磁盘分区

2.1 硬盘设备命名

2.2 磁盘分区方式

2.3 磁盘分区

3. fstab开机自动挂载

4. 文件系统

4.1 分类

4.2概念

5. 逻辑卷LVM

5.1 LVM管理

5.2 LVM制作

5.3 逻辑卷扩容

5.4 逻辑卷缩容

6. 交换分区

7. mount详解

8. raid -- 磁盘阵列

8.1 RAID介绍


1.硬盘

1.1 初识硬盘

硬盘有机械硬盘 HDD和固态硬盘SDD

机械硬盘(HDD)是一种存储设备,使用旋转磁盘和读/写磁头来存储和检索数据。

HDD基本结构:

  1. 盘片(Platters):机械硬盘通常由多个盘片组成,每个盘片都是一个圆形的金属或玻璃基板,上面涂有磁性材料。

  2. 磁头(Read/Write Heads):每个盘片都有两个磁头,一个用于读取数据,另一个用于写入数据。磁头位于盘片上方和下方,通过磁性浮动臂和驱动器来移动。

  3. 磁道(Tracks):盘片被划分为多个同心圆轨道,称为磁道。每个磁道可以存储一定量的数据。

  4. 扇区(Sectors):每个磁道被划分为多个扇区,每个扇区可以存储固定大小的数据块,通常为512字节。

  5. 主轴(Spindle):盘片通过主轴连接在一起,并由电机驱动主轴旋转。通常,硬盘的转速以每分钟转数(RPM)来表示,如5400 RPM、7200 RPM或10000 RPM。

  6. 磁头臂(Actuator Arm):磁头臂是一个可移动的机械臂,上面安装有磁头。它通过电机和控制器的控制,可以在盘片上移动磁头。

  7. 磁头定位器(Head Positioner):磁头定位器负责精确定位磁头在盘片上的位置。它使用电磁力将磁头臂移动到正确的磁道上。

  8. 控制器(Controller):硬盘的控制器是一个电子设备,负责控制硬盘的操作。它管理磁头的移动、数据的读写、错误检测和纠正等功能。

      当计算机需要读取或写入数据时,控制器将指令发送给磁头臂和磁头,使其移动到正确的位置,并在磁道上读取或写入数据。机械硬盘的工作原理基于磁性材料的磁化和反磁化过程,通过改变磁场的方向来存储和检索数据。然而,由于机械硬盘使用机械部件进行数据访问,因此速度较慢,且容易受到物理冲击和震动的影响。

SDD的优势:

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;

2.磁盘分区

2.1 硬盘设备命名

物理硬盘:    /dev/sd[a-z]

KVM虚拟化:
/dev/vd[a-z](半虚拟化驱动)
/dev/sd[a-z](全虚拟化驱动)

2.2 磁盘分区方式

分区的目的是便于进行文件分类。将一块硬盘分成几个小块,用来根据使用存放不同的文件。

分区格式:MBR格式、GPT格式

MBR格式
分区命令:fdisk  
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的硬盘。
一块硬盘最多分4个主分区。
一块硬盘可以直接划分4个主分区,也可以划分3个主分区和一个扩展分区,扩展分区下面可以划分多个逻辑分区

GPT格式
分区命令:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。最大可以多大,超过目前硬件可以支撑的硬盘大小
#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!因为转换格式要格式化硬盘

2.3 磁盘分区

首先在关机状态给虚拟机添加磁盘,磁盘名为:sdb

[root@localhost ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 7月  19 17:30 /dev/sda
brw-rw---- 1 root disk 8,  1 7月  19 17:30 /dev/sda1
brw-rw---- 1 root disk 8,  2 7月  19 17:30 /dev/sda2
brw-rw---- 1 root disk 8,  3 7月  19 17:30 /dev/sda3
brw-rw---- 1 root disk 8, 16 7月  19 17:35 /dev/sdb

查看硬盘信息:

[root@localhost ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   17G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1  973M  0 rom  

NAME:            设备的名称
MAJ:MIN            主设备号:次设备号
RM                设备是否可移动。0表示不可移动设备,1表示可移动设备。
RO                设备是否为只读。0表示可读写设备,1表示只读设备。
TYPE            TYPE:设备的类型。常见的类型包括disk(硬盘)、part(分区)、rom(只读存储设备)等。

MBR格式

分区命令:fdisk

创建分区

[root@localhost ~]# fdisk -l /dev/sdb     #查看磁盘分区信息

[root@localhost ~]# fdisk /dev/sdb   #给sdb硬盘分区

输入 m  查看帮助

输入 n 进行分区

选择 p:主分区或 e:扩展分区

默认回车

设置主分区大小创建主分区,然后
Command (m for help): p  ---打印分区信息

输入w保存退出

partprobe /dev/sdb   #更新磁盘分区表,手动让内核更新分区表,不需要重启。

GPT格式

yum -y install gdisk  #安装分区工具

[root@localhost ~]# gdisk -l /dev/sdc     #查看磁盘分区信息

[root@localhost ~]# gdisk /dev/sdc   #给sdc硬盘分区

输入 n 创建分区

选择分区序号和大小,输入p打印分区信息,输入w保存信息

创建文件系统

mkfs.ext4 /dev/sdb1   #格式化成ext4格式的文件系统

mkfs.xfs /dev/sdc2   #格式化成xfs格式的文件系统

挂载:

临时挂载,重启后会自动取消挂载

mkdir /mnt/disk1   #创建挂载目录

mkdir /mnt/disks   #创建挂载目录

mount  /dev/sdb1 /mnt/disk1/

mount /dev/sdc2 /mnt/disks/

查看磁盘挂载与磁盘使用空间 :df -Th

-T  打印文件系统类型
-h 人性化显示,磁盘空间大小

取消挂载:

umount /mnt/disks/

强力卸载:

方法一:umount -l /mnt/disk1/ # 强行卸载,即使目录有资源被进程占用,也可以卸载

方法二:安装fuser:yum -y install psmisc

               fuser  /挂载点

3. fstab开机自动挂载

3.1./etc/fstab文件实现开机的时候自动挂载

 blkid /dev/sdb1  #查看uuid和文件系统类型

开机自动挂载:

 vim /etc/fstab

写入:UUID=fc66a0a7-cb1e-4b39-80ab-8ceb6f895f19 /mnt/data2 xfs  defaults        0 0

参数解释:
第1列:挂载设备
(1)/dev/sda5  
(2)UUID=设备的uuid   rhel6/7的默认写法   同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性    
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查

 mount -a #自动挂载

3.2 /etc/rc.d/rc.local开机自动挂载

       这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可

vim /etc/rc.d/rc.local #将挂载命令直接写到文件中

chmod +x /etc/rc.d/rc.local #添加执行权限

reboot重启

4. 文件系统

4.1 分类

分类:
本地文件系统,不能在网络上用。
Windows:ntfs  

Linux:xfs  ext2、ext3,ext4

u盘:fat32
网络文件系统,也可以在本地用。
nfs (共享磁盘)  glusterfs   hdfs(大数据)   ceph(分布式存储)

4.2概念

作用:
管理文件的一套系统。
文件的编辑,拷贝,粘贴,移动。


inode :inoed块、i节点--索引节点。专门存储inode信息。也就是是文件的属性-(也叫元信息).它是文件或目录在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点,每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode的内容

文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime,mtime,atime。
链接数,即有多少文件名指向这个inode

查看inode信息

stat /etc/hosts

ls -i /etc/hosts   -i:查看/etc/hosts 的inode号

EXT和XFS

EXT 家族支持度最广:andirons
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!

XFS 同样是一种日志式文件系統:
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快

5. 逻辑卷LVM

5.1 LVM管理

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。

传统分区的缺点:
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区、建立文件系统或把分区中的数据移到另一个更大的分区中的方法。

采用LVM时的优势:
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.当磁盘空间不足而加入新的硬盘时,不必将数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。
3.文件系统建立在LVM上,可以跨分区,方便使用;

使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。

5.2 LVM制作

制作步骤:添加硬盘 ——> 制作卷组——> 制作逻辑卷——> 制作文件系统——> 进行挂载

制作物理卷:pvcreate  /dev/sdd

查看物理卷:pvs 、pvscan 、pvdisplay

制作卷组:vgcreate  cloud(卷组名) /dev/sdd

查看卷组:vgs 、vgscan 、vgdisplay

制作逻辑卷:

lvcreate  -L  +5G(设置逻辑卷大小)  cloud  -n  lv1(逻辑卷名)

lvcreate  -l 1250(PE数量,1PE=4MB)cloud  -n  lv1(逻辑卷名)

lvcreate  -l +100%FREE  cloud  -n  lv1(逻辑卷名)        #将卷组剩余空间全部分配给逻辑卷

查看逻辑卷:lvs 、lvscan 、lvdisplay

制作文件系统:

mkfs.xfs /dev/cloud/lv1        #xfs系统

mkfs.ext4 /dev/cloud/lv1        #ext4系统

挂载:mount /dev/cloud/lv1

自动挂载同上

5.3 逻辑卷扩容

扩容步骤:制作物理卷 ——> 扩容卷组 ——> 逻辑卷扩容 ——>文件系统扩容

添加硬盘:sde

物理卷扩容:vgextend  cloud  /dev/sde

逻辑卷扩容:lvextend  -l  +100%FREE  /dev/cloud/lv1

文件系统扩容:

ext4:resize2fs  /dev/cloud/lv1

xfs:xfs_growfs  /dev/cloud/lv1

5.4 逻辑卷缩容

重要提示:在进行任何磁盘操作前,请务必备份重要数据。操作错误可能导致数据丢失。

  1. 备份数据: 在开始缩小逻辑卷之前,首先备份其中的所有数据,以防止数据丢失。

  2. 卸载逻辑卷: 如果逻辑卷包含操作系统的根目录或者已挂载的其他重要目录,需要在进入单用户模式下或使用 Live CD 环境下卸载该逻辑卷。这是因为无法在线缩小当前正在使用的逻辑卷。

  3. 卸载文件系统: 在缩小逻辑卷之前,确保已卸载文件系统。如果是 ext2/ext3/ext4 文件系统,可以使用以下命令:

    umount /mnt/vg2/lv1/
  4. 检查文件系统: 在缩小逻辑卷之前,最好使用文件系统检查工具检查文件系统是否有错误。对于 ext2/ext3/ext4 文件系统,可以运行:

    e2fsck -f /dev/vg2/lv1
    
  5. 缩小逻辑卷: 使用 lvresize 命令来缩小逻辑卷。例如,假设你要将逻辑卷 /dev/vg2/lv1 缩小到 10G,可以运行:

    lvresize --resizefs --size 10G /dev/vg2/lv1 

    这将缩小逻辑卷的大小,并自动调整文件系统大小。

  6. 重新挂载逻辑卷: 如果你在步骤2中卸载了逻辑卷,现在可以重新挂载它。

  7. 验证操作: 确认文件系统和逻辑卷已成功缩小到所需大小。

请注意,缩小逻辑卷涉及风险,如果操作不当可能导致数据丢失。因此,在进行此操作之前,务必备份所有重要数据,并谨慎操作。如果你对这些步骤不确定或不熟悉,建议寻求专业人士的帮助。

6. 交换分区

交换分区管理 Swap---也叫虚拟内存

作用:提升内存的容量,防止OOM(Out Of Memory)

现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程(内核会先删除占用内存多的进程)。

查看当前的交换分区:free  -m

查看交换分区信息:swapon -s  

方法一:

分一个主分区:fdisk /dev/sdd

刷新分区表:partprobe /dev/sdd

初始化: mkswap /dev/sdd1 

挂载

激活swap分区:swapon -a

                          swapon -s

关闭swap分区:swapoff /dev/sdd1  

方法二 file制作:

dd if=/dev/zero of=/swap2.img bs=1M count=512

dd :读入  

if=/dev/zero of=/swap2.img:从空设备里面拿空块 到交换分区                

bs=1M:块多大  

count=512:一共多少

初始化:mkswap /swap2.img  

挂载

激活swap分区:swapon -a

                          swapon -s

7. mount详解

常见的挂载选项:

mount  #查看已经挂载上的系统的属性

默认挂载具有执行权限

-o         指定文件系统属性
rw           读写 
ro           只读 
noexec       不允许执行二进制文件
exec       允许执行二进制文件 
auto       mount -a 开机自动挂载 
remount       在线重新挂载 

取消挂载:unmount

案例:

[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1/        #挂载默认是有执行权限的
[root@linux-server ~]# mount -o noexec /dev/vg1/lv2 /mnt/lv2  #不允许执行二进制文件

8. raid -- 磁盘阵列

8.1 RAID介绍

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

最常见的raid级别:0、1、5、6、10:是 1和0 的组合

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.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。

标签:存储管理,分区,文件系统,dev,Linux,挂载,磁盘,硬盘
From: https://blog.csdn.net/weixin_64502313/article/details/140763383

相关文章

  • 【Linux中Shell的功能】
    一、Shell概念Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell编程跟JavaScript、php编程一样,只要有一个......
  • MPsoc TSN网络功能设计及测试 (petalinux22.2)
    TSN参考链接:linkxilinx内核TSNkernel代码链接:linkpetalinux-config-ckernel选择如下:TSNPL端设备树配置代码tsn0_axi_firewall_0:axi_firewall@a0020000{ clock-names="aclk"; clocks=<&misc_clk_0>; compatible="xlnx,axi-firewall-1.2&qu......
  • Linux——进程间通信
    一、进程间通信介绍目的数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个进程或一个组发送消息,通知它(它们)发生了某种事件进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够......
  • Linux操作系统下编译、链接过程详解
    gcc和g++的区别:gcc和g++是GNU编译器集合中的两个不同的编译器,它们之间的主要区别在于它们所针对的编程语言以及它们的行为和功能。1.编译器的目标语言:gcc是用于编译C语言的编译器,而g++是用于编译C++语言的编译器。因此它们分别用于编译不同的源代码文件;2.语法支持:gcc和......
  • linux shell read 按列读取txt文本
    前言全局说明一、说明通常情况下,如果文本里有多列数据,会先读入,然后用grep和awk先拆分成行,在拆分成列。这样费时费力,遇到特殊字符行,还不好处理。在解决别的问题时候,无意发现read有直接按列读取的功能。二、文件2.1存放两列数据的文件文件名:list.txt1libCommonA......
  • Linux shell mktemp -d命令生成临时文件
    前言全局说明一、说明二、mktemp命令2.1创建临时文件mktemp2.1创建临时目录mktemp-d三、命令行示例mktempll/tmp/tmp.fvi5gFbDgr四、sh脚本使用4.1创建tmpfile=$(mktemp)4.2删除rm"$tmpfile"免责声明:本号所涉及内容仅供安全研究与教学使用......
  • linux科研武器库 - 文件数量统计 - ls -l | grep "^-" | wc -l
    使用场景:文件数量统计,在科研场景中,更多是用于检验、核对数据集的样本数量,防止数据遗漏等意外情况。常用命令:ls-l|grep"^-"|wc-l作用:统计当前目录下,文件的个数(不包括目录/文件夹)ls-lR|grep"^-"|wc-l作用:统计当前目录下,文件的个数(包括子目录中的文件)ls-l......
  • T3/A40i支持Linux-5.10新内核啦,Docker、Qt、Python统统升级!
    自2021年创龙科技推出全志国产化率100%的T3/A40i工业核心板后,不到两年时间已超过800家工业客户选择创龙科技T3/A40i平台。随着客户产品的不断升级与迭代,部分“能源电力”、“工业自动化”行业客户对T3/A40i的Linux版本提出了更高要求,主要涉及Docker、Qt、Python等组件特性。秉持......
  • linux 打印my.txt文件的第10-15行
    #打印my.txt文件的第10-15行sed=streameditorsed-n'10,15p'my.txt#打印my.txt文件的第10-15行awk是三个人名字各取了一个字母awk'NR>=10&&NR<=20'my.txt常用的awk命令示例:打印文件的所有行:awk'{print$0}'filename打印文件的第10行到第20行:awk'NR>=10......
  • 如何根据Linux Kernel Mailing List打patch
    Linux内核正在不断开发和改进。每天的补丁都会提交到Linux内核邮件列表(LKML)。其中一些补丁被接受并合并到主流Linux内核中,供用户使用,而其他补丁则永远无法使用。有时从LKML获取补丁是有用的,例如,如果你在内核中开发,或者只是因为你想保持在前沿。另一个原因可能是,您需要向LKML提出......