分区基础知识

1.分区常用命令

2.Linux磁盘

Linux一切皆为文件
Linux磁盘、USB、麦克风等所有的硬件都在Linux中有对应的文件表示。
目录 /dev下面存放一些硬件映射的文件。
其中磁盘目录大多对应 /dev/sda/dev/hda

3.分区

Windows中一块磁盘会被系统分成C D E F盘

Linux中一块磁盘经常被分为/dev/sda1 /dev/sda2类似这样的格式

4.文件系统

分区完成或者说分盘完成后,正常做存储读写使用,要赋予一段程序去控制运行
这个程序有好几个版本名称 => ext2、ext3、ext4(自然用最高的版本)
叫做文件系统

普通磁盘分区

普通的方式是不推荐使用的
因为之后如果需要维护、修改分区会比较麻烦

1.命令查询磁盘分区

fdisk -l => 查询磁盘

在这里插入图片描述

  • 这一块磁盘Linux用/dev/sda目录表示,磁盘名称也就叫这个

    设备StartEndBlocksIdSystem
    /dev/sda10101083Linux
    /dev/sda21121108eLinux LVM
  • 设备: /dev/sda1 => 从/dev/sda分了一个区叫/dev/sda1

  • Start: 内存占用Start=0 ~~ End=10的这一段共Blocks=10

    • /dev/sda2就只能从11开始了
  • id => 代表一种类型83 82 8e,如果是LVM就是8e(逻辑卷)

  • System => Linux LVM表示这个分区用LVM操作来的,也存在其他的一些表示

df -h => 查询分区挂载信息

在这里插入图片描述

  • devtmpf、tmpfs是内存的挂载
    • 大概就是你的磁盘512g、运行内存4g
    • tmpfs是运行内存挂载点,重启都会清空挂载目录的数据
  • /dev/sda1 => 普通分区产生的,对应挂载目录/boot
  • /dev/mapper/centos-root => LVM分区产生的,对应挂载/

基本思路步骤

  1. 有多余容量的磁盘/dev/sda或者/dev/sdb或者/dev/sdc
  2. 将磁盘分成/dev/sda1或者/dev/sda2或者/dev/sda3
  3. 分区的/dev/sda数字格式化并赋予文件系统(ext4)
  4. 挂载到指定目录

2.准备分区

在这里插入图片描述

  • 加完之后fdisk -l
  • 要么/dev/sda对应的内存增加了,要么多了一块/dev/sdb的硬盘
  • 我这边一开始是30g,加到了35g,有5g是没有分区的,用来测试分区
    • Linux内存大小不准确没有太大影响
      在这里插入图片描述

3. 创建分区

用普通方法增加一个/dev/sd3的分区

  • fdisk /dev/sda => fdisk命令,(参数) => 多余未使用要分区的磁盘
    在这里插入图片描述
  • d => 删除一个分区,会提示你输入数字,要删除的那个分区(sd3就是输入3)
  • m => 帮助(就是现在这个)
  • n => 创建一个新的分区
  • p => 显示这个磁盘现在的分区信息
  • q => 不保存退出
  • t => 修改分区id(LVM时要改id为8e)
  • w => 保存退出,创建分区完成后要w一下完成
    在这里插入图片描述
  • 错了,起始扇区是fdik -l的start节点
  • fdik -l
    在这里插入图片描述

4. 格式化分区

  • mkfs -t ext4 /dev/sda3 => 赋予文件系统、对应分区
    • 如果找不到sd3,就重启一下init 6
      在这里插入图片描述

5. 挂载目录

  • mkdir /rod => 创建一个目录
  • mount /dev/sda3 /rod => 将分区3挂载到rod

配置到配置文件中,永久挂载

  • vi /etc/fstab => 使用tab键输入下一位,0和0之间用空格
    在这里插入图片描述
  • df -h
    在这里插入图片描述

LVM磁盘分区

在这里插入图片描述

基础知识

  • 相比于普通的创建方式.LVM是创建逻辑卷,可以理解为LVM是在普通分区的基础上又通过一层叫LVM的程序控制再分区挂载的一个管理系统
  • 优点在于,因为这一层的控制,在以后某个磁盘分区内存空间不足时,再次加一点点内存会更加方便
  • 原因: 普通的方式是需要卸载挂载,记录当前分区start开始的数值,删除分区,重新创建分区等操作的,因为有了这一层LVM,这些操作都由这个LVM系统帮我们做了(实际不是这样,只是先理解这个LVM的作用)
  • 所以都推荐用LVM对磁盘进行分区

一些术语 => PV VG LV

  • 更加信息的可以参考上边的博客或者自行百度
  • 物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块
    • 就是给磁盘普通分区的/dev/sda1 /dev/sda2等就是PV
  • 卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。
    • 就是有一个真的存在的物理卷PV,LVM又给搞了一个假的卷叫VG,作用跟PV差不多相同,所以说他相当于非LVM系统中的物理硬盘
    • 它把一个整的PV分成了许多个小块(小块的术语叫PE),比如每个小块内存是4M,组合起来的集合体(n个小块)叫VG
    • 看到这里应该就有个大概的意思了,之后每个分区挂载目录应该就是从这VG里拿多少个4M去组合成需要的内存大小去挂载目录
  • 逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。
    • 每个LV就是一个小分区了,它不再是以前的/dev/sda1了,而是一个你自己命名的LV的名称的分区了,挂载目录什么就相同了
    • 你说它就是普通分区/dev/sda1再细分成了更小的分区使用吧,是这个意思,又不是这个意思
    • 因为他是从VG里拿N个4M的小块出来的,但是这个小块,可以不仅仅是/dev/sda1打散的,也可以是/dev/sda1 /dev/sda2都打散组合的
    • 如果有好几块硬盘//dev/sdb /dev/sdc,分区为/dev/sdb1 /dev/sdc1,都可以加到VG,LV都可以去拿这些小块
    • 所以LV由N个4M的小块(PE)组合成分区的,这些个小块PE可以来自任何地方、任何硬盘打散的
      在这里插入图片描述

LVM分区思路

  1. 先普通分区/dev/sda4 => 创建PV
  2. 打散PV为小块加到VG中 => 创建VG
  3. 从VG里拿需要多少内存 => 创建LV==分区完成
  4. 格式化LV => 赋予文件系统ext4
  5. 挂载

LVM一些命令

  • pvcreate => 创建PV
    • pvcreate /dev/sda4 => 指定普通分区为PV(可以有很多个,反正都是/dev下的路径,是分好区的都可以搞成PV)
      • 再此之前肯定要用普通的方法分区的 => [fdisk /dev/sda] -[n(创建)] -[选择数字第几个分区] -[p(选择主分区还是扩展分区)] -[选择开始start和结束定义分区大小] -[完成]
    • pvdisplay => 查看当前的PV
  • vgcreate => 创建VG
    • vgcreate 名称 /dev/sda4 => 创建VG,指定名称,指定PV
    • vgextend 存在的vg名称 /dev/sda3 => 添加扩展一个新的PV
    • vgdisplay => 查看当前VG
  • lvcreate => 创建LV
    • lvcreate -n 名字 -L 大小 vg的名 => lvcreate -n name -L 1G vgname
    • 创建成功的分区叫做/dev/vgname/lvname或者/dev/mapper/vgname-lvname(都可以,在dev的这两个目录都存在)
    • lvextend -L +50M /dev/vgname/lvname => 扩展一个lv(扩展一个分区)
      • 不使用+号,就是扩展为多少大小,不能比原来小
    • `lvreduce -L 50M /dev/vgname/lvname`` => 缩减到50M,-5M就是缩减5M
  • resize2fs /dev/centos/rod => 调整文件系统大小

1. 创建一个新的分区

在这里插入图片描述

  • 此时就是普通的,还不是LVM的
    在这里插入图片描述

  • 类型ID改成8e就是LVM的了
    在这里插入图片描述

2. 创建PV

  • pvcreate /dev/sda3
  • pvdisplay
    在这里插入图片描述

3. 创建VG

  • 如果是创建一个新的VG
    • vgcreate centos /dev/sda3 => 创建VG,指定名称,指定PV
    • 我已经有一个叫centos的VG了,所以我用了扩展的命令
    • vgextend centos /dev/sda3 => 已有的vg名称,需要打散为小块的PV
[root@oldLinux ~]# vgextend centos /dev/sda3
  Volume group "centos" successfully extended
[root@oldLinux ~]# vgdisplay 
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE(总的个数)     7678
  Alloc PE / Size(已使用了7422个共28.99G)7422 / 28.99 GiB
  Free  PE / Size(剩余256个共1G)256 / 1.00 GiB
  VG UUID               31RC86-uhtL-5ec4-grUA-DtEt-1d3q-YJGpdd

4. 创建LV

  • 创建是lvcreate -n rod -L 50M centos
    • lvcreate -n 名称 -L 50M vgname
  • 扩展一个分区是lvextend -L +50M /dev/centos/rod
    • 这里的-L后面是+多少内存
    • /dev/centos/rod => /dev/vgname/lvname
[root@oldLinux ~]# lvcreate -n rod -L 50M centos
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "rod" created.
[root@oldLinux ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  rod  centos -wi-a----- 52.00m(创建的,Linux内存有差距没关系)                                                    
  root centos -wi-ao---- 26.49g                                                    
  swap centos -wi-ao----  2.50g   
[root@oldLinux ~]# lvextend -L  +50M /dev/centos/rod
  Rounding size to boundary between physical extents: 52.00 MiB.
  Size of logical volume centos/rod changed from 52.00 MiB (13 extents) to 104.00 MiB (26 extents).
  Logical volume centos/rod successfully resized.
[root@oldLinux ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  rod  centos -wi-a----- 104.00m(扩展后加了一倍)                                                    
  root centos -wi-ao----  26.49g                                                    
  swap centos -wi-ao----   2.50g  

5. 格式化,赋予文件系统ext4

[root@oldLinux centos]# mkfs -t ext4 /dev/centos/rod
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
26624 inodes, 106496 blocks
5324 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

6. 挂载

  • 还没有结束,挂载后边还有一步操作
  • 也许需要重启
[root@oldLinux centos]# mount /dev/centos/rod /rod
[root@oldLinux centos]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   27G   13G   15G   46% /
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/centos-rod    97M  1.6M   88M    2% /rod
  • 永久挂载
    -vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Nov 10 22:45:11 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=6df12d56-1c9c-4ed5-9a99-f26973f0827b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/centos/rod /rod    ext4    defaults        0 0

调整文件系统大小

[root@oldLinux centos]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   27G   13G   15G   46% /
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/centos-rod    97M  1.6M   88M    2% /rod
  • 在容量这一栏里,代表的文件系统的大小,改变了LV的大小并不会改变文件系统的大小
  • 要调整文件系统的大小
  • resize2fs /dev/centos/rod => 默认与这个LV大小一致
  • 如果是扩展文件系统的容量,那么不管目标文件系统是否处于挂载状态都可以执行。
  • 如果是缩减文件系统的容量,则只能先卸载文件系统,缩减容量后再重新挂载文件系统。
    • umount /dev/xxx
  • 如果LV缩减到50m了,文件系统是100m,那么卸载挂载文件系统后,调整大小到50m会提示,缩减可能会丢失数据
[root@oldLinux centos]# resize2fs /dev/centos/rod
resize2fs 1.42.9 (28-Dec-2013)
请先运行 'e2fsck -f /dev/centos/rod'.
[root@oldLinux centos]# e2fsck -f /dev/centos/rod
e2fsck 1.42.9 (28-Dec-2013)
文件系统的大小 (依据超级块)106496 块
而设备的物理大小为 61440 块
超级块或分区表可能已被损坏!
中断<y>? 是

完成啦

Logo

更多推荐