Linux磁盘管理高级

Linux磁盘管理高级


  • LVM

  • Btrsh


  • LVM

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

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

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

wKioL1fSkuOAKC-DAACIwQS5eMo501.png

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

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

wKioL1fSkv-QebAAAABcFrDLVxc194.png

  1. 创建vg: vgcreate

[root@centos6 ~]#vgcreate VG0 /dev/sd{b,c1}
  Volume group "VG0" successfully created
[root@centos6 ~]#

wKiom1fSkx2gGfQFAACCiwU703g021.png

  1. 创建lv: lvcreate

[root@centos6 ~]#lvcreate -n mydata -L 20G VG0
  Logical volume "mydata" created.
[root@centos6 ~]#

wKiom1fSk0SQU0upAACWqQ2agTw877.png

  1. 创建文件系统

[root@centos6 ~]#mkfs.ext4 /dev/VG0/mydata
  1. 挂载

wKioL1fSk1ai7t4RAAA2PFgeitA179.png

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

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

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

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

  1. 扩展逻辑卷

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

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

  1. 扩展卷组

[root@centos6 ~]#pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created
[root@centos6 ~]#vgextend VG0 /dev/sdc2
  Volume group "VG0" successfully extended
[root@centos6 ~]#

wKioL1fSk5yy-ODpAAAl7NQGhXU807.png

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

[root@centos6 ~]#umount /mydata    # 先卸载
[root@centos6 ~]#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
[root@centos6 ~]#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.

[root@centos6 ~]#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.
[root@centos6 ~]#[root@centos6 ~]#mount -a   # 重新挂载
[root@centos6 ~]#

wKioL1fSk9awSx2cAACSfOJkwjQ024.png

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

wKioL1fSk-mjdIf-AABF7uT9T6g612.png

wKiom1fSk_rwSBOEAAA7NbdQiI8911.png

而当我们让LV占满VG时:

wKioL1fSlBHgf2LFAACBbXZPcAc825.png

wKioL1fSlCHCb7r-AABX_tzHKHo511.png

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

[root@centos6 ~]#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.
[root@centos6 ~]#
[root@centos6 ~]#mkdir /mnt/snapshot
[root@centos6 ~]#mount /dev/VG0/mydata /mnt/snapshot
[root@centos6 ~]#
  1. 移动物理卷

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

[root@centos6 ~]#pvmove /dev/sdb
  /dev/sdb: Moved: 0.7%  /dev/sdb: Moved: 100.0%
[root@centos6 ~]#

移动前:

wKiom1fSlGjzf-zBAAAz8ZX-fZ8666.png

移动后:

wKioL1fSlHfC_3jZAAA9KDx3YRc545.png

  1. 删除逻辑卷

[root@centos6 ~]#umount /dev/VG0/mydata
[root@centos6 ~]#pvmove /dev/sdb
  No data to move for VG0
[root@centos6 ~]#pvmove /dev/sdc1
  /dev/sdc1: Moved: 0.5%
  /dev/sdc1: Moved: 100.0%
[root@centos6 ~]#pvmove /dev/sdc2
  No data to move for VG0
[root@centos6 ~]#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
[root@centos6 ~]#

wKioL1fSlLvTOeF2AAAxNHiRuXI282.png


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系统

[root@centos7 ~]#mkfs.btrfs -L mydata /dev/sd{b,c}

wKiom1fSlM-S_s_VAABRuNIEfbo904.png

[root@centos7 ~]#mkdir /mydata
[root@centos7 ~]#mount LABEL=mydata /mydata
[root@centos7 ~]#

查看无数据信息:

wKioL1fSlOiQcpISAABjSX6u7SQ491.png

  1. 在线压缩与扩展

[root@centos7 ~]#btrfs filesystem resize -10G 
/mydata Resize '/mydata' of '-10G'
[root@centos7 ~]#btrfs filesystem resize max 
/mydata/ Resize '/mydata/' of 'max'
  1. 透明压缩

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

[root@centos7 ~]#btrfs device add /dev/sdd /mydata/
[root@centos7 ~]#btrfs device add /dev/sde /mydata/
[root@centos7 ~]#

wKioL1fSlUGD-CS5AABWDc6RPdU700.png

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

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

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

wKiom1fSlV_jTt32AABjuJZHzQ0418.png

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

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

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

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

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

[root@centos7 ~]#btrfs subvolume creat /mydata/sub1   # 创建子卷
Create subvolume '/mydata/sub1'
[root@centos7 ~]#
[root@centos7 ~]#btrfs subvolume list /mydata/  # 查看子卷   
ID 262 gen 56 top level 5 path sub1
[root@centos7 ~]#

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

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

[root@centos7 ~]#btrfs device delete /dev/sde /mydata/
[root@centos7 ~]#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
[root@centos7 ~]#
[root@centos7 ~]#mkfs.ext4 /dev/sde
[root@centos7 ~]#blkid 
/dev/sde/dev/sde: UUID="397d0c57-4e11-4008-9c0b-933b2ddb7ecf" TYPE="ext4" 
[root@centos7 ~]#
[root@centos7 ~]#btrfs-convert /dev/sde  # ext4-->btrfs
creating btrfs metadata.
copy inodes [o] [         0/        11]
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
[root@centos7 ~]#blkid /dev/sde        
/dev/sde: UUID="c5031e36-0824-4246-bca1-ff645c8cb40e" UUID_SUB="ed87c272-0c09-452b-a59b-6d423a764fc1" TYPE="btrfs" 
[root@centos7 ~]

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

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

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

止战

2016.9.9

原创文章,作者:Liansir,如若转载,请注明出处:http://www.178linux.com/45023

(0)
LiansirLiansir
上一篇 2016-09-09
下一篇 2016-09-09

相关推荐

  • Nginx 基础 (IO模型、编译安装、几大块配置文件详解)

    Nginx基础 前言 apache在设计的时候已经考虑了并发访问模型,select()机制可以响应1024个访问,但是当数量再大,千万级别的时候http就响应不过来了。这个时候,nginx的出现解决了这一个问题。nginx是一个安装简单、配置文件简单、占用内存少、稳定性高、处理并发能力非常强、灵活好用等有点聚集于一身的轻量级服务器。在Linux操作系统中,N…

    Linux干货 2016-12-24
  • 2016全球运维大会,优云蒋君伟演讲“CMDB+自动化的管理融合”成一大亮点

    2016全球运维大会于9月23日-24日在上海盛大开幕。作为国内运维行业的重量级大会,优云产品总监蒋君伟在自动化专场与来自全国各地的运维同行一起探讨、分享业内自动化运维的最佳实践。现场情绪热烈,气氛高涨,成为了本届全球运维大会的一大亮点。 全新梳理自动化与CMDB的融合之道 全球运维大会当天,运维自动化专场很多大牛针对自动化运维管理中的CMDB进行了激烈的讨…

    Linux资讯 2016-12-05
  • ☞Ansible

    Ansible ansible简介 安装ansible 使用ansible前提条件 主要文件 配置文件 Host Inventory ansible.cfg 命令使用 ansible ansible-doc ansible-playbook 常用模块 ansible各模块简单示例 ansible playbooks playbook内容组成 host、use…

    Linux干货 2016-11-06
  • vsftpd虚拟用户搭建

    vsftpd虚拟用户搭建 1.安装vsftpd等一系列的安装包 yum install vsftpd mariadb-server mariadb-devel pam-devel -y 2.安装pam_mysql 下载:pam_mysql-0.7RC1.tar.gz wget -c ftp://172.16.0.1/pub/Sources/sources/p…

    Linux干货 2017-06-06
  • 自制linux系统

    本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能。 自制linux系统 步骤概述: 1、新建一个硬盘2、在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3、格式化并且挂载两个分区4、安装grub至目标磁盘5、为grub提供配置文件6、复制内核文件和initrd文件7、创建目标…

    Linux干货 2016-09-13
  • 使用ssh比较慢的小结

    1)情况说明 a、ping ip,响应正常 b、telnet ip,响应正常 c、ssh ip,响应慢,但是等很大会后还是能打开 2)处理方法 方法1: 修改本地中的/etc/ssh/ssh_config,把参数改为GSSAPIAuthentication no 方法2: a、修改远程服务器端的/etc/ssh/sshd_config ,把参数改为GSSAP…

    系统运维 2016-12-05