linux磁盘管理高级

author author     2022-08-04     473

关键词:

Linux磁盘管理高级


  • LVM

  • Btrsh


  • LVM

逻辑卷管理(LVM)指系统将物理卷管理抽象成一个逻辑卷,包括重新设定文件系统的大小,LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量。

LVM还有快照的功能,快照区与原本的LV共用很多PE的区块,因此快照区与被快照的LV必须要要在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量。

LVM的基本原理可用下图表示:

技术分享

LVM: Logical Volume Manager,Version: 2
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
软链接:
/dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
    /dev/vol0/root

使用示例

  1. 创建由/dev/sdb(15G)和/dev/sdc1(10G)组成的卷组VG0,从中切分一个大小 20G的逻辑卷mydata,采用ext4文件系统,并自动挂载到/mydata目录下

  2. 扩展mydata逻辑卷占用所有VG0的空间,并增加新的设备/dev/sdc2(5G)到VG0中

  3. 压缩mydata逻辑卷至5G大小

  4. 删除所有以上题目中创建的逻辑卷,卷组和PV

准备:准备好硬盘与相应的分区,注意修改分区的类型为8e(Linux LVM)

  1. 创建pv: pvcreate

[[email protected] ~]#pvcreate /dev/sd{b,c1}
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc1" successfully created
[[email protected] ~]#

技术分享

  1. 创建vg: vgcreate

[[email protected] ~]#vgcreate VG0 /dev/sd{b,c1}
  Volume group "VG0" successfully created
[[email protected] ~]#

技术分享

  1. 创建lv: lvcreate

[[email protected] ~]#lvcreate -n mydata -L 20G VG0
  Logical volume "mydata" created.
[[email protected] ~]#

技术分享

  1. 创建文件系统

[[email protected] ~]#mkfs.ext4 /dev/VG0/mydata
  1. 挂载

技术分享

[[email protected] ~]#mkdir /mydata
[[email protected] ~]#mount -a
[[email protected] ~]#mount |tail -n 1
/dev/mapper/VG0-mydata on /mydata type ext4 (rw)
[[email protected] ~]#

至此,一个基本的LVM就创建好了,LVM也是磁盘管理的一部分,最终也逃不过这个的基本步骤:创建分区(pv,vg,lv)---> 格式化---> 挂载。

现在,我们就可以管理LVM了,包括扩展、缩减、删除、快照等;

在一个刚创建完的裸LVM上,逻辑卷所占用VG0的空间为0,即Free PE为VG大小;现在我们让逻辑卷占满整个VG0.

  1. 扩展逻辑卷

[[email protected] ~]#lvextend -r -l +100%FREE /dev/VG0/mydata # 百分百占用VG
# 当然也可以lvextend -L [+]#[mMgGtT]

注:如果是xfs系统,扩展文件系统时用xfs_growfs  /dev/VG0/mydata

  1. 扩展卷组

[[email protected] ~]#pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created
[[email protected] ~]#vgextend VG0 /dev/sdc2
  Volume group "VG0" successfully extended
[[email protected] ~]#

技术分享

  1. 逻辑卷缩减(慎重操作,操作前需备份,五个步骤,不能颠倒,与创建lv的顺序相反,得先缩减文件系统,最后缩减物理卷)

[[email protected] ~]#umount /mydata    # 先卸载
[[email protected] ~]#e2fsck -f /dev/VG0/mydata  # 强制检查文件系统
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/VG0/mydata: 11/1638400 files (0.0% non-contiguous), 146849/6552576 blocks
[[email protected] ~]#resize2fs /dev/VG0/mydata 5G   # 缩减文件系统
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/VG0/mydata to 1310720 (4k) blocks.
The filesystem on /dev/VG0/mydata is now 1310720 blocks long.

[[email protected] ~]#lvreduce -L 5G /dev/VG0/mydata  # 缩减逻辑卷
  WARNING: Reducing active logical volume to 5.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce VG0/mydata? [y/n]: y
  Size of logical volume VG0/mydata changed from 25.00 GiB (6399 extents) to 5.00 GiB (1280 extents).
  Logical volume mydata successfully resized.
[[email protected] ~]#[[email protected] ~]#mount -a   # 重新挂载
[[email protected] ~]#

技术分享

注意:当逻辑卷LV的太小以至没占用到其它的物理卷PV,则该PV显示不出LVM(dm)

技术分享

技术分享

而当我们让LV占满VG时:

技术分享

技术分享

  1. LVM快照,本质上也是创建逻辑卷,也特挂载

[[email protected] ~]#lvcreate -n mydata_snapshot -p r -L 35G -s /dev/VG0/mydata
# 设置快照的名称、权限、大小、对象(对谁做快照)

  Reducing COW size 35.00 GiB down to maximum usable size 30.12 GiB.
  Volume group "VG0" has insufficient free space (0 extents): 7712 required.
[[email protected] ~]#
[[email protected] ~]#mkdir /mnt/snapshot
[[email protected] ~]#mount /dev/VG0/mydata /mnt/snapshot
[[email protected] ~]#
  1. 移动物理卷

在移动物理卷上的空间到其它卷组时,要确保卷组VG有足够的空间,否则移动会失败,r所以,在上面的基础上我们再将LV缩减到5G,然后移动/dev/sdb.

[[email protected] ~]#pvmove /dev/sdb
  /dev/sdb: Moved: 0.7%  /dev/sdb: Moved: 100.0%
[[email protected] ~]#

移动前:

技术分享

移动后:

技术分享

  1. 删除逻辑卷

[[email protected] ~]#umount /dev/VG0/mydata
[[email protected] ~]#pvmove /dev/sdb
  No data to move for VG0
[[email protected] ~]#pvmove /dev/sdc1
  /dev/sdc1: Moved: 0.5%
  /dev/sdc1: Moved: 100.0%
[[email protected] ~]#pvmove /dev/sdc2
  No data to move for VG0
[[email protected] ~]#vgremove VG0
Do you really want to remove volume group "VG0" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume mydata? [y/n]: y
  Logical volume "mydata" successfully removed
  Volume group "VG0" successfully removed
[[email protected] ~]#

技术分享


Btrsh

Btrfs 被称为是下一代 Linux 文件系统,Linux支持众多的文件系统,其经典的系列是ext系统,在CentOS 7上面还支持xfs文件系统,ext4可以向前或向后兼容;XFS 是一个全64-bit的文件系统,开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏;人们的需求无止尽,Btrfs正在绽放其魅力。

Btrfs的特性

  1. 支持RAID

  2. CoW机制:写时复制

  3. 支持快照

  4. 透明压缩

  5. 子卷:sub_volume

下面我们来简单地体验一下Btrfs, 主要涉及创建btrfs,做快照,增加与删除设备,文件系统转换,删除btrfs文件系统等。btrfs的命令特点是支持命令集,常用的有btrfs filesystem, btrfs device, btrfs balance, btrfs subvolume等。

  1. 创建btrfs系统

[[email protected] ~]#mkfs.btrfs -L mydata /dev/sd{b,c}

技术分享

[[email protected] ~]#mkdir /mydata
[[email protected] ~]#mount LABEL=mydata /mydata
[[email protected] ~]#

查看无数据信息:

技术分享

  1. 在线压缩与扩展

[[email protected] ~]#btrfs filesystem resize -10G 
/mydata Resize ‘/mydata‘ of ‘-10G‘
[[email protected] ~]#btrfs filesystem resize max 
/mydata/ Resize ‘/mydata/‘ of ‘max‘
  1. 透明压缩

[[email protected] ~]#mount -o remount,compress=lzo /mydata/
[[email protected] ~]#
  1. 添加新硬盘

[[email protected] ~]#btrfs device add /dev/sdd /mydata/
[[email protected] ~]#btrfs device add /dev/sde /mydata/
[[email protected] ~]#

技术分享

  1. 对元数据与数据分别作raid级别

[[email protected] ~]#btrfs balance start -mconvert=raid5 /mydata/
Done, had to relocate 4 out of 5 chunks

[[email protected] ~]#btrfs balance start -dconvert=raid5 /mydata
/Done, had to relocate 1 out of 3 chunks
[[email protected] ~]#

技术分享

可见空余的硬盘有部分已经被占用,这本身也是数据平衡。

注:在修改RAID级别时,注意raid对成员数量的要求。

当然,也可以单独为数据作raid:

btrfs balance start -dconvert=single /mydata
  1. 平衡数据:目的是新加的磁盘可以无人用,故而做数据平衡

btrfs balance status /mydata 
btrfs balance srart /mydata (以chunk为单位)
  1. 子卷管理

[[email protected] ~]#btrfs subvolume creat /mydata/sub1   # 创建子卷
Create subvolume ‘/mydata/sub1‘
[[email protected] ~]#
[[email protected] ~]#btrfs subvolume list /mydata/  # 查看子卷   
ID 262 gen 56 top level 5 path sub1
[[email protected] ~]#

# 单独挂载子卷
[[email protected] ~]#umount /mydata/
[[email protected] ~]#mkdir /mnt/sub1
[[email protected] ~]#mount -o subvol=sub1 /dev/sde /mnt/sub1
或者:
[[email protected] ~]#mount /dev/sde /mydata # 挂载父卷,子卷自动挂载
  1. 快照

# 子卷做快照
[[email protected] ~]#btrfs subvolume snapshot /mydata/sub1 /mydata/sub1_snapshot
Create a snapshot of ‘/mydata/sub1‘ in ‘/mydata/sub1_snapshot‘
[[email protected] ~]#
  1. btrfs与ext4之间的转换

[[email protected] ~]#btrfs device delete /dev/sde /mydata/
[[email protected] ~]#btrfs filesystem show
Label: ‘mydata‘  uuid: e55867ff-d8b1-4b82-a8b3-226505a26e2f
        Total devices 3 FS bytes used 928.00KiB
        devid    1 size 20.00GiB used 1.53GiB path /dev/sdb
        devid    2 size 20.00GiB used 1.53GiB path /dev/sdc
        devid    3 size 20.00GiB used 1.53GiB path /dev/sdd

btrfs-progs v3.19.1
[[email protected] ~]#
[[email protected] ~]#mkfs.ext4 /dev/sde
[[email protected] ~]#blkid 
/dev/sde/dev/sde: UUID="397d0c57-4e11-4008-9c0b-933b2ddb7ecf" TYPE="ext4" 
[[email protected] ~]#
[[email protected] ~]#btrfs-convert /dev/sde  # ext4-->btrfs
creating btrfs metadata.
copy inodes [o] [         0/        11]
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
[[email protected] ~]#blkid /dev/sde        
/dev/sde: UUID="c5031e36-0824-4246-bca1-ff645c8cb40e" UUID_SUB="ed87c272-0c09-452b-a59b-6d423a764fc1" TYPE="btrfs" 
[[email protected] ~]

[[email protected] ~]#mkdir /mnt/sde
[[email protected] ~]#mount /dev/sde /mnt/sde
[[email protected] ~]#
[[email protected] ~]#umount /dev/sde
[[email protected] ~]#btrfs-convert -r /dev/sde  # 转换回去:btrfs-->ext4
rollback complete.
[[email protected] ~]#blkid /dev/sde/dev/sde: UUID="397d0c57-4e11-4008-9c0b-933b2ddb7ecf" TYPE="ext4" 
[[email protected] ~]#
  1. 删除子卷,快照,文件系统

[[email protected] ~]#btrfs subvolume delete /mydata/sub1_snapshot
Delete subvolume (no-commit): ‘/mydata/sub1_snapshot‘
[[email protected] ~]#umount /mnt/sub1
[[email protected] ~]#btrfs subvolume delete /mydata/sub1
Delete subvolume (no-commit): ‘/mydata/sub1‘
[[email protected] ~]#
[[email protected] ~]#umount /mydata
[[email protected] ~]#btrfs device delete /dev/sdb /mydata
[[email protected] ~]#btrfs device delete /dev/sdc /mydata
ERROR: error removing the device ‘/dev/sdc‘ - unable to go below two devices on raid5
# 注:当出现类似情况,可直接格式化此设备。
[[email protected] ~]#btrfs filesystem show
btrfs-progs v3.19.1

本文主要介绍了LVM的基本原理与用法,包括LVM的创建与管理,以及简单体验了下Btrfs文件系统,包括Bftrfs的创建、在线扩展、删除等。

止战

2016.9.9


本文出自 “止战-连Sir” 博客,请务必保留此出处http://liansir.blog.51cto.com/9372908/1851218

linux高级文件系统管理——raid

...sp;作为大型企业,很多时候数据量相当庞大,由此以来对磁盘空间的要求比较高,更重要是的对数据的完整性的追求。所以单独的磁盘不仅空间使用满足不了,数据的完整性更是无从谈起,所以也就出现了专业的数据存储技术,... 查看详情

linux中的高级存储管理之逻辑卷管理器lvm(代码片段)

...3.LVM的拉伸1.VG容量充足时2.当VG不足时4.LVM的缩减5.LVM的LV磁盘快照6.LVM的删除7.如何移除正在使用的PV3.LVM相关命令集合前言在linux提升五中,我们介绍了关于磁盘分区等的内容。但是在生产环境中往往会出现这样的情况,在... 查看详情

高级文件系统管理之mdadm与lvm的创建

※配置配额系统磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间,比如一些网盘就是基于这个功能来做的,分配给用户固定的空间,花钱买,可以将空间设置的更... 查看详情

linux高级文件系统管理——btrfs

...两者更先进,可以将其二者合二为一。第一,它可以使用磁盘或者分区大小不一样的设备组建RAID;第二,它可以做到像LVM一样,随时扩展以及缩减使用空间,LVM支持在线扩展,但不能支持在线缩减,btrfs同时支持在线扩展和在线... 查看详情

操作系统磁盘管理高级(代码片段)

文章目录RAID磁盘阵列什么是RAID?RAID0RAID1RAID5RAID10磁盘阵列管理mdadm工具的使用创建并管理RAIDLVM磁盘管理物理卷-PV卷组-VG逻辑卷-LV命令行创建LVM调整LVM的大小删除逻辑卷RAID磁盘阵列RedundantArrayofIndependentDisks-独立冗余磁盘阵列... 查看详情

高级运维需要掌握哪些技术?

...命令(系统命令、目录管理、用户管理、文件权限、磁盘管理、资源查看等等 查看详情

高级文件系统管理磁盘配额,raid

磁盘配额    quota命令显示磁盘使用情况和限额。quota命令报告文件中列出的所有文件系统的限额。如果quota命令以非零状态退出,一个或多个文件系统超过限额。1、ext系列文件系统的quota的步骤方式1.1、开启quota(e... 查看详情

linux磁盘管理命令

linux 查看详情

linux磁盘管理

概述Linux磁盘管理好坏管理直接关系到整个系统的性能问题。Linux磁盘管理常用三个命令为df、du和fdisk。df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区dfdf命令参数功能:检查文件系统的磁盘空间... 查看详情

转载linux磁盘管理:lvm逻辑卷管理

Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理... 查看详情

深入剖析linux磁盘管理

一、linux中常见的磁盘:  无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目... 查看详情

linux入门之磁盘管理磁盘配额

Linux入门之磁盘管理(6)磁盘配额在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入... 查看详情

linux操作系统的磁盘存储管理中第二环是啥

...接观察软链接命令:ll目标文件查看两个文件3.RAIDraid:独立磁盘冗余阵列。作用:容错,提升读写速率 查看详情

linux磁盘管理

...分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。语法fdisk[必要参数][选择参数]必要参数:-l列出素所有分区表-u与"-l"搭配使用,显示分区数目选择参数:-s<分区编号>指定分区-v版本信息菜单操作说... 查看详情

linux磁盘管理(代码片段)

参考:Ubuntu下的磁盘管理作者:~莘莘发布时间:2021-07-1117:51:08网址:https://blog.csdn.net/lcx1837/article/details/118633544?spm=1001.2014.3001.5501目录Linux磁盘管理基本概念磁盘和目录的容量查询命令磁盘管理命令1、挂载分区... 查看详情

高级文件系统管理

1.设定文件系统配额,只能针对磁盘独自分区的文件系统不能针对文件目录未分区磁盘 <1>.实现home家目录的迁移迁移之前实行备份--新建一分区sdc2--创建文件系统--创建目录并挂载--拷贝--切换单一模式备份后删除以前家目... 查看详情

linux第14天:(08月25日)linux磁盘管理

Linux第14天:(08月25日)Linux磁盘管理   本章内容磁盘结构分区类型管理分区管理文件系统挂载设备管理虚拟内存   设备文件I/OPorts:I/O设备地址一切皆文件:open(),read(),write(),close()设备类型:块设备:block,存取... 查看详情

linux入门之磁盘管理分区管理

Linux入门之磁盘管理(1)分区管理无论是windows还是linux,目前支持的分区结构只有两种,一种是基于blos检查启动的mbr结构,另一种是基于uefi(统一扩展固件接口)的opt分区结构。当然,目前广泛的还是使用的mbr结构。linux中有很多... 查看详情