如何利用Linux和GFS打造集群存储

如何利用Linux和GFS打造集群存储,第1张

负载均衡是一项困难的任务。我们经常需要通过NFS(网络文件系统)或其他机制来为数据提供中心地址,从而共享文件系统。虽然你的安全机制可能可以让你免于Web服务器节点的故障,但是你仍然需要通过中央存储节点来共享数据。

通过GFS(全局文件系统)——Linux的一个免费集群文件系统——你可以创建一个不需要依赖其他服务器的真正稳定的集群。在这篇文章中,我们将展示如何正确地设置GFS.

从概念上来说,一个集群文件系统可以允许多个 *** 作系统载入同一个文件系统并可以在同一时间内向同一文件系统写入数据。现在有许多集群文件系统,包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系统),以及Linux的GFS.

有许多方法可以让一个块设备同时被多个服务器所使用。你可以分区出一个对多个服务器都可视的SAN(存储局域网)LUN(逻辑单元号),设置好相应的iSCSI(互联网小型计算机系统接口),或使用DRBD(分布式复制块设备)在两台服务器之间复制一个分区。在使用DRBD的时候,你将需要在主/主节点中设置好DRBD以使用GFS.

GFS要求

运行GFS意味着你在运行一个集群。目前为止,运行GFS的最简单的手段就是使用Red Hat Cluster Suite(RHCS:Red Hat集群套件)。这个套件在CentOS中就有。此外,还需要下面这些包:cman——集群管理器lvm2-cluster——使LVM(逻辑卷管理器)可以支持集群的CLVM(集群逻辑卷管理器)包kmod-gfs——GFS内核模块最后是gfs-utils.

集群管理器(cman)包含必要的工具,比如分布式锁管理器。除非你希望花时间来确认各种不同的分发版本是如何采用cman的,否则我们强烈推荐使用CentOS或RHEL.同时,你还将获得RH(Red Hat)所维护的各种最新版本的集群服务,此外你还可以获得一个比较稳定的环境。

Fencing(阻绝)机制是绝对必要的。一些指导性文章建议将阻绝模式设定成"手动",因为阻绝设置有可能比较复杂。阻绝意味在集群中进行隔离,或马上中断某些危险节点的运作。如果集群无法阻绝某个发生故障的节点,那么你的GFS将会出现很多问题,因此不要跳过这个步骤。

创建集群设置

你可以通过/etc/cluster/里面的cluster.conf完成大部分的集群设置。我不建议使用各种集群管理应用程序来创建这个设置文件。即使是完全支持的RHEL应用程序,比如两个月前发布的Conga,也经常会创建一些无效的cluster.conf文件,并且无法被必要的服务所解析。

下面是一个cluster.conf文件的例子。这个设置文件采用漂亮的XML格式,其内容非常直接。首先,我们对集群进行命名,我们将这个集群称作"Web.1".

先跳过fence daemon选项,下一个部分就是集群主体的设置内容。你需要在clusternodes部分定义两个节点。设置文件将同时存放在两个节点上,这样这两个节点就都知道彼此的情况。

集群内的每个节点都声明其阻绝方式的名称是独一无二的。在clusternames结束标签下面,我们看到fencedevice部分定义了每个节点如何阻绝其他节点的方式。使用一个支持IPMI(智能平台管理接口)的服务器是最好的方式,而且其设置也是相当简单。你只要将IPMI的地点以及登录方式告诉IP就可以了。为了避免在cluster.conf中留下密码,你可以将它指向一个由根所拥有的脚本并由这个脚本来返回密码。

我们还要指出的是我们在设置中定义了两个节点。这是必须的,因为通常来说,除非大部分节点都同意自己的状态,否则集群无法达到"Quorate"状态。如果只有两个节点的话,没有肯定多数,因此这种方式让集群只能在两个节点下工作,而不能只在只有一个节点的情况下工作。这是设置基本集群的必要方式。

在每个节点上运行"service cman start",系统应该可以开始正常运作。你可以检查"clustat"或"cman nodes"来确认节点是否良好运行。如果有哪个必要的部分没有启动,那么集群将不会显示"Quorate"状态。

GFS设置

首先,我们需要设置CLVM,这样我们才可以通过GFS使用LVM.激活CLVM只要在lvm.conf中设定"locking type=3"就可以了。

然后,就像平常一样创建一个LVM卷组和卷,但是使用的是共享的块设备。如果你使用的是DRBD,你将有可能使用/dev/drbd0.我创建了一个物理卷,然后创建一个名为vg01的卷组,然后创建一个名为web1的逻辑卷,这个卷在:/dev/vg01/web1.

最后,我们需要创建文件系统:

gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1

-t中给定的名称必须是集群的名称,然后后面是你给这个文件系统所起的名字。只有web1集群的成员才可以载入这个文件系统。然后,设定分布式锁管理器的锁钥类型,指明你需要两份journal(因为这是一个双节点集群)。如果你预计未来要增加更多的节点,那么你需要在这时设定足够高的journal数量。

总结

我们现在可以开始使用这个文件系统了。在两个节点上启动"clvmd"和"gfs"服务。现在你就可以通过"-t gfs"来将类型指定为GFS,从而载入文件系统。

在开始启动之前,一定要设定好cman,clvmd和gfs服务。你最好能熟悉clustat和gfs_tool命令,因为在系统出现问题的时候,你可以用这些命令来查找问题所在。

不要指望GFS能很快。如果有一个节点在进行大量的写入 *** 作的话,那么在访问文件系统的时候出现停顿是很正常的。对于一个数据读取 *** 作比数据写入 *** 作多得多的Web集群来说,这倒不是什么问题。如果出现明显延迟,那么首先要检查一下所有组件的状况,然后评估正在写入的数据。防止延迟现象的最常见措施就是确保HTTP对话中的数据不是写入GFS卷。

Linux里面mkfs命令作用是什么?

解答:

1.这是Linux系统下格式化磁盘的工具。

2.格式化的本质就是创建文件系统(组织和存取文件的机制)。

3.可以创建的文件系统有ext4(CentOS6),xfs(CentOS7)。

4.格式化命令:

LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将 其它 的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。那么你知道linux系统硬盘怎么格式化吗?我带来了linux系统硬盘格式化的具 体 *** 作过程,下面大家跟着我一起来学习一下吧。

linux系统硬盘怎么格式化

分区与格式化

先用fdisk分区,分区完成后再用mkfs格式化并创建文件系统,挂载,磁盘就能使用啦。

分区的原理:

MBR:主引导扇区

主分区表:64bytes,最多只能分四个主分区,每个主分区的记录(相关信息,比如分区大小,位置)在主分区表里占14bytes。

如果要建多于四个的分区,就要拿出一个主分区做为扩展分区,再在扩展分区里面进行其它的分区 *** 作。在 建扩展分区的时候会建立一张对应的扩展分区表,它记录了在这个扩展分区里的分区的相关信息理论上它没有分区数量的限制,在扩展分区内部的分区叫做逻辑分区,如上图中的 /dev/hda5,/dev/hda6/,/dev/hda7

格式化原理:

在分好区后,分区里面是空的,没有任何东西。为了能让OS识别,就必须要向分区里写入相应格式的数据。比如windows的FAT32,NTFSLinux的ext2,ext3,ext4(目前ext3格式的用的比较多,ext4还在实验之中,在新的Fedora上使用的就是ext4的文件系统)。

Windows/dos常用的分区工具:fdisk/partition magic/diskpart

Linux下常用的分区工具:

fdisk/sfdisk:命令行工具,各种版本和环境都能使用,包含在软件包util-linux中

diskdruid:图形化分区工具,只能在安装REDHAT系统时使用。

下面我们开始实验:

环境/工具:Fedora 14/256M内存卡fdisk

第一步:fdisk

[root@novice ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

[root@novice ~]# fdisk /dev/sdb

Command (m for help): #在输入上面的命令后会出现左边的提示,输入m就会得到一个帮助菜单,如下:

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

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)

#help虽然是英文的,可都很简单,在这里不再解释。

#现在,我们正式开始分区的 *** 作:

Command (m for help): n #新建分区

Command action

e extended

p primary partition (1-4)

#e/p分别对应扩展分区 /主分区我们先分四个主分区,每个50M然后再来增加主分区或扩展分区,看会出现怎样的状况,嘿嘿。

p #分区类型为主分区

Partition number (1-4, default 1): 1 #分区号,在这里我们依次选择1、2、3、4

First sector (2048-496127, default 2048): #指定分区的起始扇区,一般默认,按enter键即可。

Last sector, +sectors or +size{K,M,G} (2048-496127, default 496127): +50M #指定分区的终止扇区,根据前面的提示我们可以做出相应的选择+sectors 或 +size{K,M,G}

Command (m for help): p #用p打印出已建好的分区列表

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

#剩下的三个分区的建立 *** 作同上

#分好四个主分区后的情况如下

Command (m for help): p

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 83 Linux

/dev/sdb3 206848 309247 51200 83 Linux

/dev/sdb4 309248 309298 25+ 83 Linux

#已经建好四个主分区啦,现在我们来看看如果再建主分区或是扩展分区的话会出现怎样的情况:

Command (m for help): n

You must delete some partition and add an extended partition first

#看到了吧,不能再建分区啦!要再建分区的话必须删除some分区,再新建一个扩展分区才行。

#现在,我们删掉一个主分区,来新建扩展分区

Command (m for help): d #删除分区

Partition number (1-4): 4 #选择要删除分区的分区号,我们选第四个

Command (m for help): p #打印,如下,四个分区变成了三个!

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 83 Linux

/dev/sdb3 206848 309247 51200 83 Linux

#新建一个扩展分区

#如果在没有建满三个主分的区的情况下建立扩展分区,相关选项会有些不同。

Command (m for help): n

Command action

e extended

p primary partition (1-4)

e

Selected partition 4

First sector (309248-496127, default 309248): #enter,默认

Using default value 309248

Last sector, +sectors or +size{K,M,G} (309248-496127, default 496127): #enter,默认,使用剩余空间

Using default value 496127

Command (m for help): p

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 83 Linux

/dev/sdb3 206848 309247 51200 83 Linux

/dev/sdb4 309248 496127 93440 5 Extended

#接下来,我们在新建的扩展分区里再新建两个逻辑分区,因为已经有了三个主分区,这里不会再显示是建立逻辑分区还是主分区的提示!

Command (m for help): n

First sector (311296-496127, default 311296): #enter

Using default value 311296

Last sector, +sectors or +size{K,M,G} (311296-496127, default 496127): +50M

Command (m for help): n

First sector (415744-496127, default 415744): #enter

Using default value 415744

Last sector, +sectors or +size{K,M,G} (415744-496127, default 496127): #enter

Using default value 496127

Command (m for help): p

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 83 Linux

/dev/sdb3 206848 309247 51200 83 Linux

/dev/sdb4 309248 496127 93440 5 Extended

/dev/sdb5 311296 413695 51200 83 Linux

/dev/sdb6 415744 496127 40192 83 Linux

#上面的列表,就是我们今天分区的成果啦!接下来保存退出,重启计算机,就可以进行下一步的mkfs *** 作啦!如果忘记了相关的 *** 作命令,记得按m!!!

Command (m for help): w #保存

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

另:在建好分区后,我们还可以更改相关分区的文件系统类型

#如,我们要把第二个主分区改成Linux下的交换分区, *** 作如下

Command (m for help): t #更改文件系统类型

Partition number (1-6): 2 #选择第二个分区

Hex code (type L to list codes): L #选择要更改的文件系统编码,可以按L来查看相关编码信息。

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-

2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-

3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-

............

16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS

17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE

18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto

1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep

1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT

1e Hidden W95 FAT1

Hex code (type L to list codes): 82 #查找到linux swap的编码为82

Changed system type of partition 2 to 82 (Linux swap / Solaris)

Command (m for help): p

..............

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 82 Linux swap / Solaris

/dev/sdb3 206848 309247 51200 83 Linux

/dev/sdb4 309248 496127 93440 5 Extended

/dev/sdb5 311296 413695 51200 83 Linux

/dev/sdb6 415744 496127 40192 83 Linux

#最后别忘了保存!如果你须要的话!

#扩展分区不能直接使用,逻辑分区只能建立在扩展分区上!

第二步:mkfs(mkfs时分区的格式最好与fdisk设定的分区格式一致,不然.......)

mkfs支持ext2 ext3 vfa msdos jfs reiserfs等文件系统。

用法1:mkfs -t

例: mkfs -t ext3 /dev/sdb2

用法2:mkfs.

例:mkfs,vfat /dev/sdb3

mke2fs支持ext2/ext3文件系统

用法:mke2fs [-j]

例:mke2fs -j /dev/sdb5

# 更多更具体的用法请参照相关命令的man手册

下面,接着实验:

例一

[root@novice ~]# mkfs -t ext3 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

12824 inodes, 51200 blocks

2560 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=52428800

7 block groups

8192 blocks per group, 8192 fragments per group

1832 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

例二:

[root@novice ~]# fdisk /dev/sdb

Command (m for help): t

Partition number (1-6): 6

Hex code (type L to list codes): L

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-

2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-

3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-

4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx

5 Extended 42 SFS 86 NTFS volume set da Non-FS data

6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .

7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility

.........

Hex code (type L to list codes): 7

Changed system type of partition 6 to 7 (HPFS/NTFS)

Command (m for help): p

Disk /dev/sdb: 254 MB, 254017536 bytes

8 heads, 61 sectors/track, 1016 cylinders, total 496128 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

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sdb1 2048 104447 51200 83 Linux

/dev/sdb2 104448 206847 51200 82 Linux swap / Solaris

/dev/sdb3 206848 309247 51200 83 Linux

/dev/sdb4 309248 496127 93440 5 Extended

/dev/sdb5 311296 413695 51200 83 Linux

/dev/sdb6 415744 496127 40192 7 HPFS/NTFS

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@novice ~]# mkfs.ntfs /dev/sdb6

Cluster size has been automatically set to 4096 bytes.

Initializing device with zeroes: 100% - Done.

Creating NTFS volume structures.

mkntfs completed successfully. Have a nice day.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7594298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存