高級文件系統之-LVM管理

lvm應用

lvm的重點在于可以彈性的調整filesystem的容量! 而并非在于數據的存儲效率及安全上面。

需要文件的讀寫效能或者是數據的可靠性是RAID所考慮的問題。

lvm:邏輯卷管理器

允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小

允許在多個物理設備間重新組織文件系統

  • 將設備指定為物理卷

  • 用一個或者多個物理卷來創建一個卷組

  • 物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的

  • 在物理卷上創建的邏輯卷是由物理區域(PE)組成

  • 可以在邏輯卷上創建文件系統

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

LVM如何更改文件系統的容量?

LVM可以彈性的更改LVM的容量,是如何做到的?

是通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV的容量,或將其他設備中的PE加到LV中以加大容量!

高級文件系統之-LVM管理

創建和使用新的LVM邏輯卷的步驟:

1、建立LVM類型的分區   (fdisk t)
2、建立LVM物理卷      (pv)
3、建立LVM卷組       (vg)
4、建立LVM邏輯卷      (lv)
5、建立文件系統       (mkfs.ext2,3,4)
6、掛載文件系統       (mount)
7、使用文件系統

pv管理工具

高級文件系統之-LVM管理

命令行中輸入pv 按兩次TAB自動補全即可查看所有的pv命令

vg管理工具

高級文件系統之-LVM管理

和pv相似,在命令行中輸入lv 按兩次TAB即可查看所有的vg命令

注意:
刪除卷組時:
    先做pvmove,再做vgremove

lv管理工具

高級文件系統之-LVM管理

擴展和縮減邏輯卷

  • 擴展邏輯卷:

    # lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    # resize2fs /dev/VG_NAME/LV_NAME
  • 縮減邏輯卷:

    # 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共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高于快照區的實際容量

實戰案例:

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創建快照,并嘗試基于快照備份數據,驗正快照的功能




本實驗基于 centos 7

首先介紹下我們的實現環境

高級文件系統之-LVM管理

如圖:我們使用sdb的4個分區做LVM


第一問

第一步創建pv
[root@redhat7 ~]# pvcreate /dev/sdb{1,5,6,7}
[root@redhat7 ~]# pvs

高級文件系統之-LVM管理

高級文件系統之-LVM管理

第二步創建vg
[root@redhat7 ~]# vgcreate -s 16MB testvg /dev/sdb{1,5,6}
[root@redhat7 ~]# vgs
[root@redhat7 ~]# vgdisplay

高級文件系統之-LVM管理

第三步創建lv
[root@redhat7 ~]# lvcreate -L 5G -n testlv testvg
[root@redhat7 ~]# lvs
[root@redhat7 ~]# lvdisplay

高級文件系統之-LVM管理

第四步創建文件系統并掛載
[root@redhat7 ~]# mkfs -t ext4 /dev/testvg/testlv
[root@redhat7 ~]# mkdir /users
[root@redhat7 ~]# mount /dev/testvg/testlv /users/
[root@redhat7 ~]# 
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  4.8G   20M  4.6G   1% /users


第二問

[root@redhat7 ~]# useradd -d /users/archlinux archlinux
[root@redhat7 ~]# su - archlinux
hi,dangerous!
[archlinux@redhat7 ~]$ pwd
/users/archlinux
[archlinux@redhat7 ~]$ whoami
archlinux
[archlinux@redhat7 ~]$ cp /etc/pam.d/ ./ -r
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/
156K    /etc/pam.d/

第三問

前提:lv所在的vg容量要足夠;

[root@redhat7 ~]# lvextend -L 7G /dev/testvg/testlv 
  Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
  Logical volume testlv successfully resized.
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  4.8G   21M  4.6G   1% /users
[root@redhat7 ~]# resize2fs /dev/testvg/testlv 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/testvg/testlv is now 1835008 blocks long.

[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  6.8G   23M  6.4G   1% /users
[root@redhat7 ~]# su - archlinux 
Last login: Mon Aug 29 20:14:12 CST 2016 on pts/0
[archlinux@redhat7 ~]$ pwd
/users/archlinux
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/  //和擴展前大小一樣,說明數據沒有丟失
156K    pam.d/

第四問:

注意:縮減lvm必須嚴格按照前面我們所說的步驟,順序很重要??!

這里我們再次強調下
1、卸載文件系統
2、使用e2fsck強制檢測文件系統(這里只針對ext系列的文件系統)
3、首先縮減文件系統邊界
4、縮減lvm
5、掛載使用

[root@redhat7 ~]# umount /users/
[root@redhat7 ~]# e2fsck -f /dev/testvg/testlv 
[root@redhat7 ~]# resize2fs /dev/testvg/testlv 3G
[root@redhat7 ~]# lvreduce -L 3G /dev/testvg/testlv //此處有個提示,我們選擇y即可(如下圖所示)
[root@redhat7 ~]# mount /dev/testvg/testlv /users/
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  2.9G   16M  2.7G   1% /users
[root@redhat7 ~]# su - archlinux 
Last login: Mon Aug 29 20:30:30 CST 2016 on pts/0
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/ //大小沒變,說明數據保存完整
156K    pam.d/

高級文件系統之-LVM管理

第五問:

[root@redhat7 ~]# lvcreate -s -L 512M -n snap_testlv /dev/testvg/testlv
  Logical volume "snap_testlv" created.
[root@redhat7 ~]# ll /dev/testvg/snap_testlv  //查看快照設備
lrwxrwxrwx. 1 root root 7 Aug 29 20:45 /dev/testvg/snap_testlv -> ../dm-3
[root@redhat7 ~]# mount -r /dev/testvg/snap_testlv /mnt //快照卷掛載為只讀,它不需要寫數據
[root@redhat7 ~]# df -h | tail -2 
/dev/mapper/testvg-testlv       2.9G   16M  2.7G   1% /users
/dev/mapper/testvg-snap_testlv  2.9G   16M  2.7G   1% /mnt
  //這里注意:我們指定的大小為512M ;這里顯示和原卷大小一樣,但實際為512M

[root@redhat7 ~]# ll /mnt
total 20
drwx------. 6 archlinux archlinux  4096 Aug 29 20:16 archlinux
drwx------. 2 root      root      16384 Aug 29 20:09 lost+found
[root@redhat7 ~]# ll /users/
total 20
drwx------. 6 archlinux archlinux  4096 Aug 29 20:16 archlinux
drwx------. 2 root      root      16384 Aug 29 20:09 lost+found
   //和原卷數據完全一樣

[root@redhat7 ~]# cd /users/archlinux/pam.d/
[root@redhat7 pam.d]# echo "Hello world" >> atd //修改原卷中的atd文件;向最后一行添加一個字符串
[root@redhat7 pam.d]# tail -1 atd //查看原卷中atd文件的最后一行,可以看到已經修改成功
Hello world

[root@redhat7 pam.d]# cd /mnt/archlinux/pam.d/  //進入快照卷內
[root@redhat7 pam.d]# tail -1 atd  //查看快照卷中的atd文件的最后一行,數據并沒有發生變化
session    include     password-auth

//至此,說明快照卷使用成功

原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/42722

(0)
sixijiesixijie
上一篇 2016-09-02 08:47
下一篇 2016-09-02 08:48

相關推薦

  • 網絡配置——CentOS7

    CentOS 7 網絡屬性配置 使用傳統命名方式: (1) 編輯/etc/default/grub 配置文件 GRUB_CMDLINE_LINUX ="rhgb quiet net.ifnames=0" 或:修改/boot/grub2/grub.cfg (2) 為grub2 生成其配置文件 grub2-mkconfig -o /etc/g…

    Linux干貨 2016-09-11
  • iptables/netfilter入門

      iptables是Linux中的重要組件,它是對報文進行過濾,在2001年的1月Linux 2.4內核發布以來,就已經是Linux的一部分了。     現在的iptbales已經成為了功能很大的防火墻,具備了專有的商業防火墻的大多數的功能了。 1、防火墻簡介 2、iptables/netfilter簡介 …

    Linux干貨 2017-01-31
  • 用戶管理命令之NBA版

    用戶管理命令之NBA版 本文純屬扯淡,如有不嚴謹之處,還請海涵。 1 groupadd 作用:創建一個屬組 格式:groupadd [選項] 屬組名 選項: -:選項為空 創建新屬組 -g:指定組GID,默認是GID+1 實例 1.1 添加屬組team,指定組ID為1111      groupadd -g …

    Linux干貨 2017-03-27
  • python快速入門之數據類型

        Python 是 90 年代初由 Guido Van Rossum 為了打發圣誕節而創建的語言。如今它已是當前最流行的程序語言之一.     Python的關鍵要素有以下幾點:1.基本數據類型;2.對象引用;3.組合數據類型;4.邏輯操作符;5.控制流語句;6.算數操作符…

    Python干貨 2015-12-10
  • 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; 2、寫一個腳本     (1) 獲取當前主機的主機名,保存于hostname變量中;     (2) 判斷此變量的值是否為loc…

    2017-04-20
  • 使用httpd反向代理模塊實現tomcat負載均衡集群(下)

    上一篇講解了http使用mod_http和mod_ajp代理模塊實現tomcat負載均衡,下面我們來講解使用http的mod_jk實現taomcat的負載均衡集群: 注意:http的mod_jk是第三方擴展模塊,在新http版本中以不支持,在httpd 1.3和2.0效果較好 6、使用mod_jk實現tomcat負載均衡集群 6.1安裝mod_jk [roo…

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