It has been 609 days since the last update, the content of the article may be outdated.

场景

之前课题组就有一个磁盘阵列,大概是2018年购置的,raid6的阵列,一共130TB的净存储空间。实话说已经不小了,奈何GPM DPR和ENV的数据太过巨大,原始数据迅速就塞满了,后来大家就到处找空间。我做一次反演,原始数据倒要分好几段存储,苦不堪言。
这次又添置了一个新的阵列,瞬间富裕起来了。36*12T的raid6,6块用于热备份,净空间有328T。
预装的系统为 Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-58-generic x86_64),大爱ubuntu。

要立即用起来,那就要挂载到计算节点上。之前是学校超算的老师过来操作的。当时不在场,小磁盘挂载还是操作过的,决定自己来。
机房的结构大致是这样的,机柜之间有一些飞线。pdu使用的美标,没有画出来,但是加机器时需要提前准备好特用的电源线。
机架结构

机架结构

计算节点和存储阵列的网络关系如下,node01node05是可以独立登录的,拥有静态互联网IP,可以校内访问。
两个Raid阵列也是可以校内登录的。所有节点和阵列使用静态局域网ip地址进行通讯。

集群网络

集群网络

dataserver2有两个网线,一根接校园网交换机,自动获取ip 222.195.xxx.xxx。另一根插在局域网交换机上。


目前的任务:
1. 开启openssh服务
2. 设置静态局域网ip
3. 设置NFS系统共享

设置远程登录

cmd
user@dataserver2:~$sudo apt install openssh-server
user@dataserver2:~$sudo service ssh start|restart|status

user@dataserver2:~$ps -e | grep ssh
967 ? 00:00:00 sshd
2000 ? 00:00:00 ssh-agent

设置开机启动服务
user@dataserver2:~$sudo systemctl enable ssh

这个时候一般就可以远程登录到22端口了,如果失败,无非是去配置中修改允许远程登录,允许密码登录等。

cmd
[C:\~]$ ssh usr@222.195.xxx.xxx

网络通远程登录

如果需要远程上网,需要登录学校网络通,LUG@USTC提供了各种版本的登录脚本。

一般wget是自带的,所以用这个,更多方式请访问【USTC 网络通脚本】

cmd
wget --post-data="name=user&password=passwd&cmd=set&type=1&exp=0" http://wlt.ustc.edu.cn/cgi-bin/ip -O -

#type :出口
#exp = 0 :永久 120 :动态 3600: 1小时 14400 :4小时 39600 :11小时 50400: 14小时

设置静态子网IP

校园网的IP地址是用于ssh远程登录用的,所以对于集群来说意义不大,可以暂时不用设成静态的。
但是局域网的ip就必须是静态的,否者变化会导致机器之间互联失败。

cmd
user@dataserver2:~$ sudo apt install net-tools
user@dataserver2:~$ ifconfig
user@user-RS540-E9-RS36-E:~$ ifconfig
enp23s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast xxx.xxx.xxx.255
inet6 xxxx:xxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x0<global>
inet6 xxxx:xxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x0<global>

enp23s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether xx:xx:xx:3x:8x:ax txqueuelen 1000 (以太网)
......

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
......

两个网卡:

  • enp23s0f0连接了互联网,有自动获取的IPv4 和IPv6地址,掩码,网关等。
  • enp23s0f1连接到局域网,没有IP地址,这里需要手动配置。

我选择的是在ubuntu的网络界面的手动的配置,参数如下:

选择手动
地址:192.168.1.106
子网掩码:255.255.255.0
网关:192.168.1.1
首选DNS服务器:192.168.1.1
备用DNS服务器:192.168.1.1

如果用脚本配置,ubuntu 17.10 之前采用的网络配置是编辑/etc/network/interfaces

plaintext
auto lo
iface lo inet loopback

auto enp23s0f1
iface enp23s0f1 inet static
address 192.168.1.106
netmask 255.255.255.0
gateway 192.168.1.1

然后重启网络sudo /etc/init.d/networking restart

这种方式我在在20.04版本中使用enp23s0f1直接没了,网上的经验设置一堆东西,裂开。。。

ubuntu 18.04开始在改成netplan方式,配置写在/etc/netplan/01-netcfg.yaml或者类似名称的yaml文件里。
修改yaml配置文件

yml
network:
ethernets:
enp23s0f1: #配置的网卡的名称
addresses: [192.168.1.l06/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.1.1 #网关地址
nameservers:
addresses: [192.168.1.1,192.168.1.1] #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
version: 2
renderer: networkd #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd

配置生效

cmd
$sudo netplan apply
$ifconfig
enp23s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.106 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8a1b:f67b:658a:b5d prefixlen 64 scopeid 0x20<link>

NFS配置

下面的内容就是之前一篇文章说过的,但是要更细。
给dataserver2配置nfs文件

cmd
$sudo apt install nfs-kernel-server
$sudo vim /etc/exports
##添加
/home/d1 192.168.1.1/24(rw,no_root_squash,async,no_subtree_check)

/home/d1就是要共享出去的磁盘。
磁盘阵列是通过UUID(Universally Unique Identifier)开机识别挂载在/home/d1下的,如下。挂载点有点迷惑,懒得改了。

plaintext
usr@dataserver2:~$ cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb3 during installation
UUID=6a78e337-c489-4e02-89b4-475082eecc20 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sdb1 during installation
UUID=dc675322-a343-4f30-b6d2-dae3b520b031 /boot ext4 defaults 0 2
# /home was on /dev/sdb4 during installation
UUID=2409b86a-5035-41d1-88be-3e4ba8f24a8e /home ext4 defaults 0 2
# /home/d1 was on /dev/sda1 during installation
UUID=a5798281-8081-4ce6-b495-1d27412e6125 /home/d1 xfs defaults 0 0
# swap was on /dev/sdb2 during installation
UUID=0b70f6a0-4b4e-48b6-a12c-fa710d085c39 none swap sw 0 0

关于(rw,no_root_squash,async,no_subtree_check)配置参数可以参考【NFS exports参数说明】

192.168.1.1/24也就是192.168.1.1/255.255.255.0
ip地址192.168.1.1192.168.1.255段所有的地址和子网掩码255.255.255.0的与运算结果都是相同的。
由于192.168.1.1是路由器的地址,192.168.1.255广播地址,这两个地地址已经被占用。
192.168.1.2-192.168.1.254都可以访问你。如果是255.255.255.255的话,代表这个网段只有你一个主机,任何人都访问不了你

生效sudo exportfs -ra

添加机器别名,nfs共享

进入计算节点node01,按照局域网ip地址给dataserver2 添加别名。

cmd
$cat /etc/hosts
127.0.0.1 localhost.localdomain localhost.localdomain localhost4 localhost4.localdomain4 localhost
::1 localhost.localdomain localhost.localdomain localhost6 localhost6.localdomain6 localhost
192.168.1.100 node00
192.168.1.101 node01
192.168.1.102 node02
192.168.1.103 node03
192.168.1.104 node04
192.168.1.105 node05
192.168.1.201 dataserver1
192.168.1.106 dataserver2

正常情况应该是保存之后立即生效。此后就可以在node01下使用dataserver2的别名了,比如ssh usr@dataserver2
可以看到之前的计算节点和阵列都是在一个C类地址段内,按照255.255.255.0的掩码是可以互相访问的。

创建挂载点sudo mkdir /data04
开启nfs共享sudo mount -t nfs dataserver2:/home/d1 /data04

plaintext
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 30G 7.2G 21G 26% /
tmpfs 63G 84K 63G 1% /dev/shm
/dev/sda3 74G 95M 70G 1% /localdisk
node00:/home 74G 58G 13G 83% /home
node00:/data01 11T 9.4T 358G 97% /data01
node00:/data02 3.6T 3.3T 167G 96% /data02
node00:/data03 3.6T 3.0T 465G 87% /data03
dataserver1:/data00 131T 122T 2.4T 99% /data00
/dev/sdb1 1.9T 1.2T 726G 62% /mnt/g2t
dataserver2:/home/d1 328T 2.4T 326T 1% /data04

开机挂载

编辑开机挂载信息,追加/data04

plaintext
#cat /etc/rc.d/mount.sh
mount -t nfs -o nfsvers=3 node00:/home /home
mount -t nfs -o nfsvers=3 node00:/data01 /data01
mount -t nfs -o nfsvers=3 node00:/data02 /data02
mount -t nfs -o nfsvers=3 node00:/data03 /data03
mount -t nfs -o proto=udp dataserver1:/data00 /data00
mount -t nfs -o proto=udp dataserver2:/home/d1 /data04

这个脚本是自己创建的,引用于/etc/rc.d/rc.local开机执行

plaintext
#cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/bin/sh /etc/rc.d/mount.sh

写得比较乱,以后再整理,目的是以后维护知道自己怎么搞的。


ubuntu固定内网ip地址
USTC 网络通脚本
NFS exports参数说明