linux磁盘管理

喜欢而已 提交于 2019-12-05 22:58:48

一些基础

硬盘接口类型 

  • ide 早期家庭电脑 scsi 早期服务器
  • sata 目前家庭电脑 sas 目前服务器
  • raid卡--阵列卡
  • 网卡绑定
  • ABI 应用程序与OS之间的底层接口
  • API 应用程序调用第三方库的接口
  • Windows 磁盘分区方式,不同的方式,BIOS的设置是不同的
  • 硬盘分区格式为MBR格式,启动模式应该为Legacy;
  • 硬盘分区格式为GUID(GPT)格式,启动模式应该为UEFI
  • BIOS+MBR 以前的方式,分区最大支持2T    与UEFI+GPT 是目前最新的方式,硬盘支持容量特别大
  • 硬盘寻址方式与空间大小:由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB 时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则 只能使用LBA寻址方式 

 

设备在Linux的命名方式

SCSI, SATA, SAS, IDE,USB: /dev/sd ?    设备都以/dev/sd开头
虚拟磁盘:/dev/vd 、/dev/xvd ?
不同磁盘标识:a-z,aa,ab… /dev/sda, /dev/sdb, ... ?  第一块磁盘就是a ,第二块就是b.....
同一设备上的不同分区:1,2, ... /dev/sda1, /dev/sda5  第一个分区就是1,第二个分区就是2....

 

 

 

 分区类型

MBR:(只支持2T的硬盘分区)

  • 主分区:一块硬盘最多四个,最少一个,安装OS,只有1个是激活主分区
  • 扩展分区:一块硬盘最多一个,不能直接使用,需要划分成更小的逻辑分区
  • 逻辑分区:扩展分区的最小分区单位
  • 在Linux中 MBR分区类型,主分区和扩展分区只能有1-4个,扩展分区从5往后。
  • Master Boot Record
  • 0磁道0扇区:512bytes   446bytes: boot loader   64bytes:分区表,其中每16bytes标识一个分区   2bytes: 55AA 

比如 Linux分区方案
/dev/sda 200G
/dev/sda1 mount /boot 1G mount point
/dev/sda2 mount / 100G
/dev/sda3 mount /data 50G
/dev/sda4 extend 49G
/dev/sda5 逻辑分区 swap 4G
有一块200G的硬盘,3个主分区1个扩展分区,扩展分区分了剩余的所有空间,扩展分区中分了4G的逻辑分区给swap,swap分区是Linux的(虚拟内存)没有挂载点

 

 

MBR 最前面的512字节中,有MBR分区表,这个表记录了分区的情况 

GPT:只支持主分区    uuidgen //生成UUID guid:128位二进制 32位16进制

Linux和Windows的文件系统类型 不一样~~~

 Linux 常用文件格式 ext2 ext3 ext4 xfs
Windows:常用文件格式 FAT32, exFAT,NTFS 

管理分区

     
1分区 2格式化(文件系统) 3挂载

gdisk /dev/sdb 类fdisk 的GPT分区工具

fdisk -l [-u] [device...] 查看分区

fdisk /dev/sdb  管理分区

子命令:

  • p  分区列表
  • t  更改分区类型
  • n  创建新分区
  • d  删除分区
  • v  校验分区
  • u  转换单位
  • w  保存并退出
  • q  不保存并退出

 

  • fdisk -l 磁盘硬盘分区详细情况(专门针对于mbr分区的,管理gpt分区处于试验阶段,不太适配)
  • lsblk 列出块设备
  • echo '- - -' > /sys/class/scsi_host/host2/scan 重新扫描磁盘,添加一块硬盘后,重启之后才可以识别到,这样就不用重启了 host0 host1 host2
  • 有时候磁盘满了需要删文件使磁盘使用率降下来,但是有一些进程会占用它,当你删除之后还是那么大,可以用这个命令立刻让这个文件变成0 >2019-11-08.log

      1)使用fdisk创建完分区之后,默认是mbr分区方式,可以通过 fdisk -l 查看,分好区之后,可以把分区删除掉,把分区删掉之后,在通过 fdisk -l 查看分区,就会看到没了分区了,但是还是存在分区类型的,为什么会存在?

就是因为前512字节中存在 55aa标志位,所以他认为你之前分过区了,怎么让硬盘变得跟新的一样呢?

dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510  //把标志位清空

     2)  我们通过fdisk 分完区之后,退出的时候要注意看提示信息,一般新的硬盘你分好之后,内存和硬盘都会分好的,你就可以直接用了,但是如果你分的是之前分过的硬盘,那么你退出后,就会有报警,因为你是分好了,但是内存中没有同步到,你用 fdisk –l 可以看到分好的分区(fdisk 是读取物理磁盘真实的情况,而其他的查看分区命令 如lsblk, ls /dev/sda*,cat /proc/partitions,是读取内存中的分区情况)

    同步问题  要么重启 要么下面的命令

centos6

加分区:partx -a /dev/sda

删除分区: partx -d --nr 5-7 /dev/sda

centos5,7

partprobe

Partprobe

 3) 有两快硬盘,第一块分区分好了,按照同样的方法把第二块也分一下,

  两块硬盘分区同步,第二块硬盘按照第一块硬盘分区方式同步,本质就是同步了第一块硬盘的MBR的前64个字节(主分区与扩展分区)  逻辑分区同步不了,逻辑分区的分区信息是在EBR里面的,所以可以看出,一块硬盘有没有分区,分区格式是什么,分区情况是什么,都是存在MBR表里面的,下面的命令就是同步了MBR的分区表

      

 

4)那既然一块硬盘有没有分区本质是看MBR表的,那快速清理一个硬盘的分区,就直接把分区表的字节改一下

    

 

 

 

 

建立文件系统(格式化)

      mkfs命令:

      (1) mkfs.FS_TYPE /dev/DEVICE   

        • ext4   
        • xfs   
        • btrfs   
        • vfat

            对于已经存在了文件系统的分区,重新格式化需要加-f选项
    blkid //查看分区的文件系统类型

 

挂载

  • 挂载方法:mount DEVICE MOUNT_POINT 
  • mount:通过查看/etc/mtab文件显示当前已挂载的所有设备 
  • 挂载点下原有文件在挂载完成后会被临时隐藏
  • 挂载点目录一般为空  事先存在,建议使用空目录 
  • -r   readonly,只读挂载
  • -w   read and write, 读写挂载
  • df -hl 查看挂载情况
  • 一个设备可以挂载到多个目录下,一个目录一次只能挂载一个设备

# 将做好的文件系统挂载到 newuser 文件夹上

mount /dev/sdb1 /home/newuser/

卸载

  •   umount DEVICE 
  •   umount MOUNT_POINT 
  •   取消挂载的时候,要退出这个目录,不能再目录里面,自己把自己杀掉?也有可能是其他进程访问了,所以 fuser –km   MOUNT_POINT 
  •   查看挂载情况  findmnt   MOUNT_POINT|devic

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!