LVM揭祕
lvm的中文叫邏輯卷,英文名字叫Logical Volume Manager,它有什麼作用?
通過邏輯卷LVM可以有效的管理和分配磁盤空間,可以把分散的小分區組合成一個大的卷組,從卷組中分出需要的空間做出邏輯卷,這樣使得磁盤擴容和縮減方便易用。還有着備份的功能,指的就是lvm快照。
邏輯卷是怎麼來的?
dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊;注:dm是內核的功能模塊
/dev/dm-# 注:從0開始編號
這個邏輯設備的文件是什麼?
/dev/mapper/VG_NAME-LV_NAME 舉例:/dev/mapper/vol0-root 注:邏輯卷的設備文件,標識一
或者
/dev/VG_NAME/LV_NAME /dev/vol0/root 注:邏輯卷的設備文件,標識二
怎樣創建lvm呢?
首先我們來了解一下PE 、VG、 LVM三者之間的關係。如下圖:
注:物理卷pv組成卷組vg,而邏輯卷lvm在卷組vg上創建,大小不可以超過卷組。
怎樣創建pv?
pvcreate /dev/DEVICE: 舉例:pvcreate /dev/sda{3,4,5} 創建pv
pvs:簡要pv信息顯示
pvdisplay:顯示pv的詳細信息
怎樣創建vg?
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath 創建vg
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 擴展vg
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath... 縮減vg
vgs 簡要vg信息顯示
vgdisplay 顯示vg的詳細信息
vgremove VolumeGroupName 注:刪除某卷組
提出一個問題:如果你想把vg中的已存有數據的pv移除,該怎麼辦?
先做pvmove /dev/sda# 注:把pv的數據移動到其他pv,前提是剩下的pv有足夠的空間存儲轉移的數據
然後vgreduce VolumeGroupName /dev/sda# 注:從某卷組中刪除pv
怎樣創建lv?
lvcreate -L #[mMgGtT] -n NAME VolumeGroup 注: -L:lv指定大小 -n:lv名字
lvremove /dev/VG_NAME/LV_NAME 擴展lv 注:先擴展物理邊界,再擴展邏輯邊界
lvs 簡要lv信息顯示
lvdisplay 顯示lv的詳細信息
1、對了,你創建完lv後,它就如同一個塊設備。你需要創建文件系統,並掛載使用呢
舉例:mke2fs -t ext4 -b 1024 /dev/myvg/mylv
mount /dev/myvg/mylv /mnt
2、當你發現自己的lv不夠用了,怎麼辦呢?別忘了它是可以伸縮的
擴展邏輯卷:
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME 注:先擴展物理邊界
# resize2fs /dev/VG_NAME/LV_NAME 注:再擴展邏輯邊界
3、當你某個lv空間要不了那麼大,你想縮減怎麼辦?
縮減邏輯卷:
# umount /dev/VG_NAME/LV_NAME 注:先卸載邏輯卷 # e2fsck -f /dev/VG_NAME/LV_NAME 注:爲了避免因卸載造成文件系統錯誤,強制修復 # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] 注:先縮減邏輯邊界 # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME 注:再縮減物理邊界 # mount 再掛載使用 注意:縮減剩下的空間一定得能存儲你的現有的數據
你的數據如果想要更安全,就需要在lv上創建快照:snapshot
格式:
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
注:快照卷的大小要能裝下未來數據增長的空間
btrfs文件系統
Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW;
ext3/ext4, xfs
核心特性:
1、多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以聯機“添加”、“移除”,“修改”;
2、寫時複製更新機制(CoW):複製、更新及替換指針,而非“就地”更新;
3、數據及元數據校驗碼:checksum
4、子卷:sub_volume
5、快照:支持快照的快照;
6、透明壓縮:
文件系統創建:
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;
舉例:1、mkfs.btrfs -L mydata /dev/sda{b,c} 創建btrfs,多塊硬盤組成B-tree 2、btrfs device add /dev/sdd /mydata 添加硬盤 3、btrfs device delete /dev/sdd /mydata 移除硬盤,數據會自動轉移 4、btrf balance start-dconvert=raid1 /mydata 硬盤要夠,不然不支持 5、btrfs subrolume create /mydata/logs 創建子卷,logs就是子卷 6、mount -o subvol=logs /dev/sdb /mnt 子卷掛載 注意:父卷掛載,子卷就會被掛載。單獨掛載子卷,父卷看不到 7、btrfs subvolume delete /mydata/logs 刪除子卷 8、btrfs subvolume snapshot /mydata/logs /mydata/logs_snapshot 也可以對文件做快照,利用了寫時複製的功能
屬性查看:
btrfs filesystem show
掛載文件系統:
mount -t btrfs /dev/sdb MOUNT_POINT
透明壓縮機制:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
子命令:filesystem, device, balance, subvolume
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
練習1:創建一個至少有兩個PV組成的大小爲20G的名爲testvg的VG;要求PE大小爲16MB, 而後在卷組中創建大小爲5G的邏輯卷testlv;掛載至/users目錄;
練習2: 新建用戶archlinux,要求其家目錄爲/users/archlinux,而後su切換至archlinux用戶,複製/etc/pam.d目錄至自己的家目錄;
練習3:擴展testlv至7G,要求archlinux用戶的文件不能丟失;
練習4:收縮testlv至3G,要求archlinux用戶的文件不能丟失;
練習5:對testlv創建快照,並嘗試基於快照備份數據,驗正快照的功能;
文件系統掛載使用:
掛載光盤設備:
光盤設備文件:
IDE: /dev/hdc
SATA: /dev/sr0
符號鏈接文件:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
dd命令:convert and copy a file 底層複製命令
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 複製單元大小;
count=#:複製多少個bs;
磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=256 count=1
兩個特殊設備:
/dev/null: 數據黑洞;
/dev/zero:吐零機;
dd: 複製