磁盘


磁盘 Disk

  • 名词:

    • DISK 磁盘、硬盘
    • Platter 盘片
    • Platter Surface 片面
    • Sector 扇区
    • Track 磁道
    • Head 磁头
    • Cylinder 柱面
  • 磁盘作用:存储数据

  • 种类:机械硬盘、固态硬盘

    • 根据接口分类:
      • SATA,串口ata硬盘(支持热插拔和热交换)

      • SAS,串行连接SCSI,是新一代的SCSI技术

        (主要用于企业级服务器和存储系统。支持热插拔功能)

      • SCSI,小型计算机系统专用接口

      • NVMe(基于PCIe基于PCIe总线,主要用于ssd)

      • pcie

      • M.2 是指一种固态硬盘的尺寸,包含 SATA 和 NVMe 两种类型

  • 磁盘设备

    hd[a-t] #IDE设备
    
    sd[a-z] #SCSI设备
    
    fd[0-7] #软盘驱动设备
    
    md[0-32] #软RAID设备
    
    loop[0-7] #本地回环设设备
    
    lp[0-3] #打印机设备
    
    mem #内存设备
    
    null #空设备,也称为黑洞,任何写入的数据都将被丢弃
    
    zero #零资源设备,任何写入的数据都将被丢弃
    
    full #满设备,任何写入的数据都将失败
    
    tty[0-63] #虚拟终端设备
    
    random #随机数设备
    
    urandom #随机数设备
    
    port #存取I/O端口
  • GB,gigabyte,数据信息计量单位,十进制的容量单位,1000
  • GiB,gibibyte,硬盘存储的一个单位,二进制的容量单位,1024
  • 分区格式:mbr,guid(gpt)

  • 步骤:先分区,格式化选择文件系统,挂载

简而言之

  • 磁盘、分区、分区表、文件系统,格式化之间关系理解

    • 一个磁盘(好比一个衣柜ssd,hdd),要先分区(分成几个块,哪一块放什么mbr,gpt),然后格式化(清理干净)然后选择文件系统(衣服怎么放,叠起来还是卷起来ext4,ntfs),挂载目录(给对应区域写上标签),最后正常使用文件(放衣服)
    • 先fdisk/parted分区,再针对分区mkfs格式化为某种文件系统,然后挂载
  • linux一切皆文件

    • linux采用文件夹模式,在linux中,新的硬盘加入也是以文件夹的方式挂载到主分区

文件系统

  • 定义并实现了数据在存储介质上的组织方式和结构,以及如何被访问,那组织的⽅式不同,就会形成不同的⽂件系统

  • 一言以蔽之

    * FAT32格式兼容性好,但不支持4GB以上的文件
    
    * NTFS格式支持大容量文件和超大分区,但对闪盘芯片有伤害(SSD和U盘同为闪存,但SSD还是用NTFS格式好)
    
    * exFAT格式是最适合windows U盘的
    
    * 如果你经常需要在Linux和Windows上用U盘互相传文件,而且Linux核心版本又比较低,推荐还是FAT32,不考虑兼容使用exFAT。(用FTP或者SCP不香吗?)
    
    
    * 在linux上,一般情况下最好使用ext4文件系统,因为其向后兼容性很好,你可以把ext2、ext3的文件系统按照ext4挂载。并且ext4可以有效减少碎片,对于SSD和HDD硬盘是很好的选择。
    

FAT32

  • 文件分配表,是采用32位二进制数记录管理的磁盘文件管理方式

  • 优点:是稳定性和兼容性好,且维护方便

  • 缺点:安全性差,且最大只能支持32GB分区,单个文件也只能支持最大4GB

  • 其他:fat、fat16

NTFS

  • WINdowsNT 和高级服务器网络操作系统环境的文件系统,并且 NTFS 是一个日志文件系统,这意味着除了向磁盘中写入信息,该文件系统还会为所发生的所有改变保留一份日志。
  • NTFS 设计初衷是提供比 FAT32 更高的可靠性,并消除 FAT32 文件系统容量限制。它除了支持更大的分区和文件、更节约硬盘空间外,还提供了 FAT32 文件系统不能提供的长文件名、压缩分区、事件追踪、文件索引、高容错性、数据保护和恢复以及加密访问等功能
  • 在发生错误的时候很快恢复正常,而且不会丢失任何数据。
  • 针对传统机械硬盘而设计的。它采用了一种日志式的文件系统,需要频繁记录磁盘的详细读写操作,会给U盘SSD 这类储介质带来额外的负担。比如同样存取一个文件或目录,NTFS 分区格式的读写次数就比 FAT32 多得多,因此理论上使用NTFS格式分区的U盘寿命更短

exFAT

  • 既弥补了 FAT32 的局限性和缺点,又没有 NTFS 那些会影响U盘寿命的功能

  • 分区大小和支持的单个文件大小最大可达16EB,存储单位灵活最小为0.5KB,最高可达32MB,空间利用率更高

ext4

  • 日志文件系统、第四代扩展文件系统,表结构
  • 支持单个文件的大小高达16TB,支持不同分区上以不同方式存储数据的功能,支持文件虚拟化,空间回收
  • 其他:ext2、ext3

XFS

  • centos7默认
  • 64 位高性能日志文件系统,树结构
  • 单个、最大支持8EB,支持并行IO操作,RAID上的扩展性更好,多线程并行读写时比Ext4有优势

Btrfs

  • B-Tree File System的缩写,可以读作“butter fs”或“b-tree fs”

tmpfs

  • 临时文件系统,是一种基于内存的文件系统
  • devtmps
    • 设备文件系统,它将其所有文件保存在虚拟内存中。所有内容都是临时的
      • 根路径在/dev

vfs

  • 虚拟文件系统

  • vfat 虚拟文件分配表,是作为FAT文件系统的一种扩展。

分区

  • 分区(分盘),划分磁盘空间,对磁盘划分 逻辑边界,提升安全性和利用率

    • 比一个衣柜,划分成多个分区,第一分区用来放内衣袜子,第二分区用来存放上衣,第三分区用来存放裤子,放袜子的区域乱了不影响其他区域
  • 分区建议: 新手直接默认分区,除了SWAP分区外,其他分区的文件系统一律选择ext4类型,设备类型默认选LVM

    • 一般至少三个分区:/,/boot,swap
  • 必须的分区

    • boot分区:

    ​ 作用:引导分区,包含了系统启动的必要内核文件,即使根分区顺坏也能正常引导启动 一般这些文件所占空间在200M以下,

    ​ 分区建议:分区的时候可选100M-500M之间,如果空间足够用,建议分300-500M。避免由于长期使用的冗余文件塞满这个分区。

    ​ 分区格式:建议ext4,按需求更改

    • /分区(根分区):

    ​ 作用:所有的文件都从这里开始,类似于Windows c盘,如果有大量的数据在根目录下(比如FTP等)可以划分大一点的空间

    ​ 分区建议:建议15G以上。看需求,根分区和home分区的大小,主要占空间在哪儿就在那里分大容量

    ​ 分区格式:建议ext4,按需求更改

    • swap分区:

    ​ 作用:类似于Windows的虚拟内存,在内存不够用时占用硬盘的虚拟内存来进行临时数据的存放,而对于linux就是swap分区

    ​ 分区建议:建议是物理内存大小的2倍,比如你电脑是4G的物理内存,swap分区可以是8G

       分区格式:swap格式

  • 可选的分区

    • home分区

       作用:存放用户数据,HOME的结构一般是 HOME/userName/userFile,如果不分则默认在/目录下
       分区建议:如果用户数据多可以将此分区适当增大,参考“根分区”;一般硬盘的主要容量几乎都在Home分区和根分区下
       分区格式:建议ext4,按需求更改

    • var分区

       作用:用于log日志的文件的存放,如果不分则默认在/目录下

       分区建议:如果linux用于服务器或者经常做日志分析,请划分var分区,避免日志文件不断膨胀塞满导致根分区而引发问题。

       分区格式:建议ext4,按需求更改

swap 交换分区管理

  1. swap是硬盘的一个特殊分区,让读取快一点,一般存储热点数据,windows称为虚拟内存
  2. 当内存不够的时候,才申请swap空间,只要空间足够,就不需要swap空间

LVM 逻辑卷

  1. LVM(Logical Volume Manager)逻辑卷管理,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性
  • 传统的文件系统是基于分区的,一个文件系统对应一个分区

    1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;

    2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。

    3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。

    传统文件系统:/dev/sda、/dev/sda1

    lvm:

    显示:/dev/mapper/vg name - lv name,永久自动挂载的时候也要这样写

    表达:/dev/ikun/ikunlv

  • PD按照一定大小格式化为多个PE,多个PE共同组成PV,PV管理着PE

    多个PV共同组成VG,实际上就是VG管理所有的PE,相当于一个池子

    LV就相当于分区,按需VG从中增删PE,达到扩容或缩减

    • 比如:

      新增磁盘sdc,格式为3个PE并加入VG,当LV需要扩容的时候,直接从VG中添加PE即可

pPWs81J.png

# 创建LVM

#例:
	1# 在sdb和sdc上分别建立一个主分区作为pv
		sdb1、sdc1
		
	2# 将之格式化为PV
		输入: pvcreate /dev/sdb1 /dev/sdc1
		显示: Physical volume "/xxx" successfully created.
		
	3# 查看pv
		输入: pvdisplay,显示详细信息
		显示: "/xxx" is a new physical volume of "xxx.00 GiB"

		输入: pvs,显示信息
		显示: PV  VG   Fmt  Attr   PSize   PFree 
		
	4# 创建VG,将pv加入其中
		输入:vgcreate 卷名 pv
			    vgcreate ikun /dev/sdb1 /dev/sdc1
		显示:Volume group "ikun" successfully created
		
	5# 查看vg
		输入:vgdisplay 或者 vgs 
		显示:重点信息  
			VG Name               ikun 
			Format                lvm2
			VG Size               1.95 TiB
			Free  PE / Size       511998 / 1.95 TiB

	6# 基于vg创建lv
		输入:
			# 指定大小
			lvcreate -L 950G -n ikunlv ikun  //从vg ikun中创建950G的lv ikunlv
			
			# 指定百分比,创建空闲空间百分之八十大小
			lvcreate -L 80%Free -n ikunlv2 ikun
			参数:
				-L 后面是要分给LV的大小
				-n 创建的LV名称
		显示:
			 Logical volume "ikunlv" created.
			 
	7# 查看
		输入:lvdisplay 或 lvs
		
	8# 调整
		修改大小,删除,必须先取消挂载
		
		扩容:
			1、在现有的空间上增加指定的大小
			lvextend -L +20G /dev/ikun/ikunlv2
			
			2、将现有空间增加到多少
			lvextend -L 700G /dev/ikun/ikunlv2
		
		缩减:
			减少lv空间的操作是有风险的,确认空间使用量、剩余空间量,操作之前一定要做好备份,以免数据丢失。
			操作顺序是:检查文件系统,减少文件系统大小,减少lv大小。
			命令依次为:
				e2fsck -f /dev/ikun/ikunlv2   强制检查文件系统总大小、已使用大小,必备!
				resize2fs /dev/ikun/ikunlv2 300G     减少到300G
				lvreduce -L 300G /dev/ikun/ikunlv2  减少到300G
		删除:
			lvremove 、vgremove 、pvremove
		
		tips:
			查看:对应信息pvs、vgs、lvs,扫描scan、详细信息display
			创建:create
            移除:remove
			扩展:extend(除pv)
			减少:reduce(除pv)
		
	9# 正常格式化、挂载
		blikd,可以查看UUID,文件系统类型
		永久自动化挂载的时候建议使用 UUID,如果非要路径挂载
注意:
	显示:/dev/mapper/vgName-lvName,永久自动挂载(/dev/mapper/ikun-ikunlv)	
	表达:/dev/ikun/ikunlv   临时挂载

分区表

  • 记录了磁盘上每个分区的位置、大小和类型等信息,有 mbr格式,guid格式(gpt格式)

  • 对应的分区模式要选择对应的引导模式,根据自己需求,再bios中选择对应的引导模式,大于2t只能选择guid引导,读不到那么大的容量

  • mbr分区

    • 启动时,引导模式为 Legacy(bios)

    • 最大只能支持2 TB 的硬盘空间,linux中显示 dos

    • 主分区:最多划分4个,1-4,在其基础之上可以划分扩展分区,

    • 扩展分区:5-16,共12个,

    • 一共划分16个分区(4主12扩展),一般是主分区+扩展分区(扩展分区中创建逻辑分区)

      • 主分区:

        不可以再进行二次分区。可以用来引导、启动操作系统

        主分区可以直接建立文件系统,存储数据

      • 扩展分区:

        不允许直接格式化,只能格式化主分区和逻辑分区

        本身不承载空间。主要就是增加分区数量
        不能创建文件系统,可以划分逻辑分区

      • 逻辑分区:可以创建文件系统,存放数据,逻辑分区的数量没有限制

  • guid分区

    • 启动时,引导模式为 uefi
    • 主备模式,主区Primary ,备区Secondary
    • 分区数量几乎没有限制,每一个分区都可以独立存在,没有扩展分区、逻辑分区的概念,即所有分区都是主分区。

格式化

  • 对硬盘或存储设备进行初始化,清除存储设备上的所有数据

  • 一般过程

    • 先格式化文件系统

      mkfs.xfs /dev/sdXXX
      
      参数:
      	-f,强制格式化
      
      
    • 关闭文件自检系统

      tune2fs
      
      
      [root@localhost tmp]# tune2fs -c -1 /dev/sda1
      tune2fs 1.42.9 (28-Dec-2013)
      Setting maximal mount count to -1

挂载

  • linux中一切都是文件,挂载就是把目录和文件关联起来,访问此目录就等同于访问此文件,否则能看见文件,但是命令找不到文件

  • 挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。(linux上的文件夹就是挂载点)

  • 一个路径挂载一个物理磁盘,就不能在这个路径下挂载其他新的物理磁盘 ,路径与硬盘挂载1:1关系

  • 【 mount 要挂载的设备 挂载点】

    • 将指定的文件挂载到指定的目录

      -l  显示系统的所有挂载信息
      -t  指定设备的文件系统类型,否则mount自动选择文件系统类型
      -o  添加挂载的功能选项
      -r  挂载后设备只读
      -w  允许读写操作,rw权限
      
      # 一般流程
      mkdir /test # 新建空目录作为挂载点
      mount /dev/sda1 /tmp/test # 挂载
      df -h # 查看挂载
      
      手动挂载的分区,不具有永久性,系统重启后,挂载就会失效
      
      开机自动挂载
      编辑 /etc/fstab 文件
      一般先用blkid,看设备的UUID,然后用UUID挂载在新建空白目录下
      
      #<file system>  <mount point>   <type>  <options>  <dump>  <pass>
                                               defaults   0       0
  • 【 umount 挂载点 】

    • 取消挂载

      [root@localhost tftTest1]# mount /dev/sda1 /tmp/tftTest1   # 挂载设备sda1到挂载点tftTest1
      [root@localhost tmp]# lsblk -f    # 查看
      lsblk: dm-3:获取设备路径失败
      NAME      FSTYPE      LABEL UUID                                   MOUNTPOINT
      sda                                                                
      ├─sda1    xfs               bb9996f9-83e5-491b-87d8-9cc5efe9c7b4   /tmp/tftTest1
      
      [root@localhost tmp]# cd tftTest1 # 进入挂载点,查看磁盘设备内的文件
      [root@localhost tftTest1]# ls
      aoligei.txt
      [root@localhost tftTest1]# cd ..   # 退出目录
      [root@localhost tmp]# umount /tmp/tftTest1    # 取消挂载
      [root@localhost tmp]# cd tftTest1
      [root@localhost tftTest1]# ls    #看不到文件
      
      
      挂载点相当于给这个分区装了个门,让我们能够进出、访问

相关命令

  • 扩容、分区、格式化、挂载

    分区:fdisk(一主一扩多逻辑),parted 
    	fidsk管理mbr分区,parted管理mbr和gpt分区
    	
    格式化:mkfs,选择文件系统,注意扩展分区不能格式化
    
    挂载:mount,按需设置开机自动挂载
    	
    查看:lsblk、df、du、blkid

文章作者: william
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 william !
评论
  目录