一.存储管理Ⅱ
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 </dev/zero >/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 参数可以创建软链接。