LVM揭祕linux
lvm的中文叫邏輯卷,英文名字叫Logical Volume Manager,它有什麼做用?安全
經過邏輯卷LVM能夠有效的管理和分配磁盤空間,能夠把分散的小分區組合成一個大的卷組,從卷組中分出須要的空間作出邏輯卷,這樣使得磁盤擴容和縮減方便易用。還有着備份的功能,指的就是lvm快照。 bash
邏輯卷是怎麼來的?app
dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊;注:dm是內核的功能模塊ide
/dev/dm-# 注:從0開始編號spa
這個邏輯設備的文件是什麼? 指針
/dev/mapper/VG_NAME-LV_NAME 舉例:/dev/mapper/vol0-root 注:邏輯卷的設備文件,標識一orm
或者blog
/dev/VG_NAME/LV_NAME /dev/vol0/root 注:邏輯卷的設備文件,標識二 rem
怎樣建立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的詳細信息
一、對了,你建立完lv後,它就如同一個塊設備。你須要建立文件系統,並掛載使用呢
舉例:mke2fs -t ext4 -b 1024 /dev/myvg/mylv
mount /dev/myvg/mylv /mnt
二、當你發現本身的lv不夠用了,怎麼辦呢?別忘了它是能夠伸縮的
擴展邏輯卷:
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME 注:先擴展物理邊界
# resize2fs /dev/VG_NAME/LV_NAME 注:再擴展邏輯邊界
三、當你某個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
核心特性:
一、多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以聯機「添加」、「移除」,「修改」;
二、寫時複製更新機制(CoW):複製、更新及替換指針,而非「就地」更新;
三、數據及元數據校驗碼:checksum
四、子卷:sub_volume
五、快照:支持快照的快照;
六、透明壓縮:
文件系統建立:
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 /dev/sda{b,c} 建立btrfs,多塊硬盤組成B-tree 二、btrfs device add /dev/sdd /mydata 添加硬盤 三、btrfs device delete /dev/sdd /mydata 移除硬盤,數據會自動轉移 四、btrf balance start-dconvert=raid1 /mydata 硬盤要夠,否則不支持 五、btrfs subrolume create /mydata/logs 建立子卷,logs就是子卷 六、mount -o subvol=logs /dev/sdb /mnt 子卷掛載 注意:父卷掛載,子卷就會被掛載。單獨掛載子卷,父卷看不到 七、btrfs subvolume delete /mydata/logs 刪除子卷 八、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: 複製