• Linux磁盘介绍及LVM磁盘管理



    磁盘基本概述

    磁盘分类

    • 固态硬盘
    • 机械硬盘
    • 服务器硬盘

    固态硬盘的优缺点

    • 优点:
      • 读写速度快
      • 防震抗摔性强
      • 低功耗
      • 无躁音
      • 体积小,携带方便
    • 缺点:
      • 容量比机械硬盘小
      • 寿命比机械硬盘短
      • 制造成本高所以价格比机械硬盘高

    Linux磁盘命名方式

    • 传统IDE接口硬盘:/dev/hd[a-z]
    • SCISI接口硬盘:/dev/sd[a-z]
    • 虚拟化硬盘:/dev/vd[a-z]
    • 系统中分区由数字编号表示, 1-4留给主分区使用和扩展分区, 逻辑分区从5开始

    MBR与GPT

    MBR

    • MBRMaster Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代码,主要用来引导操作系统的加载与启动
    • 特点:
      • MBR支持最大2TB磁盘,无法处理大于2TB容量的磁盘
      • 只支持最多4个主分区。需要更多的分区,则需要创建拓展分区,并在其中创建逻辑分区

    GPT

    • GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准
    • 特点:
      • GPT对磁盘的大小没有限制
      • 最多可以创建128个分区
      • 注意:MBR与GPT之间互相转换会导致数据丢失
      • 磁盘容量检查

    df

    • 查看磁盘容量,不加参数以k为单位
    • 用法:df [选项]
    • 常用选项:
      • -i 查看inode使用情况
      • -h 显示单位
      • -T 查看文件类型

    lsblk

    • 查看分区情况

    du

    • 查看目录或文件的容量,不加参数以k为单位

    • 用法:du [选项]

    • 常用选项:

      • -s 列出总和
      • -h 显示单位

      一般sh连用

    磁盘分区

    fdisk分区(MBR)

    • fdisk -l 查看当前磁盘分区信息

    • fdisk 硬盘绝对路径 进入磁盘管理

    • 常用选项:
      m 显示帮助菜单
      n 新建分区
      d 删除分区
      p 显示分区表的信息
      u 修改容量单位,磁柱或扇区
      w 保存退出
      l 显示分区类型
      t 修改分区ID,可以通过l查看id
      q 不保存退出

    • 不常用的选项:
      a 切换分区启动标记
      b 编辑sdb磁盘标签
      c 切换dos兼容模式
      o 创建新的空白分区表
      s 创建新的Sun磁盘标签
      v 检验分区表
      x 拓展功能

    //创建主分区
    Command (m for help): n //新建分区
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)  //主分区
       e   extended //扩展分区
    Select (default p): p   //选择主分区
    Partition number (1-4, default 1):  //默认回车
    First sector (2048-2097151, default 2048): //默认扇区回车
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +50M //分配50MB
    
    //创建扩展分区
    Command (m for help): n //新建分区
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): e   //创建扩展分区
    Partition number (2-4, default 2):
    First sector (104448-2097151, default 104448):
    Using default value 104448
    Last sector, +sectors or +size{K,M,G} (104448-2097151, default 2097151):    //默认划分所有空间给扩展分区
    
    //创建逻辑分区
    Command (m for help): n //新建分区
    Partition type:
       p   primary (1 primary, 1 extended, 2 free)
       l   logical (numbered from 5)
    Select (default p): l   //创建逻辑分区
    Adding logical partition 5
    First sector (106496-2097151, default 106496):
    Using default value 106496
    Last sector, +sectors or +size{K,M,G} (106496-2097151, default 2097151): +100M  //分配100MB空间
    
    Command (m for help): p  //查看分区创建
    Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048      104447       51200   83  Linux
    /dev/sdb2          104448     2097151      996352    5  Extended
    /dev/sdb5          106496      311295      102400   83  Linux
    
    Command (m for help): w  //保存分区
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    fdisk -l /dev/sdb | grep type 检查磁盘是否是MBR分区方式
    yum -y install parted 安装parted
    partprobe /dev/sdb 重载分区表

    gdisk(GPT)

    • yum -y install gdisk 安装gdisk工具
    gdisk /dev/sdb  //gdisk管理磁盘
    Command (? for help): n     //创建新分区
    Partition number (1-128, default 1):
    First sector (34-2097118, default = 2048) or {+-}size{KMGTP}:
    Last sector (2048-2097118, default = 2097118) or {+-}size{KMGTP}: +500M //分配500M大小
    
    Command (? for help): p //打印查看
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048         1026047   500.0 MiB   8300  Linux filesystem
    
    Command (? for help): w //保存分区
    Do you want to proceed? (Y/N): y    //确认
    OK; writing new GUID partition table (GPT) to /dev/sdb.
    The operation has completed successfully.
    

    fdisk /dev/sdb -l|grep type 检查磁盘是否是gpt格式
    partprobe /dev/sdb 重载分区表

    磁盘格式化

    mkfs

    • 格式化磁盘,创建文件系统
    • 用法:mkfs [选项]
    • 常用选项:
      • -t 用来指定什么类型的文件系统,可以是ext3,ext4, xfs
      • -i 设定inode的大小
      • -b 设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块
      • -N 设定inode数量,防止Inode数量不够导致磁盘不足
      • -L 预设该分区的标签label

    mkfs.ext4 /dev/sdb1 格式化磁盘格式为ext4文件系统
    mkfs -t ext4 /dev/sdb1 格式化磁盘格式为ext4文件系统

    磁盘挂载

    • 临时挂载磁盘

    • mount挂载磁盘,实质是为文件系统指定访问入口

    • 用法:mount [选项]

    • 常用选项:

      • -t 指定文件系统挂载分区
      • -a 重新读取/etc/fstab配置文件的所有分区
      • -o 指定挂载参数
    • 永久挂载磁盘

    [root@wj ~]# blkid |grep "sdb1"  //使用blkid命令获取各分区的UUID
    /dev/sdb1: UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" TYPE="xfs"
    [root@wj ~]# vi /etc/fstab  //将UUID写入配置文件,永久挂载, 开机自动挂载
    [root@wj ~]# tail -1 /etc/fstab    
    UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1 xfs  defaults 0  0
    [root@wj ~]# mount -a  //通过配置文件挂载
    
    使用UUID挂载磁盘sdb1分区至于db1, 临时挂载
    [root@wj ~]# mount UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" /db1
    
    [root@wj ~]# mount –a  //加载fstab配置文件, 同时检测语法是否有错误
    
    • fstab配置文件
    分区标识(UUID或设备名)                    挂载点 文件类型    挂载参数    不检查 不备份
    UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1     xfs     defaults    0     0
    

    卸载挂载光盘

    • umount -lf 强制卸载
    • umount /db1 使用站点卸载

    交换分区swap

    • Linux下的虚拟内存分区,交换分区一般指定虚拟内存的大小为实际内存的1~1.5倍

    创建swapfile

    [root@wj ~]# dd if=/dev/zero of=/opt/newdisk bs=5M count=1024
    //if:指定源  一般写/dev/zero
    //of:指定目标
    //bs:定义块大小
    //count:数量
    

    格式化swap分区

    [root@wj ~]# mkswap -f /opt/newdisk  //格式化swap分区
    
    //检测当前swap分区情况
    [root@wj ~]# free -m
    
    //开启新建的swap分区
    [root@wj ~]# swapon /opt/newdisk
    [root@wj ~]# free -m
    
    //关闭新建的swap分区
    [root@wj ~]# swapoff /opt/newdisk
    [root@wj ~]# free -m
    

    清理日志

    • rm -rf access.log 会删除文件,但是此程序继续占用文件,不是放空间
    • > access.log 清空文件,释放空间

    LVM磁盘管理

    在这里插入图片描述

    • 物理卷(PV):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷
    • 卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量
    • 逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用

    LVM磁盘管理是RHCSA中必考的题目,所以这里也必须要掌握,如果打算考RHCSA的话,这里一定不能丢分。其实是比较简单的。

    LVM管理

    • 创建lvm步骤:
      • 添加物理磁盘,创建物理卷
      • 创建卷组,将物理卷加入卷组
    [root@wj ~]# pvcreat /dev/sdb  //将磁盘加入物理卷
    [root@wj ~]# pvs  //检查pv创建情况
    [root@wj ~]# vgcreate vg0 /dev/sdb  //创建名为vg0的卷组
    [root@wj ~]# vgs  //检查卷组
    

    在卷组中划分逻辑卷

    [root@wj ~]# lvcreate -L 500M -n lv0 vg0  //创建逻辑分区,分区名称、指定大小,指定卷组
    [root@wj ~]# lvscan  //检查逻辑卷
    

    格式化逻辑卷

    [root@wj ~]# mkfs.ext4 /dev/vg0/lv0  //格式化逻辑卷,指定文件系统为ext4文件系统
    

    挂载使用

    • 临时挂载
    [root@wj ~]# mkdir /lv0  //创建挂载点
    [root@wj ~]# mount /dev/vg0/lv0 /lv0  //临时挂载
    [root@wj ~]# df -h  //查看挂载情况
    
    • 永久挂载
    [root@wj ~]# blkid | grep "lv0"  //查看lv0的UUID
    /dev/mapper/vg0-lv0: UUID="df4360c5-ba72-4e5c-8d7d-ab3b0bfc9acc" TYPE="ext4"  //硬盘的UUID
    [root@wj ~]# vi /etc/fstab  //将UUID及相关配置信息加入到配置文件中
    UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /lv0 ext4  defaults 0  0
    [root@wj ~]# mount -a  //通过配置文件挂载
    

    卷组管理

    • 拓展卷组,将新磁盘加入卷组
    [root@wj ~]# pvcreate /dev/sdc  //新硬盘加入pv
    [root@wj ~]# vgextend vg0 /dev/sdc  //使用vgextend拓展
    
    • 缩减卷组,将指定磁盘从卷组中删除(只有etx4可以缩减)缩减前后一定要强制检查文件类型
    [root@wj ~]# vgreduce vg0 /dev/sdb  //将sdb从卷组中删除
    
    • 数据迁移卷组,同一卷组的磁盘才可以进行在线迁移(学习中用到的较少,实际工作中遇到的较多)
    [root@wj ~]# pvs  //检查当前逻辑卷VG中pv使用情况
    [root@wj ~]# pvmove /dev/sdb  //将sdb在线数据迁移至其他pv
    [root@wj ~]# pvs  //检查是否将sdb数据迁移至sdc
    

    逻辑卷管理

    • 逻辑卷扩展,逻辑卷的扩展取决于卷组中的容量,逻辑卷扩展的容量不能超过卷组的容量
      扩展lv逻辑卷
    [root@wj ~]# vgs  //查看卷组情况
    [root@wj ~]# lvextend -L +500M /dev/vg0/lv0  //给lv0增加500M,不带+号表示指定大小
    [root@wj ~]# lvextend -l +50%FREE /dev/vg0/lv0  //分配磁盘池中50%给逻辑卷
    
    • 扩展fs文件系统
    [root@wj ~]# xfs_growfs /dev/vg0/lv0  //xfs扩容
    [root@wj ~]# resize2fs /dev/vg0/lv0  //ext扩容
    
    • ext4文件系统的逻辑卷剪裁容量
    [root@wj ~]# lvcreate  -n lv1 -L 1G vg0  //创建逻辑卷名称为lv1、大小1G、指定卷组vg0
    [root@wj ~]# mkfs.ext4 /dev/vg0/lv1  //将lv1格式化为ext4的文件系统
    [root@wj ~]# mkdir /lv1  //创建挂载点
    [root@wj ~]# mount /dev/vg0/lv1  /lv1  //临时挂载
    [root@wj ~]# cp /etc/host* /finance/uplooking/
    
    [root@wj ~]# umount /dev/vg0/lv1  //如果已经挂载,必须先卸载
    [root@wj ~]# e2fsck -f /dev/vg0/lv1  //检测文件系统
    [root@wj ~]# resize2fs /dev/vg0/lv1 512M 
    
    [root@wj ~]# lvreduce  -L 512M /dev/vg0/lv1   //指定大小
    [root@wj ~]# e2fsck -f /dev/vg0/lv1  //裁剪后,再次检测文件系统
    挂载测试。如果能够挂载,一般说明裁剪成功,文件系统没有损坏
    [root@wj ~]# mount /dev/vg0/lv1 /mnt  //挂载
    
    • 缩减逻辑卷注意事项:
      • 不能在线缩减,得先卸载;
      • 确保缩减后的空间大小依然能存储原有的所有数据;
      • 在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。使用命令e2fsck -f 逻辑卷路径
    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    Constructor构造方法
    overload重载
    static关键字
    this关键字
    继承
    ORACLE数据库 常用命令和Sql常用语句
    常见单词
    L贪心基础
    J贪心
    K贪心
  • 原文地址:https://www.cnblogs.com/bad5/p/12424286.html
Copyright © 2020-2023  润新知