2019-01-08 20:36:53 weixin_41557853 阅读数 355
  • Ceph 分布式存储入门实践篇(基础架构之六)

    Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且 随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox 标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph  存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.      Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控

    977 人正在学习 去看看 臧雪园

一、个人觉得快照链接克隆虚拟机是速度最快,占用存储空间最少的可控虚拟机方式:
二、下面是实现快照链接克隆虚拟机的方式:

1、给虚拟机拍摄快照,拍摄快照
拍摄虚拟机快照2、右键-管理-克隆
点击下一步3、选中现有快照,点击下一步选中现有快照,点击下一步4、选中-创建链接克隆-下一步
在这里插入图片描述5、自定义你克隆的虚拟机名字和克隆虚拟的存储路径-完成,就克隆OK了
在这里插入图片描述6、克隆的虚拟机还需要配置IP地址,因为你链接克隆的虚拟机会把原来虚拟机的IP地址也给克隆过来,所以需要为克隆的虚拟机重新指定新的IP地址,具体造作如下:

7、 网络配置和拍摄快照:
VM:编辑>虚拟网络编辑器
vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除UUID和MAC地址
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.191.253 (IP地址,第三个根据自己的配))
NETMASK=255.255.255.0 (子网掩码)
GATEWAY=192.168.191.2 (网关)
DNS1=114.114.114.114
DNS2=8.8.8.8
cd /etc/udev/rules.d/ (进入这个文件)
删除里面的 70-****-net.rules(一定要删除该文件,克隆才会有效)
poweroff(关机,重新启动虚拟机)
后面可以 ping www.baidu.com (来验证网络是否联通)

8、图示:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

9、重启虚拟机
执行命令:
# init 6
查看IP地址
# ifconfig
在这里插入图片描述就会出现修改的IP地址
还可以ping一下百度网
在这里插入图片描述不丢包就代表该IP地址可以用。

2012-10-10 18:09:28 catherinexcd 阅读数 27607
  • Ceph 分布式存储入门实践篇(基础架构之六)

    Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且 随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox 标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph  存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.      Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控

    977 人正在学习 去看看 臧雪园

1.使用LVM2工具对逻辑卷进行快照管理(最先选择的快照方式)

优点:独立快照,对数据的保护性最好,各快照间没有牵制关系

缺点:需要对每个快照分配空间,对系统空间浪费大,老的快照很可能由于超过可容修改内容而出错

*该方法只需要升级LVM2到最新,若需要进行快照还原的话,Linux内核保证2.6.33以上


2.使用device-mapper层进行multisnap快照管理(比较底层的快照方式)

优点:关联快照,节省空间

缺点:各快照间具有关联性,只可以删除最老的快照,管理型差,不能进行快照合并(只可以通过dd等方式还原快照内容)

*该方法需要对linux内核打补丁,并重新编译


3.使用LVM2管理device-mapper层的multisnap快照(对用户友好、对底层告诉节省空间)

*该方法需要对2.6.33以上Linux内核打补丁,重新编译,对LVM2工具打补丁重新编译


==========================================================================================================================

通过介绍第三种快照方式来统一

命令使用:

[root@localhost ~]# lvcreate -s --sharedstore mikulas -L 512M -c 64K /dev/vg02/lv01
Logical volume "lv01-shared" created

命令相当简单,但是你在一台普通的LINUX上是不能成功的

环境:

1.       2.6.33及以上内核的LINUX

2.       对该内核进行multisnap补丁

3.       对LVM2工具进行multisnap补丁

具体操作步骤:

1.下载Linux内核,我实现版本内核为2.6.34  www.kernel.com

2.下载 multisnap补丁(我使用的是r18)http://people.redhat.com/mpatocka/patches/kernel/new-snapshots/

3.下载 lvm2 源码(我使用的是lvm2.02.60)

4.下载 lvm2 补丁(使用的是2.02.60的补丁) http://people.redhat.com/mpatocka/patches/userspace/new-snapshots


一.首先对Linux打补丁

1)将patch文件放在Linux内核的根部录下,以以下方式打补丁
patch -p1 < dm-bufio.patch //将所有的文件dapatch

4)注意将LANG=C,然后开始编译内核
make menuconfig;
make all ;
make modules_install ;
make install ;
reboot

内核编译完成

2. 目前可以测试device-mapper下的multisnap已经可用了,测试如下
//清空目前的逻辑卷
[root@localhost ~]# dd if=/dev/zero of=/dev/mapper/vg1-ms_base bs=4096 count=1
[root@localhost ~]# dd if=/dev/zero of=/dev/mapper/vg1-ms_snapshot bs=4096 count=1
//加载必须的模块、开机记得加载这两个模块
[root@localhost ~]# modprobe dm-store-mikulas
[root@localhost ~]# modprobe dm-multisnapshot
//准备快照卷
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnapshot /dev/mapper/vg01-ms_base /dev/mapper/vg01-ms_snapshot 32 0 mikulas 0|dmsetup create ms
//> multisnapshot <origin> <COW device> <chunksize><generic args> <shared COW store type><snapshot ids>
//所以32应该是chunksize | 0 应该是 通用参数
> Table line arguments:
> - <origin> : origin device
> - <COW device> : shared COW store device
> - <chunksize> : chunk size in 512b sectors
> - <# generic args> : number of generic arguments
> - <generic args> : generic arguments
> sync-snapshots --- synchronize snapshots according to the list
> preserve-on-error --- halt the origin on error in the snapshot store
> - <shared COW store type> : shared COW store type
> mikulas --- provided by the 'dm-store-mikulas' module
> daniel --- provided by the 'dm-store-daniel' module
> - <# shared COW store args> : number of arguments for shared COW store type
> - <shared COW store args> : shared COW store arguments
> cache-threshold size --- a background write is started
> cache-limit size --- a limit for metadata cache size
> If 'sync-snapshots' was specified:
> - <# snapshot ids> : number of snapshot ids
> - <snapshot ids> : snapshot ids in desired sync order
> Once this is done, you should no longer access /dev/sda and
> /dev/sdb and only use /dev/mapper/ms.
[root@localhost ~]#
[root@localhost ~]# dmsetup status /dev/mapper/ms
0 1048576 multisnapshot 5 0 - 1048576 128 128 0
//拍摄快照
[root@localhost ~]# dmsetup message /dev/mapper/ms 0 create
> DM messages:
> *) multisnapshot
> - create : creates next new snapshot id, reports created id through 'status'
> (the snapshot is created once the multisnapshot is suspended)
> - create_subsnap <snapshot id> : create subsnapshot of specified snapshot
> - delete <snapshot id> : delete the specified snapshot
[root@localhost ~]# dmsetup status /dev/mapper/ms
0 1048576 multisnapshot 5 0 0 1048576 128 128 0
> Status output:
> *) multisnapshot <# output args> <errno> <new snapid>
> <total_sectors> <sectors_allocated> <metadata_sectors>
> <# snapshot ids> <snapshot ids>
>
> Status line output arguments:
> - <# shared COW store output args> : number of output arguments before
> snapshot id list
> - <errno> : error number associated with the first error that occurred in
> the store (e.g. -EIO), 0 means the store is active with no errors
> - <new snapid> : snapshot id that will be used for next snapshot, '-' if
> no snapshot is in the process of being created
> - <total_sectors> : total size of the shared store in 512b sectors
> - <sectors_allocated> : number of sectors allocated for data and metadata
> - <metadata_sectors> : number of sectors allocated for metadata
> - <# snapshot ids> : number of snapshot ids
> - <snapshot ids> : snapshot ids for snapshots in the store
[root@localhost ms]# ll /mnt/ms0
total 16
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155416
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155425
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160124
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160125
drwx------ 2 root root 12288 Aug 24 15:49 lost+found
[root@localhost ms]# dmsetup message /dev/mapper/ms 1 create
[root@localhost ms]# dmsetup status /dev/mapper/ms
0 1048576 multisnapshot 5 0 1 1048576 416 192 1 0
//停用ms再启用ms后,才能查看快照
[root@localhost ms]# dmsetup suspend /dev/mapper/ms
[root@localhost ms]# dmsetup resume /dev/mapper/ms
//attach the snapshot(将快照附加回来,可以查看)
[root@localhost ms]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 1 |dmsetup create ms1
> *) multisnap-snap <origin> <snapshot id>
>
> Table line arguments:
> - <origin> : origin device
> - <snapshot id> : id of the snapshot within the shared store
> *) Delete the snapshot:
> dmsetup message /dev/mapper/ms 0 delete <snapID>
> *) Unload it:
> dmsetup remove ms
> dmsetup remove ms0
//查看快照效果
[root@localhost ms]# mkdir /mnt/ms1
[root@localhost ms]# mount /dev/mapper/ms1 /mnt/ms1
[root@localhost ms]# ll /mnt/ms1
total 18
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155416
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155425
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160124
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160125
-rw-r--r-- 1 root root 11 Aug 24 16:15 20120824161553
-rw-r--r-- 1 root root 11 Aug 24 16:15 20120824161554
drwx------ 2 root root 12288 Aug 24 15:49 lost+found
[root@localhost ms]# ll /mnt/ms0
total 16
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155416
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155425
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160124
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160125
drwx------ 2 root root 12288 Aug 24 15:49 lost+found
[root@localhost ms]# ll /mnt/ms
total 18
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155416
-rw-r--r-- 1 root root 11 Aug 24 15:54 20120824155425
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160124
-rw-r--r-- 1 root root 11 Aug 24 16:01 20120824160125
-rw-r--r-- 1 root root 11 Aug 24 16:15 20120824161553
-rw-r--r-- 1 root root 11 Aug 24 16:15 20120824161554
drwx------ 2 root root 12288 Aug 24 15:49 lost+found
//例子:
1.可以看到,创建时的0还不是很明确意思,但是0就可以了
2.在status时就可以看到快照数目变为3个了,目前快照号有3 0 1 2
[root@localhost ms]# dmsetup message /dev/mapper/ms 0 create
[root@localhost ms]# dmsetup status /dev/mapper/ms
0 1048576 multisnapshot 5 0 3 1048576 736 192 3 0 1 2
[root@localhost ms]# dmsetup suspend /dev/mapper/ms
[root@localhost ms]# dmsetup resume /dev/mapper/ms
[root@localhost ms]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 3 |dmsetup create ms3
[root@localhost ms]# mkdir /mnt/ms3
[root@localhost ms]# mount /dev/mapper/ms3 /mnt/ms3
[root@localhost ms]# ll /mnt/ms3
总计 20
-rw-r--r-- 1 root root 11 08-24 15:54 20120824155416
-rw-r--r-- 1 root root 11 08-24 15:54 20120824155425
-rw-r--r-- 1 root root 11 08-24 16:01 20120824160124
-rw-r--r-- 1 root root 11 08-24 16:01 20120824160125
-rw-r--r-- 1 root root 11 08-24 16:15 20120824161553
-rw-r--r-- 1 root root 11 08-24 16:15 20120824161554
-rw-r--r-- 1 root root 11 08-26 10:17 20120826101049
-rw-r--r-- 1 root root 11 08-26 10:17 20120826101051
drwx------ 2 root root 12288 08-24 15:49 lost+found
//重启后的测试、快照依然可用
[root@localhost ~]# lsmod | grep dm
dm_store_mikulas 40001 0
dm_multisnapshot 17332 1 dm_store_mikulas
dm_multipath 13659 0
scsi_dh 4512 1 dm_multipath
dm_snapshot 24203 3
dm_zero 1095 0
dm_mirror 11238 0
dm_region_hash 6060 1 dm_mirror
dm_log 7551 2 dm_mirror,dm_region_hash
dm_mod 51689 28 dm_store_mikulas,dm_multisnapshot,dm_multipath,dm_snapshot,dm_zero,dm_mirror,dm_log
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnapshot /dev/mapper/vg01-ms_base /dev/mapper/vg01-ms_snapshot 32 0 mikulas 0|dmsetup create ms
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 0 |dmsetup create ms0
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 1 |dmsetup create ms1
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 2 |dmsetup create ms2
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnap-snap /dev/mapper/vg01-ms_base 3 |dmsetup create ms3
[root@localhost ~]# dmsetup ls --target multisnapshot
ms (253, 8)
[root@localhost ~]# dmsetup ls --target multisnap-snap
ms3 (253, 12)
ms2 (253, 11)
ms1 (253, 10)
ms0 (253, 9)
[root@localhost ~]# dmsetup table
ms3: 0 1048576 multisnap-snap 253:6 3
ms2: 0 1048576 multisnap-snap 253:6 2
vg01-lv01-real: 0 1048576 linear 8:17 384
ms1: 0 1048576 multisnap-snap 253:6 1
ms0: 0 1048576 multisnap-snap 253:6 0
ms: 0 1048576 multisnapshot 253:6 253:7 32 0 mikulas 0
vg01-lv01_snap1-cow: 0 24576 linear 8:17 1073536
vg01-ms_snapshot: 0 1048576 linear 8:17 2146688
VolGroup00-LogVol01: 0 4128768 linear 8:2 37552512
vg01-ms_base: 0 1048576 linear 8:17 1098112
VolGroup00-LogVol00: 0 37552128 linear 8:2 384
vg01-lv01: 0 1048576 snapshot-origin 253:2
vg01-lv01_snap1: 0 1048576 snapshot 253:2 253:4 P 8
//快照删除
[root@localhost ~]# dmsetup message /dev/mapper/ms 0 delete 0
[root@localhost ~]# umount /dev/mapper/ms0
[root@localhost ~]# dmsetup remove ms0
[root@localhost ~]# dmsetup message /dev/mapper/ms 0 delete 3
[root@localhost ~]# umount /dev/mapper/ms3
[root@localhost ~]# dmsetup remove ms3
[root@localhost ~]# dmsetup status /dev/mapper/ms
0 1048576 multisnapshot 5 0 - 1048576 512 192 2 1 2
[root@localhost ~]# dmsetup ls --target multisnap-snap
ms2 (253, 11)
ms1 (253, 10)
经测试发现可以删除任何版本的快照
但是重启后,无法将快照原卷和快照卷组合为ms,但是换个名字可以。。。了!!
猜测在重启前将ms关闭,大概就不会出类似问题了
//如何进行快照还原




3.重新编译LVM2先对LVM2打补丁,方式还是和给LINUX打补丁类似
patch -p1 < dm-bufio.patch
补丁顺序
# Tested to apply (and work) on: lvm2.git v2_02_64

lvm-merge-log-print.patch

# Shared snapshots
lvm-refactor-exception-type.patch
lvm-shared-lvcreate.patch
lvm-shared-add-argument-to-vg_add_snapshot.patch
lvm-shared-new-segment-type.patch
lvm-shared-fixed-name.patch
lvm-shared-snapshot-flag.patch
device-mapper-shared-target.patch
lvm-shared-make-pointer-from-origin-to-shared-snapshot.patch
lvm-shared-activate.patch
lvm-shared-handle-activation-error.patch

lvm-shared-snapshot-segment-type.patch
lvm-shared-allow-no-size.patch
lvm-shared-test-free-space-after-setting-segtype.patch
lvm-shared-dev-manager.patch
lvm-shared-create-snapshot.patch
lvm-shared-no-snapshot-of-snapshot.patch
lvm-shared-delete-message.patch
lvm-shared-dont-deactivate-origin-when-deactivating-snapshot.patch
lvm-shared-deactivate-snapshots-with-origin.patch
lvm-shared-remove-snapshots-with-origin.patch
lvm-shared-activate-shared-origin-with-the-snapshot.patch
lvm-shared-dont-shrink-shared-volume.patch
lvm-shared-noexplicit-segment.patch
lvm-dont-merge-shared-store.patch
lvm-last-seg.patch
lvm-shared-resize-virtual-snapshot.patch
lvm-shared-cleanup-on-activate.patch
lvm-shared-status.patch
lvm-shared-status-percent.patch
lvm-shared-snapshot-of-snapshot.patch

# Patches by snitzer@redhat.com:
lvm-shared-additional-wrappers.patch
lvm-shared-eliminate-shared_snapshot-in-lv.patch
lvm-shared-vorigin-segv-fix.patch
lvm-shared-add-ACCESS_HIDDEN_LV-flag.patch

# by Mikulas
lvm-refactor-chunksize-validation.patch
lvm-shared-big-chunksize.patch
lvm-merge-function-onactivate.patch

lvm-shared-merge.patch
lvm-shared-merge-dont-delete.patch

编译LVM2
aclocal
autoconf
./configure
make
make install
[root@localhost bin]# ll /sbin/lvcreate //此处为刚安装的lvcreate
lrwxrwxrwx 1 root root 3 08-27 00:29 /sbin/lvcreate -> lvm
由于还有一个在/usr/sbin/下,系统本来装的
将/sbin下的占到/usr/sbin下,将原lvm作为lvm_old
4.尝试LVM2管理multisnap
//创建快照卷
[root@localhost ~]# lvcreate -s --sharedstore mikulas -L 512M -c 64K /dev/vg02/lv01
Logical volume "lv01-shared" created
//创建快照
[root@localhost ~]# lvcreate -s -n snap_$(date -d "today" +"%Y%m%s%H%I%S") /dev/vg02/lv01
Logical volume "snap_2012081346132205130145" created
//查看目前卷情况,可以看到加了快照以后,快照卷被占用了0.07%
[root@localhost ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 17.91G
LogVol01 VolGroup00 -wi-ao 1.97G
lv01 vg02 owi-a- 512.00M
lv01-shared vg02 swi--- 512.00M lv01 0.07
snap_2012081346132205130145 vg02 swi-a- 512.00M lv01
[root@localhost ~]# mkfs.ext3 /dev/vg02/lv01
[root@localhost ~]# mkdir /mnt/lv01_2012081346132205130145
//第一个快照是没有文件系统的,所以无法挂载
[root@localhost ~]# mount /dev/vg02/snap_2012081346132205130145 /mnt/lv01_2012081346132205130145
mount: you must specify the filesystem type
[root@localhost ~]# lvcreate -s -n snap_$(date -d "today" +"%Y%m%s%H%I%S") /dev/vg02/lv01
Logical volume "snap_2012081346132657130117" created
[root@localhost ~]# mkdir /mnt/snap_2012081346132657130117
//第二个快照是在创建文件系统后拍摄的,所以可以挂载,但内容为空
[root@localhost lv01]# ll /mnt/snap_2012081346132657130117/
总计 12
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost ~]# mount /dev/vg02/snap_2012081346132657130117 /mnt/snap_2012081346132657130117
[root@localhost ~]# cd /mnt/lv01
[root@localhost lv01]# touch $(date -d "today" +"%Y%m%s%H%I%S")
[root@localhost lv01]# touch $(date -d "today" +"%Y%m%s%H%I%S")
//第三个快照是创建了一些数据后拍摄的,所以可以挂载且有内容
[root@localhost lv01]#lvcreate -s -n snap_$(date -d "today" +"%Y%m%s%H%I%S") /dev/vg02/lv01
Logical volume "snap_2012081346132744130144" created
[root@localhost lv01]# mkdir /mnt/snap_2012081346132744130144
[root@localhost lv01]# mount /dev/vg02/snap_2012081346132744130144 /mnt/snap_2012081346132744130144
[root@localhost lv01]# ll /mnt/snap_2012081346132744130144
总计 12
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132730130130
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132731130131
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost lv01]# touch $(date -d "today" +"%Y%m%s%H%I%S")
[root@localhost lv01]# touch $(date -d "today" +"%Y%m%s%H%I%S")
//目前原卷情况
[root@localhost lv01]# ll
总计 12
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132730130130
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132731130131
-rw-r--r-- 1 root root 0 08-28 13:46 2012081346132801130141
-rw-r--r-- 1 root root 0 08-28 13:46 2012081346132802130142
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost lv01]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 17.91G
LogVol01 VolGroup00 -wi-ao 1.97G
lv01 vg02 owi-ao 512.00M
lv01-shared vg02 swi--- 512.00M lv01 7.36
snap_2012081346132205130145 vg02 swi-a- 512.00M lv01
snap_2012081346132657130117 vg02 swi-ao 512.00M lv01
snap_2012081346132744130144 vg02 swi-ao 512.00M lv01
snap_2012081346133323130123 vg02 swi-a- 512.00M lv01
[root@localhost lv01]#
//删除快照测试
1.删除最老的快照snap_2012081346132205130145,【在未重启原卷情况下,其他快照均正常
[root@localhost lv01]# lvremove /dev/vg02/snap_2012081346132205130145
Do you really want to remove active logical volume snap_2012081346132205130145? [y/n]: y
Logical volume "snap_2012081346132205130145" successfully removed
[root@localhost lv01]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 17.91G
LogVol01 VolGroup00 -wi-ao 1.97G
lv01 vg02 owi-ao 512.00M
lv01-shared vg02 swi--- 512.00M lv01 0.18
snap_2012081346132657130117 vg02 swi-ao 512.00M lv01
snap_2012081346132744130144 vg02 swi-ao 512.00M lv01
snap_2012081346133323130123 vg02 swi-a- 512.00M lv01
[root@localhost lv01]# ll /mnt/snap_2012081346132657130117
总计 12
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost lv01]# ll /mnt/snap_2012081346132744130144
总计 12
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132730130130
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132731130131
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost lv01]# ll
总计 12
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132730130130
-rw-r--r-- 1 root root 0 08-28 13:45 2012081346132731130131
-rw-r--r-- 1 root root 0 08-28 13:46 2012081346132801130141
-rw-r--r-- 1 root root 0 08-28 13:46 2012081346132802130142
drwx------ 2 root root 12288 08-28 13:37 lost+found
[root@localhost lv01]#
//重启原卷,发现所有逻辑卷均失效,但可能因为前两个有挂载,再试一次
[root@localhost lv01]# fuser -m /dev/vg02/lv01
/dev/vg02/lv01: 3878c
[root@localhost lv01]# kill -9 3878
[root@localhost ~]# umount /dev/vg02/lv01
[root@localhost ~]# lvchange -an /dev/vg02/lv01
[root@localhost ~]# lvchange -ay /dev/vg02/lv01
/dev/mapper/vg02-snap_2012081346132657130117: read failed after 0 of 2048 at 0: 输入/输出错误
/dev/mapper/vg02-snap_2012081346132744130144: read failed after 0 of 2048 at 0: 输入/输出错误
[root@localhost ~]#
[root@localhost ~]# lvs
/dev/mapper/vg02-snap_2012081346132657130117: read failed after 0 of 2048 at 0: 输入/输出错误
/dev/mapper/vg02-snap_2012081346132744130144: read failed after 0 of 2048 at 0: 输入/输出错误
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 17.91G
LogVol01 VolGroup00 -wi-ao 1.97G
lv01 vg02 owi-a- 512.00M
lv01-shared vg02 swi--- 512.00M lv010.18
snap_2012081346132657130117 vg02 swi-ao 512.00M lv01
snap_2012081346132744130144 vg02 swi-ao 512.00M lv01
snap_2012081346133323130123 vg02 swi--- 512.00M lv01


===========================================================================================================================================
可能的错误

lvcreate -s --sharedstore mikulas -c 64k -L 512M /dev/vg01/lv01

lvcreate:无法识别的选项"--sharedstore"

Error during parsing of command line

解答:重新给LVM打补丁并编译LVM工具,如上问3


[root@localhost LVM2.2.02.73]# lvcreate -s --sharedstore mikulas -c 64k -L 512M /dev/vg02/lv01
WARNING: Unrecognised segment type multisnapshot
Cannot update volume group vg02 with unknown segments in it!
解答:打完LVM补丁后,为进行aclocal和autoconf对makefile进行整理


[root@localhost LVM2.2.02.73]# lvcreate -s --sharedstore mikulas -L 512M -c 64K /dev/vg02/lv01
lvcreate: relocation error: lvcreate: symbol dm_tree_node_add_snapshot_shared_target, version Basenot definedin file libdevmapper.so.1.02 with link time reference

解答:如果是64位的机器,需要将编译完的lvm同时不知道lib64下,系统使用的是 /lib64/下的libdevmapper.so.1.02 ,那里并没被更新,从 /lib/拷过来就行了


2018-05-03 15:51:04 wangkana 阅读数 1927
  • Ceph 分布式存储入门实践篇(基础架构之六)

    Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且 随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox 标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph  存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.      Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控

    977 人正在学习 去看看 臧雪园

方法一(图形界面):

要求:必须要求系统中有好的虚拟机,才能成功创建快照。




用快照生成的node1.qcow2安装虚拟机






虚拟机的快照建立成功!

方法二(脚本实现):

(1)vim /mnt/vm_sanpshoot.sh

          #!/bin/bash
         qemu-img create -f qcow2 -b \
        /var/lib/libvirt/images/$1.qcow2 \
        /var/lib/libvirt/images/$2.qcow2

       

       virt-install \
      --name $2 \
      --cpus 1 \
      --ram 1024 \
      --disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
      --network source=br0,model=virtio \

      --import

( 2 )给脚本加执行权限:chmod +x /mnt/vm_sanpshoot.sh

( 3 )执行脚本


 

附:

 快照的优点:比母盘小的多。



对虚拟机相关命令操作:

virsh list -all                          //显示现有的虚拟机
virsh creat wangkana.xml  //恢复已删除的虚拟机,一次性打开,关闭后不存在
virsh define jay.xml             //永久建立
virsh undefine desktop      //删除虚拟机,硬盘不删
virt-viewer desktop            //显示已打开的虚拟机
virsh destory desktop        //关闭虚拟机
virsh shutdown desktop   //正常关闭虚拟机
2017-10-25 18:01:27 qq_34373016 阅读数 1074
  • Ceph 分布式存储入门实践篇(基础架构之六)

    Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且 随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox 标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph  存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.      Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控

    977 人正在学习 去看看 臧雪园

引文:本次要学习如何安装虚拟机,并且写几个简单的脚本,再用快照安装一次虚拟机。

一 通过光盘安装linux系统(把光盘内容直接刻录在文件夹里)

1、准备镜像(输入cat /etc/redhat-release可以查看redhat版本) #输入uname -r可以查看linux系统版本

根据查看的版本去网上下载相关资源。例如本机是7.2.

2、输入virt-manager进入虚拟机控制平台

点击小电脑图标

我们选择第一个选项(通过iso image或者光盘进行安装)

然后找到刚刚下载好的镜像。

名字和内存都随自己更改。

3、更改时区,语言,安装方式(真机须选3个关于虚拟化的选项)。

时区选择上海即可

加入中文简体

一般选择最后一个,安装一些必要的程序即可。

4、分区(建议自动分区,然后修改分配容量)
(1)/boot        ---启动分区,200M即可,太大没有什么作用
(2)/swap      ---交换分区,当内存容量大于内存80%时,把多余的放进硬盘,待内存降下来之后,又放回内存,建议分区大小为物理内存1.5~2倍,8G可设12G。

(3)/          ---其余分区皆为即可。

接下来等待安装即可。

二 创建脚本安装虚拟机

在 /usr/sbin/建立一个Create_Vm.sh

chmod +x Create_Vm.sh     ---加可执行权限
加&在后台运行,不加在前台(创建虚拟机)
#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 8 \
--cdrom /home/kiosk/Desktop/rhel-server-7.2-x86_64-dvd.iso \
--vcpus 1 &

写入如下脚本:

 

如果是无图形界面则依次输入12cc即可


xml    ---可扩展标记语言 ,封装数据
模拟拷贝虚拟机
1 cd /etc/libvirt/qemu/      ---进入虚拟机目录
2 ls                         ---显示该目录文件项
3 cp node1.xml /mnt/         ---复制(发送)前端文件(硬件相关信息)到目标主机
4 cd var/lib/libvirt/images/ ---进入到虚拟机硬盘所在目录
5 ls

6 mv node1.qcow2 /mnt/       ---复制硬盘到目标主机


7 virsh undefine node1       ---删除原有虚拟机(在复制到其他机器上忽略此步骤)


8 mv /mnt/node1.qcow2 /var/lib/libvirt/images/ ---复制硬盘到虚拟机默认硬盘所在目录

9 virsh define node1.xml      ---创建复制虚拟机


9 virsh create node1.xml      ---打开复制过来的虚拟机,关闭之后在manager会消失


打开虚拟机相关命令:
virsh list               ---显示当前正在运行的虚拟机

virsh list --all         ---显示所有虚拟机


virsh start node1        ---打开虚拟机
virt-viewer node1        ---显示图形界面
virsh shutdown node1     ---正常关机

virsh destroy node1      ---强制关机

剩下就不一一列举了


三 虚拟机快照:(以安装node1为例)
1、 cd /var/lib/libvirt/images/       ---进入新安装的虚拟机的硬盘目录
2、 在虚拟机管理界面delete 新安装的虚拟机node1,记得不要删除其硬盘文件,留下其硬盘文件,可以母盘,下面是为了防止以后手残更改了母盘文件导致其他虚拟机不能用。

3、 mv node1.qcow2 vm_storage.qcow2   ---更改源硬盘文件名,名字可以自行确定


4、 qemu-img create -f qcow2 -b vm_storage.qcow2 newname.qcow2 ---创建新快照。


5、虚拟机管理界面添加新机即可。

选择第四个,然后改名字即可。

新机就建立完成。

四 脚本:

1)只添加虚拟机其余自己操作的脚本:Create_Vm.sh
#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.wcow2 \
--file-size 8 \
--cdrom /home/kiosk/Desktop/rhel-server-7.2-x86_64-dvd.iso \
--vcpus 1 &
这个脚本上边已经有详细过程。
2)添加带磁盘的虚拟机脚本:创建快照,添加快照,安装 Createvm.sh
#!/bin/bash
qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_storage.qcow2 \
/var/lib/libvirt/images/$1.qcow2 &> /dev/null

virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2,bus=virtio \
--file-size 8 \
--network source=br0,model=virtio \
--import &> /dev/null &

3)重置虚拟机脚本:Resetvm.sh
#!/bin/bash
virsh destory $1 &> /dev/null
rm -rf /var/lib/libvirt/images/$1.qcow2
qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_storage.qcow2 \
/var/lib/libvirt/images/$1.qcow2 &> /dev/null
echo Successfully!!!
virsh start $1 &> /dev/null
virt-viewer $1 &> /dev/null &

sh -x 命令         ---一步一步安装,若出错,报告出错过程
2017-10-25 16:35:00 random_w 阅读数 508
  • Ceph 分布式存储入门实践篇(基础架构之六)

    Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且 随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox 标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph  存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.      Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控

    977 人正在学习 去看看 臧雪园

       在学习运维的过程中一个虚拟机往往不够用,有一个方法可以让你对原有的虚拟机硬盘文件作一个快照,然后使用快照再安装一个虚拟机,这样安装过程是十分快的,在这篇文章中我会向大家介绍什么是快照,如何实现快照,已经如何编写shell脚本,快速安装虚拟机。


一、快照

        快照类似于复制更改文件,你所作的更改都是在复制的文件上面作的,因此并不影响源文件的使用,如果更改错误,你只需要删除快照文件,然后再复制一份进行更改。

二、虚拟机两个重要文件查询

        1.硬盘文件

              硬盘文件存储在目录:/var/lib/libvirt/images/下,在终端中可以进入下面的界面进行查询:

            2..xml文件

            在这个文件中记录着虚拟机的硬盘信息,类似于前端,上一个文件类似于后端,在下图中列出了该文件的查询方式:

三、快照方法

        1.快照对象

        快照的对象是虚拟机的硬盘文件,即/var/lib/libvirt/images/目录下的文件。

         2.快照实现方法

           (1)进入虚拟机硬盘文件所在目录。

           (2)在终端中输入命令:qemu-img creat -f qcow2 -b aaa.qcow2 bbb.qcow2,aaa表示源文件名称,如下图中 的nod1,bbb指快照文件名称,可以自己命名如nod2。        

  

          3.安装快照

           在终端中输入:virt-manager,进入下面的界面:


          在上图中点击file下面的电视图标,进入下面的界面,选择最后一项,然后点击forwad:

          在下图中选择Browse


          在下面的界面,选择快照文件nod2.qcow2,然后点击右下角Choose Volume:

          再下图中直接点击Forwad:


          然后进入下面的界面,第一项为设置内存容量,第二项为设置cpu核数,图中为建议值,设置完成后点击Forwad:

          在下图第一项输入虚拟机名称,然后点击Finish:


            然后进入下面的界面,等待即可:

          然后就会进入登陆界面,安装完成。


没有更多推荐了,返回首页