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.www58058.com/45023

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

相關推薦

  • Vim

    vim編輯器         vim,可謂文本編輯界的大哥,功能強大無比,是進階版的vi, vim 不但可以用不同顏色顯示文字內容,還能夠進行諸如 shell script, C program等程序編輯功能。 vim是一種模式化的編輯器  (vim自帶教程,命令行中輸…

    Linux干貨 2016-08-09
  • lvm 邏輯卷管理

    標簽:LVM 創建 擴容 縮減 一、LVM  LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4內核上實現。LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管…

    Linux干貨 2015-05-18
  • 隨筆

    GREP正則表達式: 復習: glob文件通配符:     *:任意長度字符:     ?:任意單個字符:     []:括號內的任意單個字符:     [^]:括號內字符除外:  &nbs…

    Linux干貨 2016-07-16
  • Linux的軟鏈接和硬鏈接區別

    在Linux中,為了方便文件的使用,引入了兩種鏈接,即為軟鏈接和硬鏈接。 那么什么是硬鏈接,什么又是軟鏈接呢。 簡單來說,硬鏈接就是一個inode號對應多個文件名,也就是說一個文件使用了多個別名。 首先先來看看我們要創建硬連接的文件信息: [root@localhost ~]# ll -i /root &nb…

    Linux干貨 2016-10-20
  • N25-第1周博客作業

    計算機概述及命令 一、計算機原理及其組成功能 計算機作為一個整體,由軟件和硬件兩大部分組成:  (1)計算機硬件系統。        計算機的硬件系統結構有哈佛結構和馮·諾伊曼結構兩種。 哈佛結構是一種將程序指令存儲和數據存儲分開的存儲器結構。中央處理器首先到程序指令存儲器中讀取程序指令內…

    Linux干貨 2016-12-03
  • httpd服務歸納:httpd簡介與基本安裝

    一、httpd 簡介  1. httpd 歷史: httpd daemon 最早誕生于1995年二月, 伊利諾伊大學香檳分校的美國國家超級計算應用中心(NCSA),由Rob McCool開發。當這個項目完成后,Rob 老兄離開RCSA以后,這個項目組就解散了,這個項目也隨之終止。 但是,由Brian Behlendorf 和 Cliff …

    Linux干貨 2015-05-07
欧美性久久久久