一、 磁盘管理

1. 硬盘命名规则

  • 名称:

    • 硬盘:/dev/sd[a-p]

    • 光盘:/dev/sr0 /dev/cdrom

    • 打印机:/dev/lp[0-15]

  • 硬盘命名分析

    • 硬盘名称以sd开头

    • 使用了a-p代表16块不同的硬盘

    • 主分区编号为:1 2 3 4

    • 逻辑分区:从5开始

    • 例:/dev/sda5:表示第一块硬盘的第一个逻辑分区

    • 例:/dev/sdb2:表示第二块硬盘的第二个主分区

2. 添加新硬盘

  • 关闭系统

  • 编辑虚拟机设置

  • 点击“添加”

  • 选择硬盘类型

  • 选择“SCSI”类型

  • 创建新虚拟磁盘

  • 设置容量(默认:20GB),将虚拟磁盘存储为单个文件

  • 命名(默认)

  • 完成

3. 分区格式

  • MBR(主引导记录区)分区格式

    • MBR数据存储于第0磁道第1扇区

    • 作用:存储硬盘一系列分区参数及一段引导程序

    • 组成:

      • 原则:MBR所在扇区共512B

        • MBR信息:446B

        • DPT:硬盘分区表,64B

        • 最后两个字节为结束标志

        • 构成图:

    • MBR分区特点:

      • 主分区(P):不能超过4个

      • 扩展分区(E):只能有1个

      • P+E最多4个

      • 逻辑分区(L):由扩展分区进行划分

      • 一般使用:PPP+E的结构

  • GPT(磁盘分区表)分区格式

    • 产生原因

      • MBR分区模式最高支持磁盘容量为2.2TB

      • MBR分区表中没有备份机制,若分区表被删除,则硬盘数据相当于丢失

      • MBR存储相关信息只有446B,无法存储较多内容

    • 分区格式

      • GPT分区使用LBA(逻辑区块)记录磁盘信息

      • LBA区块大小为512B-4K,支持68个LBA区块,其中前34个LBA区块记录分区信息,后34个LBA区块记录备份信息

    • LBA区块作用

      • LBA0:与MBR分区功能相同,并存储MBR分区标志或GPT分区标志

      • LBA1:存储GPT表头信息

      • LBA2-LBA33:记录分区信息,一个LBA区块可记录4个分区信息,共32个分区128个分区信息(32×4=128)

    • GPT分区特点

      • GPT不再区分主分区和扩展分区,所有分区都是主分区,理论上可以划分128个主分区

      • GPT分区理论上最大支持磁盘空间为8ZB(1ZB=230TB)

4. 常见磁盘命令

  • df命令:

    • 作用:列出磁盘使用量

    • 格式:df -参数 目录名/文件名

    • 参数

      • -a:列出所有文件系统

      • -h:以容易理解的方式列出信息(KB、MB、GB)

    • 常用:df -ah

    • 信息解释:

      • 文件系统:文件系统名称及所在分区位置

      • 已使用空间容量:不要超过90%的警戒线

  • du 命令:

    • 作用:查看文件或目录占用硬盘空间容量

    • 格式:du -参数 目录名/文件名

    • 常用参数:du -ah

  • lsblk命令:

    • 作用:列出所有磁盘信息

    • 格式:lsblk -参数 设备文件名

    • 信息解释

      • NAME:设备名称

    • MAJ:MIN:主要:次要设备代码

      • RM:是否可卸载

      • SIZE:容量

      • RO:是否只读

      • TYPE:设备类型(disk磁盘,part分区等)

      • MOUNTPOINT:挂载点

  • blkid命令

    • 作用:显示设备的UUID值和文件系统名称

    • 格式:blkid 设备名

    • UUID:全局单一标识符,系统给所有设备分配的唯一编号,以便于区别设备

5. 硬盘分区

  • parted 命令

    • 作用:显示硬盘分区表及类型

    • 格式:parted 设备名 print

    • 注意:msdos表示MBR格式的分区模式

    • 例:parted /dev/sda print

  • fdisk命令

    • 格式:fdisk 设备名

    • 注意

      • fdisk命令只针对MBR分区格式进行分区

      • fdisk命令之后只能识别硬盘名不能书写分区数字

    • 例:使用fdisk命令对/dev/sdb硬盘分区,格式:P+P+P+E(L+L)

      • 分区命令:n(新建)、p(浏览分区列表)、d(删除)、w(保存退出)、q(退出)

      • 分区编号直接回车即可

      • 起始扇区直接回车即可

      • last扇区:输入容量(+数字单位,如+5G)

      • 若将剩余空间全部分配,则last扇区处直接回车

    • 例:fdisk 命令分区,格式:P+P+E(L+L+L)

  • gdisk命令

    • 注意:gdisk命令针对GPT分区格式,若在已存在的MBR分区格式下添加GPT新分区,则所有数据会全部丢失,切记一块硬盘中,fdisk与gdisk不能混用

    • 格式:gdisk 设备名

    • 例:使用gdisk对/dev/sdc进行分区,格式P+P+P

      • gdisk /dev/sdc

      • 输入n新建分区

      • 回车,设置为默认的分区编号

      • 起始扇区回车

      • 终止扇区输入+4G

      • 编号默认直接回车

      • 重复上述过程

      • 输入p查看分区列表

      • 输入w回车输入y回车保存并退出

      • 注意:实际工作中,硬盘分区应保留一定未分区自由空间,以备将来分区空间不足扩容时或添加新分区时使用

    • 例:使用gdisk分区,P+P+P+P

      • gdisk /dev/sdc

      • 输入n新建分区

      • 回车设置为默认的分区编号

      • 起始扇区回车

      • 终止扇区输入+4G

      • 重复上述过程

      • 输入p查看分区列表

      • 输入w回车输入y回车保存并退出

      • lsblk /dev/sdc 查看分区信息

6. 分区格式化

  • 作用:在硬盘分区上建立文件系统

  • 格式化:若硬盘空间为一张白纸,分区是对其进行裁剪,对白纸进行方格绘制称为格式化

  • EXT2文件系统

    • 组成:

      • 超级块:又称为“硬盘地图”,记录文件系统的整体信息,如:数据块的总量、使用量等

      • 索引块:记录文件属性,一个文件占用一个inode块,记录文件数据块的编号,默认占用128B,还存储文件的权限信息、账户信息、工作组信息、时间信息、地址信息等

      • 数据块:存储文件真实数据的存储块,容量可划分为1K 2K 4K,一个文件会占用多个数据块。

    • 索引块与数据块的关系

      • 索引块大小均为128B

      • 每一个文件只占用一个索引块

      • 文件系统创建的文件容量与索引块的容量有关

      • 一个索引块记录一个数据块号需要4B

    • 当数据块为1K时,最大文件为16GB,文件系统总量为2TB;数据块为2K时,最大文件为256GB,文件系统总量为8TB;数据块为4K时,最大文件为2TB,文件系统总量为16TB

  • 日志文件系统

    • 产生原因:文件在写入时由于不明原因出现中断此时会发生文件内容不一致的情况,此时ext2文件系统会进行全盘检查,耗时较长

    • 解决方法:在文件系统中重新规划一个区域为日志区块,专门记录文件修改的信息,简化文件一致性检查,若文件出现问题只检查相应日志区块即可,只修复部分信息,减少耗时

    • 常见日志文件系统:EXT3、EXT4,Centos7默认的文件系统为xfs

  • Centos7支持的文件系统格式:输入mkfs点击两次tab可查看

  • xfs格式化命令

    • 格式:mkfs.xfs -参数 设备名

    • 参数:

      • -f:强制格式化,对已存在的文件系统格式化时使用

      • -b:后跟上block容量,表示格式化时数据块的容量,范围是512B-64KB,但Linux限制为4KB

    • 例:mkfs.xfs /dev/sdb1

7. 设备挂载与卸除

  • 挂载点:(mount point):本只是一个目录,该目录是进入磁盘分区的入口

  • 挂载:建立目录与分区之间的联系,通过目录进入分区空间并使用

  • 注意:

    • 单一的文件系统不能被重复挂载到不同的挂载点

    • 单一目录不能重复挂载多个文件系统

    • 作为挂载点目录,应为空目录,若已存在文件,则原有数据会被隐藏

  • mount命令

    • 格式:mount -参数 设备名 挂载目录名

    • -a:依照配置文件(/etc/fstab)的数据将未挂载的设备全部挂载,主要用于测试

    • 例:新建4个目录挂载/dev/sdb的四个分区

      • mkdir -p /data/sdb1 /data/sdb2 /data/sdb5 /data/sdb6

      • mount /dev/sdb1 /data/sdb1

      • mount /dev/sdb2 /data/sdb2

      • mount /dev/sdb5 /data/sdb5

      • mount /dev/sdb6 /data/sdb6

      • lsblk /dev/sdb

    • 挂载光盘:mount /dev/sr0 /media

  • 卸载命令

    • 格式:umount -参数 设备名/挂载点名

    • 参数:

      • -f:强制卸载

      • -l:立即卸载文件系统

      • -n:不更新/etc/mtab情况下卸载

    • 例:umount /dev/sdb1

      ​ umount /data/sdb2

    • 注意:卸载时,当前目录不能是挂载点目录,必须退出后才可卸载,否则显示设备正忙

  • 开机挂载命令

    • 原因:由于手动挂载为临时挂载,系统重启后会自动卸载

    • 开机挂载必须修改配置文件实现 /etc/fstab

    • 开机挂载挂载原则

      • 根目录分区必须先挂载

      • 其他挂载点必须为已建立目录,应遵守系统目录架构原则(FHS)

      • 所有挂载点在同一时间内只能挂载一次

      • 所有分区在同一时间内,只能被挂载一次

    • fstab意义解释

      • 共6列

      • 第一列:设备名称或UUID值

      • 第二列:挂载点目录

      • 第三列:文件系统

      • 第四列:文件系统参数,默认defaults

      • 第五列:0(不备份),是否备份

      • 第六列:0,是否开机进行扇区检查,xfs文件系统不支持则为0

    • 例:将/dev/sdb 4个分区进行开机挂载

      • vim /etc/fstab

      • 点击i键编辑,添加新行

      • /dev/sdb1 /data/sdb1 xfs defaults 0 0

      • 保存并退出

      • mount -a 进行测试

      • reboot 重启

      • lsblk /dev/sdb

      image-20201011093918020

      image-20201011094556784

    • 例:添加新硬盘sde,对sde进行如下操作

      • 硬盘进行gdisk分区:P+P+P(3G+5G+6G)

      • 对硬盘进行格式化:sde1,sde2为xfs,sde3为ext4

      • 新建挂载目录:/mnt/s1 /mnt/s2 /mnt/s3

      • 进行开机挂载

      • 查看信息

        image-20201011095916866

        image-20201011095940249

        image-20201011095957452

        image-20201011100348327

8. 大文件挂载为分区

  • 当硬盘无自由空间,且需要增加新分区,可以将已存在分区的剩余空间中划出一个大容量文件,格式化后挂载为一个分区使用

  • 例:在/dev/sdb1中制作1G大文件挂载为新分区

    • 制作大文件:dd if=/dev/zero of=/data/sdb1/loopdev count=1 bs=1G

    • 格式化文件:mkfs.xfs -f /data/sdb1/loopdev

    • 建立挂载点目录:mkdir /data/sdb1/loopdir

    • 挂载大文件:mount -o loop /data/sdb1/loopdev /data/sdb1/loopdir

    • 查看挂载情况:df -h

    • 注意:挂载大文件时,参数需增加 -o loop参数

9. 增加swap交换分区空间

  • swap:类似于windows的虚拟内存,将一块硬盘中的剩余空间虚拟成 “内存” 使用,从而解决内存不足的问题

  • swap空间大小:4-8GB

  • 查看swap空间容量: free -h

  • 创建新分区制作swap空间

    • 使用 gdisk 对 /dev/sdc 创建4个分区,容量(2,3,4,2)

    • 使用 gdisk 对 /dev/sdc 添加一个新分区sdc5(2G)

    • 格式化分区:mkswap /dev/sdc5

    • 启用生效:swapon /dev/sdc5

    • 查看:free -h

    • 开机挂载swap:必须设置开机挂载,否则重启失效

    • vim /etc/fstab

    • 添加新行:/dev/sdc5 swap swap defaults 0 0

    • 保存并退出

    • mount -a 进行测试

    • reboot 重启

    • free -h 查看是否生效
      image-20201011111729024

      image-20201011112334216

      image-20201011112448197

  • 创建大文件制作swap空间

    • 原则:由于硬盘没有自由空间,无法添加新分区,则在某分区剩余空间制作大文件并创建成swap空间

    • 例:在/dev/sdb5分区中制作2G大文件并生成swap空间

      • 制作大文件:dd if=/dev/zero of=/dev/sdb5/swapfile count=2 bs=1G

      • cd /data/sdb5

      • ls

      • 格式化:mkswap /data/sdb5/swapfile

      • 启用生效:swapon /data/sdb5/swapfile

      • 查看:free -h

      • 配置开机挂载:vim /etc/fstab

      • 添加新行:/data/sdb5/swapfile swap swap defaults 0 0

      • 保存退出

      • 测试:mount -a

      • 重启:reboot

      • 查看:free -h

        image-20201011114145819

  • 注意:fstab配置文件中,若添加的对象是大文件,则第一列不能使用UUID值

10. 软硬链接方式

  • 硬盘文件存储原理:

    • 硬盘数据分为两类:用户数据(UserData)与 元数据(MetaData)

    • 用户数据:文件的数据块,存储文件数据的实际空间

    • 元数据:存储文件附加属性,如文件大小,创建时间、所有者等信息

    • Linux中元数据的inode号(索引节点号)是文件的唯一标识,而非文件名,系统或程序通过inode号寻找正确的文件数据块

    • 图:

  • 硬链接

    • 原理:由于Linux系统允许多个文件指向同一个inode即允许一个文件有多个有效路径名

    • 硬链接本质为指向原始文件的inode指针

    • 查看硬链接方法:

      • ll 文件名

      • stat 文件名

  • 建立硬链接方法:

    • 格式:ln -参数 源文件 目标链接名

    • 例:touch t1.txt

      ​ echo "Hello World" > t1.txt

      ​ stat t1.txt

      ​ ln t1.txt t2.txt

      ​ ln t1.txt t3.txt

      ​ stat t1.txt

      ​ cat t2.txt

      ​ rm -rf t1.txt

      ​ cat t3.txt

    • 注意:

      • 新建文件的硬连接默认为1,即文件名指向数据块

      • 创建多个硬链接后,删除源文件,数据依然可以访问

      • 只有源文件删除且硬链接数为0时,数据相当于删除,不可访问

      • 硬链接不能给目录建立

      • 目录默认带有2个硬链接,实际为目录中的点(.)和点点(..)

      • 硬链接不可以在不同的文件系统中建立,由于inode是当前文件在本文件系统的索引号,只针对本分区空间,所以硬链接不能跨越文件系统

  • 软链接

    • 原理:是一种符号链接,类似于windows的快捷方式,仅包含所链接的路径名

    • 格式:ln -s 源文件 目标链接名称

    • 例:image-20201011140855496

      image-20201011141019843

    • 例:创建软链接,减少访问文件时间

      image-20201011141507111

    • 软硬链接区别

      • 硬链接中源文件与链接文件共用一个inode号,是同一个文件,软链接中源文件与链接文件拥有不同的inode号,是两个不同的文件

      • 软链接可以查看链接路径,硬链接不可查看

      • 硬链接可以增加链接数,软链接不变

      • 文件大小不同,硬链接文件大小与源文件相同

      • 软链接可以跨越文件系统或分区

原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://blog.zyblog.xyz/archives/linuxming-ling-xue-xi-si
版权声明:本文为博主原创文章,转载请注明原文链接作者信息