我有一个运行一些服务(邮件、网络、git、mysql...)的 debian 服务器。但它是单独的,这意味着如果它坏了,我必须修理它才能访问我的服务。
我想放置第二台服务器,以便如果第一台服务器死机,第二台服务器会自动准备好工作。我不希望这些服务器中的任何一个是主服务器,而另一个是从服务器。这个想法是为了防止两台服务器中的任何一台发生硬件故障。
我找到了很多关于如何创建一些大型集群的信息,但我没有发现任何暗示只有两台服务器的东西。
这是我提出的问题的延伸。 将目录从命令行传递到 shell 脚本
我有一个脚本,它使用定界符编写另一个脚本。我需要能够在定界文档中写入未展开的变量,因此我使用单引号 ( 'EOF')。但是,我需要扩展一个变量。$sourcedir给定下面的脚本,我如何在heredoc中写入 的值?
#!/bin/bash
sourcedir="$1"
cd $sourcedir
find "$PWD" -maxdepth 2 -name \*_R1*.fastq.gz > list1
fastq_list=$sourcedir/list1 echo `cat $fastq_list` num_files=$(wc -l <
$sourcedir/list1) echo $num_files
cat > run_array_job.sh<<'EOF'
#!/bin/bash -l
#$ -j y
#$ -cwd -S /bin/sh
#$ -l h_vmem=10G
#$ -pe smp 12
if [ -z "${SGE_TASK_ID}" ]; then echo "Need to set SGE_TASK_ID" exit 1 fi
BASEDIR=$sourcedir
echo "BASEDIR" echo $BASEDIR
BASEFILES=$( ls *_R1.fastq.gz)
BASEFILES_ARRAY=(${BASEFILES})
BASEFILE=${BASEFILES_ARRAY[(${SGE_TASK_ID} - 1)]}
echo $BASEFILE …Run Code Online (Sandbox Code Playgroud) 我们有许多未使用的 PC 机器,我们想用它们来建立高性能计算应用程序的教育实验室。哪个 Linux 发行版在教育环境中设置最方便且易于管理?如果有人向我提供不同 Linux 集群发行版的优缺点列表,我将不胜感激。
在 HPC 集群上,我尝试permute2.sh使用 GNU 并行从 1 个 bash 脚本运行多个 bash 脚本 ( ),但是它并没有完成每项工作。它随机完成一项工作,而它却在做另一项工作。
permute1.sh:
PROCS=144
permuations=1000
seq 1 $permuations | parallel -j $PROCS sh permute2.sh {}
Run Code Online (Sandbox Code Playgroud)
permute2.sh(从文件中随机抽取 100 行并对其执行一些操作以进行排列)
id=$1
randomlines=100
awk 'BEGIN{srand();} {a[NR]=$0}
END{for(I=1;I<='$randomlines';I++){x=int(rand()*NR);print a[x];}}'
FILE.txt > results/randomlines.$id.txt
# do stuff with randomlines.$id.txt..
Run Code Online (Sandbox Code Playgroud)
当我运行时, permute1.sh我可以看到它为每个 cpu 1 (randomlines.1.txt - randomlines.144.txt) 创建了 144 个文件,但其中大部分是空的并停止工作,有些已完成。我究竟做错了什么?
如何验证远程计算机是否是 Veritas 集群的一部分?
我刚刚创建了以下 ssh 命令来验证远程机器是 VRTS 集群还是 Linux 可用性 Red Hat 集群
LinuxTSR=198.23.12.5
ssh LinuxTSR "ls /usr/sbin/clustat /opt/VRTS 2>/dev/null" | wc -l
Run Code Online (Sandbox Code Playgroud)
如果我得到的数字不是 0,则它是 VRTS 或 Red Hat 集群。但是这种方法并不是那么优雅。请帮我找到更优雅的方法来验证远程机器是否在集群中。
我在 Linux 集群上运行许多任务。每个任务都会创建许多输出文件。完成所有任务后,我会运行类似tar cf foo.tar output_files/创建tar存档的操作。这是一个非常缓慢的过程,因为有成千上万的文件和目录。
在创建输出文件时,有没有办法并行执行此操作?
是否可以有多个tar进程,分布在多台机器上,同时将它们的文件添加到同一个存档中?
集群有一个共享文件系统。
我对压缩不感兴趣,因为它会减慢速度,而且因为所有输入文件本身都已经压缩过。理想情况下,输出将是一个tar文件,但我也会考虑其他存档格式。
我正在使用在Linux下运行的集群机器。
我有一个 shell 脚本,用于mpirun将我的作业提交到集群计算机。在同一脚本中,我可以选择分配给作业的节点数量。到目前为止,一切都很好。
我的问题出现在:当我提交一些作业时,一切正常,但是,当我填满节点的容量时,某些提交的作业将无法完成。因此,我怀疑集群上的可用内存不足以同时处理我的所有作业。
这就是为什么我想检查每个作业随着时间的推移的内存使用情况,然后我使用该qstat -f命令,但它显示了很多东西,其中大多数我无法理解。
所以这是我的问题:在下面命令的示例输出中qstat -f,我们可以看到两种类型的内存:mem和vmem。我想知道这两者有什么区别,实际使用的内存量是多少?
resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08
Run Code Online (Sandbox Code Playgroud)
此外,如果有详细说明该命令输出的参考资料,我将不胜感激。我尝试了 man qstat 但它没有详细说明每个返回行。
磁盘的 MBR 是否包含此信息,因此当我调用 fdisk 之类的命令时,内核级代码最终会运行并从 MBR 中的特定部分读取它?如果有,是哪一部分?什么抵消?
如果它不在MBR中,那么这些类型的命令如何找到它?他们不能从分区的开头读取它,因为他们需要计算该分区的起始地址并且他们需要扇区大小来这样做,不是吗?
如何fdisk实现命令来查找这些信息?他们从哪里读到的?
我已经建立了一个心跳 HA 两节点集群。并且两个服务器都具有相同的 ha.cf 配置
#cat /etc/ha.cf
logfile /var/log/ha-log
autojoin none
bcast eth1
warntime 20ms
deadtime 40ms
initdead 30
keepalive 5ms
node server1.com
node server2.com
Run Code Online (Sandbox Code Playgroud)
我以毫秒为单位设置了 keepalive 和 deadtime,希望故障转移将在不到秒或 deadtime 值内发生。但是没有达到预期的行为。
使用此配置,如果我在一台服务器中停止心跳,另一台服务器将在大约 20 秒后(通过秒表粗略估计)。
我想知道是心跳只能做什么还是我错过了什么?
我有几台 Linux 机器,我想建立一个集群计算机网络。将有 1 个监视器用于控制器。控制器将执行一个脚本,该脚本将执行一项任务并将负载分摊到计算机上。
假设我有 4 台计算机都连接到控制器。我想使用 GCC 编译一个程序,但我想将工作分成 3 种方式。我该怎么做?
任何帮助,将不胜感激。
cluster ×10
linux ×5
parallelism ×2
bash ×1
command ×1
command-line ×1
compiling ×1
debian ×1
disk ×1
gnu-parallel ×1
hard-disk ×1
heartbeat ×1
memory ×1
pacemaker ×1
scripting ×1
shell ×1
shell-script ×1
tar ×1