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
使用示例
-
創建由/dev/sdb(15G)和/dev/sdc1(10G)組成的卷組VG0,從中切分一個大小 20G的邏輯卷mydata,采用ext4文件系統,并自動掛載到/mydata目錄下
-
擴展mydata邏輯卷占用所有VG0的空間,并增加新的設備/dev/sdc2(5G)到VG0中
-
壓縮mydata邏輯卷至5G大小
-
刪除所有以上題目中創建的邏輯卷,卷組和PV
準備:準備好硬盤與相應的分區,注意修改分區的類型為8e(Linux LVM)
-
創建pv: pvcreate
[root@centos6 ~]#pvcreate /dev/sd{b,c1} Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdc1" successfully created [root@centos6 ~]#
-
創建vg: vgcreate
[root@centos6 ~]#vgcreate VG0 /dev/sd{b,c1} Volume group "VG0" successfully created [root@centos6 ~]#
-
創建lv: lvcreate
[root@centos6 ~]#lvcreate -n mydata -L 20G VG0 Logical volume "mydata" created. [root@centos6 ~]#
-
創建文件系統
[root@centos6 ~]#mkfs.ext4 /dev/VG0/mydata
-
掛載
[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.
-
擴展邏輯卷
[root@centos6 ~]#lvextend -r -l +100%FREE /dev/VG0/mydata # 百分百占用VG # 當然也可以lvextend -L [+]#[mMgGtT]
注:如果是xfs系統,擴展文件系統時用xfs_growfs /dev/VG0/mydata
-
擴展卷組
[root@centos6 ~]#pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created [root@centos6 ~]#vgextend VG0 /dev/sdc2 Volume group "VG0" successfully extended [root@centos6 ~]#
-
邏輯卷縮減(慎重操作,操作前需備份,五個步驟,不能顛倒,與創建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 ~]#
注意:當邏輯卷LV的太小以至沒占用到其它的物理卷PV,則該PV顯示不出LVM(dm)
而當我們讓LV占滿VG時:
-
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 ~]#
-
移動物理卷
在移動物理卷上的空間到其它卷組時,要確保卷組VG有足夠的空間,否則移動會失敗,r所以,在上面的基礎上我們再將LV縮減到5G,然后移動/dev/sdb.
[root@centos6 ~]#pvmove /dev/sdb /dev/sdb: Moved: 0.7% /dev/sdb: Moved: 100.0% [root@centos6 ~]#
移動前:
移動后:
-
刪除邏輯卷
[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 ~]#
Btrsh
Btrfs
被稱為是下一代 Linux 文件系統,Linux支持眾多的文件系統,其經典的系列是ext系統,在CentOS
7上面還支持xfs文件系統,ext4可以向前或向后兼容;XFS
是一個全64-bit的文件系統,開啟了日志功能,所以你磁盤上的文件不再會意外宕機而遭到破壞;人們的需求無止盡,Btrfs正在綻放其魅力。
Btrfs的特性
-
支持RAID
-
CoW機制:寫時復制
-
支持快照
-
透明壓縮
-
子卷:sub_volume
下面我們來簡單地體驗一下Btrfs, 主要涉及創建btrfs,做快照,增加與刪除設備,文件系統轉換,刪除btrfs文件系統等。btrfs的命令特點是支持命令集,常用的有btrfs filesystem, btrfs device, btrfs balance, btrfs subvolume等。
-
創建btrfs系統
[root@centos7 ~]#mkfs.btrfs -L mydata /dev/sd{b,c}
[root@centos7 ~]#mkdir /mydata [root@centos7 ~]#mount LABEL=mydata /mydata [root@centos7 ~]#
查看無數據信息:
-
在線壓縮與擴展
[root@centos7 ~]#btrfs filesystem resize -10G /mydata Resize '/mydata' of '-10G' [root@centos7 ~]#btrfs filesystem resize max /mydata/ Resize '/mydata/' of 'max'
-
透明壓縮
[root@centos7 ~]#mount -o remount,compress=lzo /mydata/ [root@centos7 ~]#
-
添加新硬盤
[root@centos7 ~]#btrfs device add /dev/sdd /mydata/ [root@centos7 ~]#btrfs device add /dev/sde /mydata/ [root@centos7 ~]#
-
對元數據與數據分別作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 ~]#
可見空余的硬盤有部分已經被占用,這本身也是數據平衡。
注:在修改RAID級別時,注意raid對成員數量的要求。
當然,也可以單獨為數據作raid:
btrfs balance start -dconvert=single /mydata
-
平衡數據:目的是新加的磁盤可以無人用,故而做數據平衡
btrfs balance status /mydata btrfs balance srart /mydata (以chunk為單位)
-
子卷管理
[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 # 掛載父卷,子卷自動掛載
-
快照
# 子卷做快照 [root@centos7 ~]#btrfs subvolume snapshot /mydata/sub1 /mydata/sub1_snapshot Create a snapshot of '/mydata/sub1' in '/mydata/sub1_snapshot' [root@centos7 ~]#
-
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 ~]#
-
刪除子卷,快照,文件系統
[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