KVM存储管理-学习日记

KVM存储管理-学习日记

KVM存储池就是一个大的容器,里面主要是虚拟机的镜像文件,以及其他的磁盘相关文件。
当磁盘空间不够时,需要对KVM虚拟机磁盘进行添加和管理,添加存储池的两种方法:一是本地的分区来作为存储池,二是NFS服务器提供的共享来作为存储池。
一、使用分区来创建存储池
在虚拟机中创建一个新的硬盘,在设置过程中硬盘类型选择SCSI。在启动后的虚拟机中创建硬盘,无法直接使用新添加的硬盘,需要重新启动虚拟机,硬盘才能生效。
在这里插入图片描述
如果不想重启虚拟机,可以使用这个方法:执行“ls /sys/class/scsi_host“,重新扫描SCSI总线来添加设备。

[root@kvm ~]# ls /sys/class/scsi_host/
host0  host1  host2
[root@kvm ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@kvm ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@kvm ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

使用fdisk -l查看全部的分区,虚拟机所挂硬盘个数及分区情况。可以看到新添加的硬盘信息。此时/dev/sdb只能显示分区大小,目前无法使用。详细信息如下:

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 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

此硬盘大小为2147MB,2147483648字节, 4194304个扇区。每个扇区大小为512字节。
blocks=(end-start)*sector size /1024
在这里插入图片描述

使用fdisk对/dev/sdb磁盘进行分区。

[root@kvm ~]# fdisk /dev/sdb
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help): n   --新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)  --主分区,目前4个可用
   e   extended --扩展分区
Select (default p):  --默认主分区
Using default response p
Partition number (1-4, default 1):   
First sector (2048-4194303, default 2048):  --默认分区开始的扇区 
Using default value 2048
Last sector, +sectors or +size{
    
    K,M,G} (2048-4194303, default 4194303):   --默认分区结束的扇区
Using default value 4194303  默认分区大小为4194303*512 bytes
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): w  --保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

对创建好的分区进行格式化,即设置分区的文件系统格式。

[root@kvm ~]# lsblk -f  ---查看当前的文件系统格式有哪些
NAME         FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                             
|-sda1       xfs                         6ec6fb2f-7fab-4c82-8e81-25d8dad17e74   /boot
`-sda2       LVM2_member                 OT8gtx-BwYm-bbG8-5g7K-qG5Y-zsUp-JZi7Di 
  |-centos-root
             xfs                         d016cbb9-e1bd-474f-be91-2f7e658afa1e   /
  `-centos-swap
             swap                        e4ff30b7-9041-496c-9128-91d322163bd9   [SWAP]
sdb                                                                             
`-sdb1                                                                          
sr0          iso9660     CentOS 7 x86_64 2015-12-09-23-14-10-00                 /mnt/cdrom
loop0        iso9660     CentOS 7 x86_64 2015-12-09-23-14-10-00                 /var/ftp/dvd
[root@kvm ~]# mkfs.xfs /dev/sdb1   ---将分区格式化为xfs类型
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=131008 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=524032, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

分区格式化后,将分区添加到存储池中。打开virt-manager,在vm01是关机状态下,进入连接详情页面。
在这里插入图片描述
在storage选项卡中,默认有个default存储池,点击+号添加新的存储池,输入name值,类型选择fs(预格式化快设备),libvirt会自动挂载分区,(默认情况下存储池的类型为dir,是基于目录的存储设计,/var/lib/libvirt/images目录就是默认的存储池)。针对不同类型创建存储池,可以参考这个https://cloud.tencent.com/developer/news/258143
在这里插入图片描述
在这里插入图片描述
添加成功。
在这里插入图片描述
在宿主机上查看文件系统磁盘使用情况统计,df -h。

[root@kvm ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  5.4G   13G  31% /
devtmpfs                 903M     0  903M   0% /dev
tmpfs                    913M     0  913M   0% /dev/shm
tmpfs                    913M  8.9M  904M   1% /run
tmpfs                    913M     0  913M   0% /sys/fs/cgroup
/dev/sr0                 4.1G  4.1G     0 100% /mnt/cdrom
/dev/loop0               4.1G  4.1G     0 100% /var/ftp/dvd
/dev/sda1                497M  130M  368M  27% /boot
tmpfs                    183M  8.0K  183M   1% /run/user/0
/dev/sdb1                2.0G   33M  2.0G   2% /var/lib/libvirt/images/storage_pool
最后一条记录可以看到/dev/sdb1已经挂载到/var/lib/libvirt/images/storage_pool目录。

在宿主机上查看存储池的配置文件。

[root@kvm ~]# cat /etc/libvirt/storage/autostart/   
default.xml       storage_pool.xml  
[root@kvm ~]# cat /etc/libvirt/storage/autostart/storage_pool.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit storage_pool
or other application using the libvirt API.
-->

<pool type='fs'>
  <name>storage_pool</name>
  <uuid>1ed32488-55ea-4d68-ab60-09a392802c86</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
    <device path='/dev/sdb1'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/storage_pool</path>
  </target>
</pool>

在存储池中,创建新的卷。
在这里插入图片描述
查看存储池中的卷,显示卷的具体信息。
在这里插入图片描述
在宿主机中通过命令查看存储池的卷。

[root@kvm ~]# ll -h /var/lib/libvirt/images/storage_pool/
total 952K
-rw-------. 1 root root 103M Feb  4 03:45 centos7-01.qcow2
-rw-------. 1 root root 206M Feb  4 03:41 centos7.qcow2

在宿主机中通过命令查看卷的具体信息。

[root@kvm ~]# qemu-img info /var/lib/libvirt/images/storage_pool/centos7-01.qcow2 
image: /var/lib/libvirt/images/storage_pool/centos7-01.qcow2
file format: qcow2
virtual size: 102M (107374592 bytes)
disk size: 488K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true

在宿主机中通过命令查看存储池。

[root@kvm ~]# virsh pool-list 
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 storage_pool         active     yes  

在宿主机中查看存储池的具体信息。

扫描二维码关注公众号,回复: 14713814 查看本文章
[root@kvm ~]# virsh pool-info storage_pool 
Name:           storage_pool
UUID:           1ed32488-55ea-4d68-ab60-09a392802c86
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       1.99 GiB
Allocation:     33.12 MiB
Available:      1.96 GiB

二、使用NFS分区来创建存储池
在宿主机上搭建一台NFS服务器,创建一个共享的文件系统,然后共享给KVM虚拟机,作为KVM虚拟机的存储池。
部署 NFS共享步骤如下:
确保宿主机的防火墙、selinux是关闭状态。
在这里插入图片描述
安装NFS服务器端软件。

[root@kvm ~]# yum -y install nfs  ---tab键补齐
nfs-utils.x86_64       nfsometer.noarch       
nfs4-acl-tools.x86_64  nfstest.noarch         
[root@kvm ~]# yum -y install nfs-utils.x86_64 
Loaded plugins: fastestmirror, langpacks
Centos-Local                                                         | 3.6 kB  00:00:00     
base                                                                 | 3.6 kB  00:00:00     
extras                                                               | 2.9 kB  00:00:00     
updates                                                              | 2.9 kB  00:00:00     
updates/7/x86_64/primary_db                                          | 5.6 MB  00:00:02    
.........

创建共享目录/kvm/nfs/images,并修改其目录权限,让其他用户具有读写权限。

[root@kvm ~]# mkdir -p /kvm/nfs/images
[root@kvm ~]# ll -d /kvm/nfs/images/
drwxr-xr-x. 2 root root 6 Feb  6 03:33 /kvm/nfs/images/
[root@kvm ~]# chmod 757 /kvm/nfs/images/
[root@kvm ~]# ll -d /kvm/nfs/images/
drwxr-xrwx. 2 root root 6 Feb  6 03:33 /kvm/nfs/images/

配置NFS服务器,设置刚才创建的目录/kvm/nfs/images共享给KVM虚拟机网段的用户可以读写的操作。
查看kvm虚拟机网段。介绍两个方法查看虚拟机ip地址,但前提都是在kvm虚拟机开启的条件下才可以查看。
1、直接打开KVM虚拟机查看ip地址
在这里插入图片描述2、在宿主机中查看虚拟机ip地址。首先查看虚拟主机配置文件找到虚拟机的mac地址信息,然后通过arp -a判定虚拟机器IP地址。
在这里插入图片描述
得知虚拟机网段信息后,配置NFS服务器,找到nfs配置文件/etc/exports,将目录/kvm/nfs/images共享给KVM虚拟机网段的用户可以读写的操作。

[root@kvm ~]# vi /etc/exports
[root@kvm ~]# cat /etc/exports
/kvm/nfs/images	192.168.100.0/24(rw,no_root_squash)
/kvm/nfs/images 192.168.217.0/24(rw,no_root_squash)

启动nfs服务,

[root@kvm ~]# systemctl restart nfs-server.service 
[root@kvm ~]# systemctl restart rpcbind.service 

找个其他主机查看NFS服务器的共享情况,看看是否可以看到共享文件夹。
在这里插入图片描述
准备工作完成后,将NFS服务器提供的共享添加到KVM虚拟机存储池中。添加存储池时,KVM虚拟机要处于关机状态。
在这里插入图片描述
在这里插入图片描述
完成后可以在宿主机上查看KVM虚拟机的存储池信息。

[root@kvm ~]# virsh pool-list 
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 kvm_nfs_storage      active     yes       
 storage_pool         active     yes   
[root@kvm ~]# vi /kvm/nfs/images/1.txt
[root@kvm ~]# ll -h /var/lib/libvirt/images/kvm_nfs_storage/
total 4.0K
-rw-r--r--. 1 root root 51 Feb  6 04:56 1.txt

在存储池中添加存储卷。
在这里插入图片描述
在这里插入图片描述

[root@kvm ~]# qemu-img info /var/lib/libvirt/images/kvm_nfs_storage/nfs_share.qcow2    ---查看存储池中卷的详细信息
image: /var/lib/libvirt/images/kvm_nfs_storage/nfs_share.qcow2
file format: qcow2
virtual size: 102M (107374592 bytes)
disk size: 488K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
[root@kvm ~]# virsh pool-info kvm_nfs_storage  ---查看存储池的详细信息
Name:           kvm_nfs_storage
UUID:           a371060a-e8fe-49ae-abbc-6d67954dc0d5
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       17.46 GiB
Allocation:     5.45 GiB
Available:      12.01 GiB
[root@kvm ~]# virsh vol-list kvm_nfs_storage    ---查查看存储池中的卷信息
 Name                 Path                                    
------------------------------------------------------------------------------
 1.txt                /var/lib/libvirt/images/kvm_nfs_storage/1.txt
 nfs_share.qcow2      /var/lib/libvirt/images/kvm_nfs_storage/nfs_share.qcow2

猜你喜欢

转载自blog.csdn.net/qq_26350199/article/details/113631153
今日推荐