存储管理Ⅱ-swap、逻辑卷

一.存储管理Ⅱ

1.逻辑卷LVM

1.1.LVM管理

在线扩容 online

创建LVM VG的扩容 LVM的扩容 文件系统扩容

基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)

逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)

PE: Physical extent 物理扩展单元 4M 8M 16M 32M 64M 创建VG时指定 -s 8M

LE: Logical extent 逻辑扩展单元

1.2.创建LVM

虚拟机先将以前添加的磁盘摘除,然后添加两块新磁盘

准备物理磁盘 可以是: /dev/sdb /dev/sdc

[root@rabbitmq-1 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   27G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    1G  0 disk 
sr0              11:0    1 1024M  0 rom  

[root@localhost ~]# ll /dev/sd{a,b,c}
brw-rw----. 1 root disk 8,  0 Jan  2 00:18 /dev/sda
brw-rw----. 1 root disk 8, 16 Jan  2 00:18 /dev/sdb
brw-rw----. 1 root disk 8, 32 Jan  2 00:18 /dev/sdc
1.3.创建.pv
[root@server0 ~]# pvcreate /dev/sdb     //制作pv
  Physical volume "/dev/sdb1" successfully created.

[root@server0 ~]# pvscan                //查看pv
  PV /dev/sda2   VG centos          lvm2 [<29.00 GiB / 4.00 MiB free]
  PV /dev/sdb                       lvm2 [1.00 GiB]
  Total: 2 [<30.00 GiB] / in use: 1 [<29.00 GiB] / in no VG: 1 [1.00 GiB]


[root@server0 ~]# pvs               //查看pv  
PV         VG     Fmt  Attr PSize   PFree
/dev/sda2  centos lvm2 a--  <29.00g 4.00m
/dev/sdb          lvm2 ---    1.00g 1.00g
1.4.创建vg
[root@server0 ~]# vgcreate vg1 /dev/sdb  //创建的PV名
 Volume group "vg1" successfully created

[root@server0 ~]# vgs  
 VG   #PV #LV #SN Attr   VSize VFree
 vg1    1   0   0 wz--n- 2.00g 2.00g

[root@server0 ~]# vgscan    
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vg1" using metadata type lvm2

[root@server0 ~]# vgdisplay 
   --- Volume group ---   
VG Name               vg1  
System ID                
Format                lvm2  
Metadata Areas        1 
Metadata Sequence No  1 
VG Access             read/write   
VG Status             resizable  
MAX LV                0   Cur LV                0 
Open LV               0   
Max PV                0
Cur PV                1  
Act PV                1  
VG Size               2.00 GiB 
PE Size               4.00 MiB  
Total PE              511  
Alloc PE / Size       0 / 0     
Free  PE / Size       511 / 2.00 GiB
VG UUID               7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
1.5.lv
[root@server0 ~]# lvcreate -l 10 -n lv1 vg1         // -l 指定多少块,单位为PE Size
[root@server0 ~]# lvcreate -L 200M -n lv2 vg1       // -L 指定大小创建
[root@server0 ~]# lvscan 
  ACTIVE            '/dev/vg1/lv1' [40.00 MiB] inherit
  ACTIVE            '/dev/vg1/lv2' [200.00 MiB] inherit
  ACTIVE            '/dev/centos/root' [26.99 GiB] inherit
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit

[root@server0 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao----  26.99g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-a-----  40.00m                                                    
  lv2  vg1    -wi-a----- 200.00m   

创建文件系统并挂载

[root@server0 ~]# mkfs.xfs /dev/vg1/lv1
[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2
[root@server0 ~]# mkdir /mnt/lv1 /mnt/lv2

[root@server0 ~]# vim /etc/fstab            //配置开机挂载,将以下内容添加到文件最下面
/dev/vg1/lv1    /mnt/lv1        xfs     defaults 0 0
/dev/vg1/lv2    /mnt/lv2        ext4    defaults 0 0

[root@server0 ~]# mount -a                  //自动读取/etc/fstab文件的挂载信息,进行挂载
[root@server0 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  2.6G   25G  10% /
devtmpfs                 478M     0  478M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                    489M  6.9M  482M   2% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/vg1-lv1       37M  2.2M   35M   6% /mnt/lv1
/dev/mapper/vg1-lv2      190M  1.6M  175M   1% /mnt/lv2

2.VG管理

2.1.扩大VG vgextend
1.创建pv
[root@server0 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.


2.直接vgextend扩容
[root@server0 ~]# vgextend vg1 /dev/sdc         //vg1卷组名字,将/dev/vde扩展到vg1中
 Volume group "vg1" successfully extended

[root@server0 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <29.00g  4.00m
  vg1      2   2   0 wz--n-   1.99g <1.76g

2.2.减小VG

通常先做数据的迁移

1.查看当前的VG中PV的使用情况

[root@server0 ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <29.00g    4.00m
  /dev/sdb   vg1    lvm2 a--  1020.00m  780.00m
  /dev/sdc   vg1    lvm2 a--  1020.00m 1020.00m
  
[root@server0 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <29.00g  4.00m
  vg1      2   2   0 wz--n-   1.99g <1.76g

[root@server0 ~]# vgreduce vg1 /dev/sdc
  Removed "/dev/sdc" from volume group "vg1"
  
[root@server0 ~]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree  
  centos   1   2   0 wz--n-  <29.00g   4.00m
  vg1      1   2   0 wz--n- 1020.00m 780.00m

[root@server0 ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree  
  /dev/sda2  centos lvm2 a--   <29.00g   4.00m
  /dev/sdb   vg1    lvm2 a--  1020.00m 780.00m
  /dev/sdc          lvm2 ---     1.00g   1.00g

2.3.pvmove数据到其它PV
首先要保证有备用pv(要属于一个vg)
可以先在/dev/vdd创建出一个逻辑卷之后,进行测试
[root@server0 ~]# pvmove /dev/vdd
  /dev/vdd: Moved: 16.7%
  /dev/vdd: Moved: 100.0%

[root@server0 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/vdd   vg1  lvm2 a--  2.00g 2.00g
  /dev/vde   vg1  lvm2 a--  2.00g 1.76g
vgreduce VG

[root@server0 ~]#  vgreduce vg1 /dev/vdd
  Removed "/dev/vdd" from volume group "vg1"

[root@server0 ~]# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  vg1    1   2   0 wz--n- 2.00g 1.76g3
2.4.LV扩容

lv扩容

如果lv所在vg有空间,直接扩展即可
[root@server0 ~]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree  
  centos   1   2   0 wz--n-  <29.00g   4.00m
  vg1      1   2   0 wz--n- 1020.00m 780.00m

[root@server0 ~]# lvextend -L 200M /dev/vg1/lv1     //扩展到200M
  
[root@server0 ~]# lvs   
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao----  26.99g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-ao---- 200.00m                                                    
  lv2  vg1    -wi-ao---- 200.00m                                                    
[root@server0 ~]# lvextend -L +200M /dev/vg1/lv2    //在原有基础上加200M

[root@server0 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao----  26.99g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-ao---- 200.00m                                                    
  lv2  vg1    -wi-ao---- 400.00m  
  
[root@server0 ~]# lvextend -l +5 /dev/vg1/lv1       //在原有基础上加5个PE

[root@server0 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao----  26.99g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-ao---- 220.00m                                                    
  lv2  vg1    -wi-ao---- 400.00m                        



FS(file system)文件系统扩容

[root@server0 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  2.6G   25G  10% /
devtmpfs                 478M     0  478M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                    489M  6.9M  482M   2% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/vg1-lv1       37M  2.2M   35M   6% /mnt/lv1
/dev/mapper/vg1-lv2      190M  1.6M  175M   1% /mnt/lv2
文件系统不扩容,空间是不会自动扩展的

 A. xfs(如果是xfs文件系统类型)
[root@server0 ~]# xfs_growfs /dev/vg1/lv1 

[root@server0 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  2.6G   25G  10% /
devtmpfs                 478M     0  478M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                    489M  6.9M  482M   2% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/vg1-lv1      217M  2.4M  215M   2% /mnt/lv1
/dev/mapper/vg1-lv2      190M  1.6M  175M   1% /mnt/lv2
文件系统xfs扩容成功

 
 B. ext2/3/4(如果是ext文件系统类型)
 [root@server0 ~]# resize2fs /dev/vg1/lv2

[root@server0 ~]# resize2fs /dev/vg1/lv2 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv2 is mounted on /mnt/lv2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/vg1/lv2 is now 409600 blocks long.

[root@server0 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  2.6G   25G  10% /
devtmpfs                 478M     0  478M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                    489M  6.9M  482M   2% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/vg1-lv1      217M  2.4M  215M   2% /mnt/lv1
/dev/mapper/vg1-lv2      384M  2.3M  360M   1% /mnt/lv2
文件系统ext4扩容成功

二.交换分区

交换分区管理 Swap

作用: ‘提升‘ 内存的容量,防止内存溢出OOM(Out Of Memory),造成过度消耗系统资源

一、查看当前的交换分区

[root@server0 ~]# free -m           //查看系统交换分区信息      
total        used        free      shared  buff/cache  available     Mem:            489  140         145           4         202         304 
Swap:             0           0             0  

[root@server0 ~]# swapon -s         //查看系统交换分区信息 

二、增加交换分区 可以是基本分区,LVM,File

===分区===

准备分区

[root@server0 ~]# fdisk /dev/vdb   

[root@server0 ~]# partprobe /dev/vdb 

[root@server0 ~]# ll /dev/vdb*

 brw-rw----. 1 root disk 253, 16 12月  6 10:18 /dev/vdb

 brw-rw----. 1 root disk 253, 17 12月  6 10:18 /dev/vdb1

初始化

[root@server0 ~]# mkswap /dev/vdb1      //制作交换分区

三.挂载

[root@server0 ~]# blkid /dev/vdb1
/dev/vdb1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap" 

[root@server0 ~]# vim /etc/fstab        //设置开机挂载
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap    swap default 0 0

[root@server0 ~]# swapon -a (读取/etc/fstab)      
[root@server0 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/vdb1                               partition   524284  0   -1

===File===

当没有swap分区时,需要取一个swap文件,作为分区

[root@server0 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      xfs        10G  3.3G  6.8G  33% /

[root@server0 ~]# dd if=/dev/zero of=/swap.img bs=1M count=512
或者
[root@server0 ~]# dd /swap.img bs=1M count=512  //取出一个文件制定大小
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 6.15656 s, 87.2 MB/s
//


[root@server0 ~]# mkswap /swap.img
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=8dcdf14d-3d56-4edc-8c27-95092ec725b1

[root@server0 ~]# vim /etc/fstab
/swap.img                                  swap    swap default 0 0

[root@server0 ~]# swapon -a
swapon: /swap2.img: insecure permissions 0644, 0600 suggested.
[root@server0 ~]# chmod 600 /swap.img 
[root@server0 ~]# swapon -a

[root@server0 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1               partition   2097148 0       -1
/dev/sdb1               partition   524284  0       -2
/swap.img               file        524284  0       -3


作业:交换分区扩容(扩展)

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1984         163        1115           8         704        1641
Swap:          2047           0        2047

[root@localhost ~]# pvcreate /dev/sdc

[root@localhost ~]# vgextend centos /dev/sdc

[root@localhost ~]# lvextend -L +1.9G /dev/mapper/centos-swap /dev/sdc

[root@localhost ~]# xfs_growfs /dev/mapper/centos-swap(可选操作)

[root@localhost ~]# swapoff /dev/mapper/centos-swap

[root@localhost ~]# mkswap /dev/mapper/centos-swap 

[root@localhost ~]# swapon -a

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1984         167        1113           8         704        1638
Swap:          3995           0        3995

三.mount详解

常用挂载选项详解 

挂载设备文件、UUID

挂载选项 -t 文件系统类型 -o 选项1,选项2... 

示例: mount -t ext4 -o rw /dev/sdb1 /mnt/disk1  

-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。

-o options 主要用来描述设备或档案的挂接方式。

文件系统类型:vfat,ext4,xfs,nfs,cifs,iso9660,loop

案例1:exec/noexec

[root@youngfit ~]# mount /dev/vg01/lv01 /mnt/lv01       //挂载默认是有执行权限的

[root@youngfit ~]# mount -o noexec /dev/vg01/lv02 /mnt/lv02

[root@youngfit ~]# cat /mnt/lv01/hello.sh
#!/bin/bash
echo "hello"

[root@youngfit ~]# cat /mnt/lv02/hello.sh
#!/bin/bash
echo "hello"

[root@youngfit ~]# /mnt/lv01/hello.sh
hello

[root@youngfit ~]# /mnt/lv02/hello.sh
-bash: /mnt/lv02/hello.sh: Permission denied


作业:测试写权限

常见的挂载选项

rw                      读写 
ro                      只读 
suid        支持suid 
dev         支持设备文件
nodev       不支持设备文件 
noexec      不允许执行二进制文件
exec        允许执行二进制文件 
auto        mount -a 开机自动挂载 
noauto      mount -a 开机不自动挂载 
usrquota    支持用户级磁盘配额功能
grpquota    支持组级磁盘配额功能
acl         支持facl功能 
remount 在线重新挂载 
pri            指定优先级

四.链接文件

软链接 或 符号链接 硬链接

4.1.符号链接 symbolic link

[root@youngfit ~]# echo 111 > /file1
[root@youngfit ~]# ln -s /file1 /file11     //将文件file11软链接到file1
[root@youngfit ~]# ll /file11 
lrwxrwxrwx 1 root root 6 Dec 20 17:58 /file11 -> /file1

[root@youngfit ~]# ll -i /file1 /file11 
4599081 -rw-r--r-- 1 root root 4 Dec 20 17:57 /file1
    135 lrwxrwxrwx 1 root root 6 Dec 20 17:58 /file11 -> /file1

[root@youngfit ~]# cat /file1 
111
[root@youngfit ~]# cat /home/file11 
111

[root@youngfit ~]# rm -rf /file1 
[root@youngfit ~]# ll /file11 
lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1   //已失效
[root@youngfit ~]# cat /file11
cat: /file11: No such file or directory

4.2.硬链接

[root@youngfit ~]# echo 222 > /file2

[root@youngfit ~]# ln /file2 /file2-h1

[root@youngfit ~]# ln /file2 /mnt/lv1/file2-h2 
ln: failed to create hard link ‘/lv_sdb/file2-h2’ => ‘/file2’: Invalid cross-device link

[root@youngfit ~]# ln /file2 /etc/file2-h3


[root@youngfit ~]# ll -i /file2 /file2-h1 /etc/file2-h3  

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /etc/file2-h3

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /file2

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /file2-h1

[root@youngfi ~]# rm -rf /file2
[root@youngfi ~]# cat /file2-h1 
222

把一些重要文件做多个链接

注:硬链接 1. 不能跨文件系统(分区)

​ 2. 不支持目录做硬链接

 [root@youngfit home]# ln /home/  /mnt 
 ln: “/home/”: 不允许将硬链接指向目录

警告:删除目录软链时;

[root@youngfit ~]# mkdir /home/it1000 

[root@youngfit ~]# touch /home/it1000/file{1..10} 

[root@youngfit ~]# ln -s /home/it1000/ /var/


[root@youngfit ~]# rm -rf /var/it1000             //删除目录软链接

[root@youngfit ~]# rm -rf /var/it1000/            //删除目录下的文件 

软链接和硬链接的区别:

  • 软链接可以跨文件系统,硬链接不可以;
  • 软链接可以对目录进行连接,硬链接不可以;
  • 删除源文件之后,软链接失效,硬链接无影响;
  • 两种链接都可以通过命令 ln 来创建;
  • inode,软连接相同,硬链接不同,用ll -i 查看inode
  • ln 默认创建的是硬链接;
  • 使用 -s 参数可以创建软链接。

你可能感兴趣的:(存储管理Ⅱ-swap、逻辑卷)