邏輯卷管理器(LVM),允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小。允許在多個物理設備間重新組織文件系統。其步驟大體如下:將設備指定為物理卷,用一個或者多個物理卷來創建一個卷組,物理卷你是用固定大小的物理區域(PE)來定義的,在物理卷上創建的邏輯卷是由物理區域組成,可以在邏輯卷上創建文件系統。
一、知識整理
1、LVM設備名:dm-#。
軟鏈接:/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
2、結構簡圖:
1、邏輯卷管理器快照:快照是特殊的邏輯卷,他是在生成快照時存在的邏輯卷的準確拷貝。快照只有在它們和原來的邏輯卷不同時才會消耗空間。
在生成快照時會分配給他一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中??煺罩兄缓性瓉淼倪壿嬀砀牡臄祿蛘咦陨煽煺蘸蟮目煺罩懈牡臄祿?。建立快照的卷大小只需要原始邏輯卷的百分之十五到二十就夠了。也可以使用lvextend放大快照。
由于快照區與原本的LV公用很多PE的區塊,因此快照區與被快照的LV必須要在同一個VG上,系統恢復的時候的文件數量不能高于快照區的實際容量。創建快照使用指定只讀特性避免操作錯誤,在快照內查看到的文件,若其沒有改變,則實則為lv中的原文件,相當于軟鏈接,但并不是軟鏈接,若發生改變,則為改變時刻之前的原文件,快照只備份創建當時的狀態,快照可以有多個?;?/span>COW(copy on write)寫時復制更新機制。
2、btrfs技術預覽版:(B-tree,Butter FS,Better FS)GPL,Oracle,2007
多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID以及聯機“添加”、“移除”、“修改”。
寫時復制更新機制:復制更新及替換指針,而非就地更新。
數據及元數據校驗碼:checksum
子卷:sub_volume
快照:支持快照的快照
透明壓縮。
二、命令詳解及事例
1、PV管理工具:
pvs 簡要pv信息
pvdisplay 詳細pv信息
pvcreate /dev/DEVICE 創建pv
pvck pv 檢測物理卷LVM元數據的一致性
-d 調試模式
-v 詳細信息模式
–labelsector 指定LVE卷標所在扇區,默認情況下物理卷前四個扇區保存著LVM卷標,可以使用該選項指定其他位置。
pvmove 將pv數據移動到其他pv
pvremove 將pv刪除
2、VG管理工具:
vgs 簡要vg信息
vgdisplay 詳細vg信息
vgcreate 創建vg
vgcreate 名稱 -s #(chunk大小) 路徑
vgextended 擴展vg
vgreduce 縮減vg,在此命令之前先做pvmove
pvmove向下傳遞,指定當前vg中的空閑邏輯卷,若無空間則無法移動。
vgremove 刪除卷組,在此命令之前先做pvmove
3、LV管理工具:
lvs 簡要lv信息
lvdisplay 詳細lv信息
lvcreate 創建邏輯卷
lvcreate -L #(大小) -n NAME VG
lvremove /dev/VG_NAME/LV_NAME
重設文件系統大小
fsadm [] resize device [new_size[BKMG..]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
4、擴展邏輯卷:
lvextend -L [+]# /dev/VG_NAME/LV_NAME
resize2fs /dev/myvg/mylv 同步文件系統,只適合ext格式文件系統,擴展邏輯卷的時候使用。擴展xfs格式文件系統的命令為xfs_growfs。
df -lh查看大小變化
擴展邏輯卷使用lvextend -r -l +100%FREE /dev/vg0/lv0不需要resize2fs
小寫l為百分比或PE的個數,大寫為數值
縮減邏輯卷:縮減必須先取消掛載;
umount /dev/VG_NAME/LV_NAME
e2fsck -f /VG_NAME/LV_NAME
resize2fs /VG_NAME/LV_NAME 縮減文件系統
lvreduce -L [-]# /VG_NAME/LV_NAME 縮減邏輯卷
mount
5、邏輯卷管理器快照
為現有邏輯卷創建快照:lvcreate -L # -s -n (指明名字)snap-data -p r (只讀) /dev/vg1/data
掛載快照:mkdir -p /mnt/snap
mount -o ro /dev/vg1/snap-data /mnt/snap
刪除快照umount /mnt/databackup
lvremove /dev/vg0/databackup
6、btrfs文件系統:
mkfs.btrfs
-L “LABEL”
-d TYPE :raid0,raid1,raid5,raid6,raid10,single
-m PROFILE:raid0,raid1,raid5,raid6,raid10,single,dup
-O FEATURE
-o list-all:列出支持的所有feature
mkfs.btrfs -L mydata -f /dev/sdb /dev/sdc
屬性查看:btrfs filesystem show;blkid
掛載文件系統:mount -t btrfs /dev/sdb MOUNT_POINT
透明壓縮機制:mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
在線修改文件系統大小:
btrfs filesystem resize -10G /mydata
btrfs filesystem resize +5G /mydata
btrfs filesystem resize max /mydata
查看:btrfs filesystem df /mydata
添加設備:btrfs devic add /dev/sdd /mydata
平衡數據:btrfs balance status /mydata顯示平衡過程
btrfs balance start /
btrfs balance pause /
btrfs balance cancel /
btrfs balance resume /
刪除設備:btrfs device delete /dev/sdb /mydata
修改raid的級別:注意raid對成員數量的要求
btrfs balance start -mconvert=raid1|0|5 /mydata 元數據組成
btrfs balance start -dconvert=raid1|0|5 /mydata 數據組成
btrfs子卷管理:
btrfs subvolume list /mydata
btrfs subvolume create /mydata/subv1
umount /mydata
moun -o subvo1=subv1 /dev/sdd /mnt/subv1
btrfs subvolume show /mnt/subv1
mount /dev/sdb /mydata 掛父卷,子卷自動掛載
mount -o subvolid=### /dev/sdd /mnt/subv1
btrfs subvolume show /mnt/subv1
btrfs subvolume delete /mydata/subv1
創建快照:btrfs subvolume snapshot /mydata/subv1 /mydata/snapshot_subv1
btrfs subvolume list /mydata
刪除快照:
btrfs subvolume delete /mydata/snapshot_subv1
對一個文件做快照(當前卷):
cd /mydata/subv1
cp –reflink testfile snapshot_testfile
轉化ext4為btrfs
btrfs-convert /devsdd1
btrfs fikesystem show
轉化btrfs為ext4
umount
btrfs-convert -r /dev/sdd1 回滾-r
二、課后練習
1、
[root@localhost ~]# pvcreate /dev/sdc1 WARNING: ext4 signature detected on /dev/sdc1 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/sdc1. Physical volume "/dev/sdc1" successfully created [root@localhost ~]# pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created [root@localhost ~]# vgcreate -s 16M vg1 /dev/sdc{1,2} Volume group "vg0" successfully created [root@localhost ~]# cd / [root@localhost /]# mkdir users [root@localhost /]# useradd -d /users/archlinux archlinux [root@localhost users]# lvcreate -n testlv -L 5G /dev/vg1 Logical volume "testlv" created. [root@localhost users]# mke2fs -t ext4 /dev/vg1/testlv mke2fs 1.42.9 (28-Dec-2013) 文件系統標簽= OS type: Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user 第一個數據塊=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: mo^H完成 [root@localhost users]# mount /dev/vg1/testlv /users/ [root@localhost users]# lvextend -L +2G /dev/vg1/testlv Size of logical volume vg1/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). Logical volume testlv successfully resized. [root@localhost users]# umount /users/ [root@localhost users]# resize2fs /dev/vg1/testlv 3G resize2fs 1.42.9 (28-Dec-2013) 請先運行 'e2fsck -f /dev/vg1/testlv'. [root@localhost users]# e2fsck -f /dev/vg1/testlv e2fsck 1.42.9 (28-Dec-2013) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄連接性 Pass 4: Checking reference counts 第5步: 檢查簇概要信息 /dev/vg1/testlv: 11/327680 files (0.0% non-contiguous), 58462/1310720 blocks [root@localhost users]# resize2fs /dev/vg1/testlv 3G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg1/testlv to 786432 (4k) blocks. The filesystem on /dev/vg1/testlv is now 786432 blocks long. [root@localhost users]# lvreduce -L 3G /dev/vg1/testlv WARNING: Reducing active logical volume to 3.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce testlv? [y/n]: y Size of logical volume vg1/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testlv successfully resized. [root@localhost users]# mount /dev/vg1/testlv /users/ [root@localhost users]# lvcreate -p r -L 200M -n snap1 -s /dev/vg1/testlv Rounding up size to full physical extent 208.00 MiB Logical volume "snap1" created. [root@localhost users]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 300M 0 part /boot ├─sda2 8:2 0 20.5G 0 part │ ├─centos-root 253:0 0 9.3G 0 lvm / │ ├─centos-swap 253:1 0 1.9G 0 lvm [SWAP] │ └─centos-var 253:2 0 9.3G 0 lvm /var └─sda3 8:3 0 10G 0 part /testdir sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 5G 0 part /mydata ├─sdb2 8:18 0 5G 0 part └─sdb3 8:19 0 5G 0 part sdc 8:32 0 20G 0 disk ├─sdc1 8:33 0 10G 0 part │ ├─vg1-testlv-real 253:4 0 3G 0 lvm │ │ ├─vg1-testlv 253:3 0 3G 0 lvm /users │ │ └─vg1-snap1 253:6 0 3G 1 lvm │ └─vg1-snap1-cow 253:5 0 208M 1 lvm │ └─vg1-snap1 253:6 0 3G 1 lvm └─sdc2 8:34 0 10G 0 part sdd 8:48 0 20G 0 disk sr0 11:0 1 7.2G 0 rom /media/cdrom
原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/45649