使用邏輯卷管理器管理靈活存儲

七.使用邏輯卷管理器管理靈活存儲
硬盤或者分區-->pv-->vg-->lvm


1.LVM 定義
• 物理分區或磁盤是 LVM 的第一構建塊。這些可以是分區、完整磁盤、 RAID 集或 SAN 磁盤
• 物理卷是 LVM 所使用的基礎 “ 物理 ” 存儲。這通常是塊設備 ,例如分區或完整磁盤。設備必須初始化爲 LVM 物理卷 , 才能與 LVM 結合使用
• 卷組是存儲池 , 由一個或多個物理卷組成
• 物理區塊是物理卷中存儲的小型數據區塊 , 用作 LVM 存儲的後端
• 邏輯區塊映射到物理區塊 , 構成 LVM 存儲的前端。默認情況下 , 每個邏輯區塊映射到一個物理區塊。啓用某些選項將更改此映射。例如 , 鏡像會導致每個邏輯區塊映射到兩個物理區塊
• 邏輯卷是邏輯區塊組。邏輯卷可以像硬盤驅動器分區一樣使用


2.使用邏輯卷的意義
• 邏輯卷和邏輯卷管理有助於更加輕鬆地管理磁盤空間。如果文件系統需要更多的空間 ,可以將其卷組的可用空間分配給邏輯卷 , 並且可以調整文件系統的大小。如果磁盤開始出現錯誤 , 可以通過卷組將替換磁盤註冊爲物理卷 , 並且邏輯卷的範圍可遷移到新磁盤


3.使用命令行工具實施 LVM 存儲
• 準備物理卷
– disk 用於創建與 LVM 結合使用的新分區。在要與 LVM 結合使用的分區上 , 始終將“ 類型 ” 設置爲 “ 0x8e Linux LVM”
– pvcreate /dev/vdaN 用於初始化分區 ( 或其他物理設備 ), 使其作爲物理卷與 LVM 結合使用。直接在物理卷中創建用於存儲 LVM 配置數據的表頭
• 創建卷組
– vgcreate vgname /dev/vdaN 將創建名爲 vgname 且由物理卷 /dev/vdaN 組成的卷組。您可以在創建時指定其他物理卷 ( 以空格隔開 ), 也可以隨後使用 vgextend 添加新物理卷
• 創建和使用新邏輯卷
– lvcreate -n lvname -L 2G vgname 從 vgname 上可用物理區塊創建名爲 lvname 、容量爲 2GB 的新邏輯卷
– mkfs -t ext4 /dev/vgname/lvname 將在新邏輯捲上創建 ext4 文件系統
– mkdir /data 建立所需目錄作爲掛載點
– 向 /etc/fstab 文件中添加一下條目:
/dev/mapper/vgname-lvname /data ext4 defaults 1 2
– 運行 mount -a 可在 /etc/fstab 中掛載所有文件系統 , 包括您剛剛添加的條目


4.查看 LVM 狀態信息
• pvdisplay /dev/vdaN 將顯示有關特定物理卷的信息
• vgdisplay vgname 將顯示有關特定卷組的信息
• lvdisplay /dev/vgname/lvname 將顯示有關特定邏輯卷的信息


5.擴展邏輯卷和 xfs 文件系統
• 驗證已掛載文件系統 /data 的當前大小
– df -h /data
• 驗證 “ 可用物理區塊 ” 是否夠用
– vgdisplay vgname
• 使用部分或全部可用區塊擴展邏輯卷
– lvextend -l 128 /dev/vgname/lvname
• 擴展在 /data 上掛載的關聯文件系統
– xfs_growfs
/dev/vgname/lvname
• 驗證已掛載文件系統 /data 的新的大小
– df -h /data


6.創建快照以便於數據備份
• 快照邏輯卷是 LVM 存儲的另一項靈活功能。LVM 快照是臨時保留所更改的邏輯卷的原始數據的邏輯卷。快照提供原始卷的靜態視圖 , 從而能夠以一致狀態備份其數據
• 快照卷大小隻需足以存儲在它存在期間更改的數據即可
• 如果數據更改量大於快照存儲容量 , 則快照將自動變爲不可用。 ( 原始卷原封不動 , 仍然需要從卷組中手動解除掛載和刪除不可用的快照。 )


7.創建和使用快照進行備份
• 創建 /dev/vgname/lvname 的名爲 snaplvname 、大小爲 20M 的新快照卷
– lvcreate -s -n snaplv -L 20M /dev/vgname/lvname
• 如果備份軟件要求 , 請掛載該快照 , 並使備份程序指向新掛載點
– mkdir /snapmount
– mount -o ro /dev/vgname/snaplv /snapmount
• 驗證快照邏輯卷的狀態
– lvs /dev/vgname/snaplv
• 不再使用快照時 , 請解除掛載並刪除它
– umount /snapmount
– lvremove /dev/vgname/snaplv


1.LVM的建立
命令:
   73  mkdir /weixindata
   74  fdisk /dev/vdb
   75  fdisk -l
   76  partprobe 
   77  pvcreate /dev/vdb1
   78  fdisk -l
   80  df ##注意:一定要把上次實驗做的停掉
   83  mdadm -D /dev/md0
   84  mdadm -S /dev/md0
   85  mdadm -D /dev/md0
   86  pvcreate /dev/vdb1
   87  vgcreate vg0 /dev/vdb1
   88  lvcreate -L 300M -n lv0 vg0
   89  mkfs.xfs /dev/vg0/lv0
   90  mount /dev/vg0/lv0 /weixindata/


監控命令:
[root@localhost ~]# watch -n 1 'echo =======pvmessage========; pvs;echo ==========vgmessages==============;vgs;echo ========lvmmessages===========;lvs;echo ==================;df -h /weixindata'


-------------------------------------------------------------------------------------
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     2099199     1048576   8e  Linux LVM
/dev/vdb2         2099200     4196351     1048576   8e  Linux LVM
/dev/vdb3         4196352     6293503     1048576   8e  Linux LVM


Disk /dev/md0: 523 MB, 523960320 bytes, 1023360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


[root@localhost ~]# pvcreate /dev/vdb1
  Physical volume /dev/vdb1 not found
  Can't open /dev/vdb1 exclusively.  Mounted filesystem?
[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10473900 3809408   6664492  37% /
devtmpfs          927072       0    927072   0% /dev
tmpfs             942660     140    942520   1% /dev/shm
tmpfs             942660   17076    925584   2% /run
tmpfs             942660       0    942660   0% /sys/fs/cgroup
[root@localhost ~]# mdadm -I 
mdadm: --incremental requires a device.
[root@localhost ~]# mdadm -D
mdadm: No devices given.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Apr 22 02:44:00 2017
     Raid Level : raid1
     Array Size : 511680 (499.77 MiB 523.96 MB)
  Used Dev Size : 511680 (499.77 MiB 523.96 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent


    Update Time : Sat Apr 22 03:38:38 2017
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1


           Name : localhost:0  (local to host localhost)
           UUID : af9e3fe4:dfed6efc:02461f8e:af60c0c1
         Events : 39


    Number   Major   Minor   RaidDevice State
       0     253       17        0      active sync   /dev/vdb1
       2     253       19        1      active sync   /dev/vdb3


       3     253       18        -      spare   /dev/vdb2
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory
[root@localhost ~]# pvcreate /dev/vdb1
  Physical volume /dev/vdb1 not found
WARNING: linux_raid_member signature detected on /dev/vdb1 at offset 4096. Wipe it? [y/n] y
  Wiping linux_raid_member signature on /dev/vdb1.
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y
  Wiping xfs signature on /dev/vdb1.
  Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1
  Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0
  Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0           isize=256    agcount=4, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=76800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
------------------------------------------------------------------------------------







2.拉伸與縮減
拉伸
    1  lvextend -L 900M /dev/vg0/lv0 ##-L是拉伸到多大
    2  xfs_growfs /dev/vg0/lv0 ##使文件也增大,注意:文件不能格式化,否則內容會丟掉
    3  lvextend -L 1500M /dev/vg0/lv0
    4  pvcreate /dev/vdb2 ##再加一塊硬盤
    5  vgextend vg0 /dev/vdb2
    6  lvextend -L 1500M /dev/vg0/lv0
    7  xfs_growfs /dev/vg0/lv0


-------------------------------------------------------------------------------------
[root@localhost ~]# lvextend -L 900M /dev/vg0/lv0
  Extending logical volume lv0 to 900.00 MiB
  Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=4, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=76800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 76800 to 230400
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
  Extending logical volume lv0 to 1.46 GiB
  Insufficient free space: 150 extents needed, but only 30 available
[root@localhost ~]# pvcreate /dev/vdb2
  Physical volume /dev/vdb2 not found
WARNING: linux_raid_member signature detected on /dev/vdb2 at offset 4096. Wipe it? [y/n] y
  Wiping linux_raid_member signature on /dev/vdb2.
  Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2
  Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
  Extending logical volume lv0 to 1.46 GiB
  Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=12, agsize=19200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=230400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 230400 to 384000




最後監控命令顯示:
=======pvmessage========
  PV         VG   Fmt  Attr PSize    PFree
  /dev/vdb1  vg0  lvm2 a--  1020.00m      0
  /dev/vdb2  vg0  lvm2 a--  1020.00m 540.00m
==========vgmessages==============
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    2   1   0 wz--n- 1.99g 540.00m
========lvmmessages===========
  LV   VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-ao---- 1.46g
==================
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv0  1.5G   16M  1.5G   2% /weixindata
-------------------------------------------------------------------------------------




縮減:不能用xfs格式的文件,所以先取消掛載,把文件換一種格式


    1  umount /weixindata/
    2  mkfs.ext4 /dev/vg0/lv0
    3  mount /dev/vg0/lv0 /weixindata/
    4  df
 
    1  umount /weixindata/ ##先把文件取消掛載
    2  e2fsck -f /dev/vg0/lv0   ##做這一步是爲了下一步如果縮的過小有提示
    3  resize2fs /dev/vg0/lv0 20M ##過小,會有提示的
    4  resize2fs /dev/vg0/lv0 300M
    5  resize2fs /dev/vg0/lv0 10M ##也過小
    6  mount /dev/vg0/lv0 /weixindata/ ##顯示的文件大小是300M
    7  lvreduce -L 300 /dev/vg0/lv0
    8  pvmove /dev/vdb1 /dev/vdb2
    9  vgreduce vg0 /dev/vdb1
   10  pvremove /dev/vdb1
------------------------------------------------------------------------------
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
96000 inodes, 384000 blocks
19200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=394264576
12 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912


Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 


[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
[root@localhost ~]# df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3809384   6664516  37% /
devtmpfs               927072       0    927072   0% /dev
tmpfs                  942660     140    942520   1% /dev/shm
tmpfs                  942660   17072    925588   2% /run
tmpfs                  942660       0    942660   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0   1479088    4512   1381392   1% /weixindata
---------------------------------------------------------------------------------


########然後正式進行########## 
    1  umount /weixindata/ ##先把文件取消掛載
    2  e2fsck -f /dev/vg0/lv0   ##做這一步是爲了下一步如果縮的過小有提示
    3  resize2fs /dev/vg0/lv0 20M ##過小,會有提示的
    4  resize2fs /dev/vg0/lv0 300M
    5  resize2fs /dev/vg0/lv0 10M ##也過小
    6  mount /dev/vg0/lv0 /weixindata/ ##顯示的文件大小是300M
    7  lvreduce -L 300 /dev/vg0/lv0
    8  pvmove /dev/vdb1 /dev/vdb2
    9  vgreduce vg0 /dev/vdb1
   10  pvremove /dev/vdb1
----------------------------------------------------------------------------------
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# e2fsck -f /dev/vg0/lv0
e2fsck 1.42.9 (28-Dec-2013)
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/lv0: 11/96000 files (9.1% non-contiguous), 15356/384000 blocks
[root@localhost ~]# resize2fs /dev/vg0/lv0 20M
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: New size smaller than minimum (17124)


[root@localhost ~]# resize2fs /dev/vg0/lv0 300M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 76800 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 76800 blocks long.


[root@localhost ~]# resize2fs /dev/vg0/lv0 10M
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: New size smaller than minimum (16509)


[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
[root@localhost ~]# lvreduce -L 300 /dev/vg0/lv0
  WARNING: Reducing active and open logical volume to 300.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
  Reducing logical volume lv0 to 300.00 MiB
  Logical volume lv0 successfully resized
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2
  /dev/vdb1: Moved: 20.0%
  /dev/vdb1: Moved: 100.0%
[root@localhost ~]# vgreduce vg0 /dev/vdb1
  Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1
  Labels on physical volume "/dev/vdb1" successfully wiped
----------------------------------------------------------------------------------



########鏡像######
   12  touch /weixindata/file{1..5} ##實際上是建在了/dev/vg0/lv0裏面了,通過/weixindata 來查看
   13  ls /weixindata/
   14  umount /weixindata/
   15  cd /weixindata/
   16  ls
   17  cd
   18  lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##鏡像給50M
   19  mount /dev/vg0/lv0backup /weixindata/ ##查看關於監控命令鏡像的大小,應該不是50M了,和源一致
   20  cd /weixindata/
   21  ls
   22  rm -fr /weixindata/*
   23  ls
   24  cd
   25  umount /weixindata/
   26  lvremove /dev/vg0/lv0backup 
   27  lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
   28  mount /dev/vg0/lv0backup /weixindata/
   29  cd /weixindata/
   30  ls


-------------------------------------------------------------------------------
[root@localhost ~]# touch /weixindata/file{1..5}
[root@localhost ~]# ls /weixindata/
file1  file2  file3  file4  file5  lost+found
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
file1  file2  file3  file4  file5  lost+found
[root@localhost weixindata]# rm -fr /weixindata/*
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# lvremove /dev/vg0/lv0backup 
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
file1  file2  file3  file4  file5  lost+found
---------------------------------------------------------------------------------




設備都不用了,全都卸載
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# lvremove /dev/vg0/lv0backup
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvremove /dev/vg0/lv0
Do you really want to remove active logical volume lv0? [y/n]: y
  Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0
  Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb2
  Labels on physical volume "/dev/vdb2" successfully wiped









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章