Lustre 分布式并行文件系统部署

博客作者:联系请点击,搬运不易,希望请作者喝咖啡,可以点击联系博客作者

一、Lustre简介

Lustre 是一个具有高可用、高性能、可扩展的分布式并行文件系统。主要由 Manage Server、Meta Data Server 和 Data Server 组成。详细介绍可以参见 Lustre 官网

常用命令

  • modprobe lustre:加载Lustre模块

  • lustre_rmmod:去除Lustre模块

  • lctl:通过ioctl接口直接控制Lustre属性,允许调整相关的不同配置、管理和调试等属性。

    • lctl lustre_build_version:显示Lustre版本

    • lctl list_nids:显示网络ID情况

    • lctl list_param:显示配置参数

    • lctl dl:显示所有文件系统组件

  • lnetctl:控制和显示网络信息

    • lnetctl net show:显示网络信息

    • lnetctl net add --net tcp0 --if eth0:添加网络

    • lnetctl net add --net tcp0 --if eth0:添加网络

    • lnetctl net del --net tcp0:删除网络

    • lnetctl route show:显示路由信息

  • lfs:主要对与文件相关的属性进行配置及查询

    • lfs df:客户端上运行时,显示各MDT、OST等空间占用情况

    • lfs mdts /home:客户端上运行时,显示/home使用的MDT情况

    • lfs osts /home:客户端上运行时,显示/home使用的OST情况

  • tunefs.lustre:在服务端运行,显示或调整mkfs.lustre生成的Lustre目标磁盘配置

    • tunefs.lustre /dev/mapper/mpathb:显示磁盘信息

    • tunefs.lustre --erase-params --param="failover.node=192.168.100.1@tcp0:192.168.100.2@tcp0" /dev/mapper/mpathb:修改配置

    • tunefs.lustre --writeconf /dev/mapper/mpathb:将修改后的配置写入

  • 多挂载保护(Multiple-Mount Protection)

    • tune2fs -O mmp /dev/block_device:禁止块设备同时被多个节点mount

    • tune2fs -O ^mmp /dev/block_device:允许块设备同时被多个节点mount

  • 强制卸载

    • umount -f /public :系统无进程夯住,执行强制卸载命令

    • umount -f /home

集群管理

这个命令必须在MGS上运行,查询Lustre文件系统中的所有节点

lctl get_param mgs.MGS.live.*

这个命令必须在MGS上运行,获取所有OST节点的名称和状态

lctl get_param lov.*-mdtlov.target_obd

lctl dl命令获取挂载的Lustre设备列表,并查看运行过程

lctl dl

在客户端查询挂载目录,获取所有OST节点的名称和状态

lfs osts /public

在客户端查询所有OST挂载情况及使用量

lfs df -h

在客户端或者MDT节点上激活运行完好,状态是 INACTIVE 的OST节点,通过lctl dl 命令获取设备号

lctl --device 7 activate

lctl deactivate命令使完整的 OST 脱机停用

lctl --device 7 deactivate

Lustre文件系统损坏,恢复操作

参考文档

https://www.cnblogs.com/zl-py/p/11274562.html

第一步获取设备列表

lctl dl

第二步查看损坏OST节点的配置信息

lctl get_param osc.lustre-OST006a-osc-MDT0000.max_create_count
lctl get_param osc.lustre-OST006a-osc-MDT0000.active

第三步修改OST节点的配置信息,把active 和max_create_count的值都设置为0

lctl set_param osc.lustre-OST006a-osc-MDT0000.max_create_count=0
lctl conf_param lustre-OST006a-osc-MDT0000.active=0
lctl --device 11 deactivate

第四步再次查看状态由UP变为IN

lctl dl

第五步再将磁盘格式化为lustre格式

备注: --writeconf 必要参数,如果lustre版本是最新版的可以将--writeconf 替换为--replace

mkfs.lustre --fsname=lustre --reformat --ost --mgsnode=192.168.20.102@o2ib  --index=106 /dev/sdb1

第六步再次挂载ost

mount -t lustre  /dev/sdb1 /mnt/ost

第七步在mds节点上将active和max_create_count 恢复到原来的值

lctl set_param osc.lustre-OST006a-osc-MDT0000.max_create_count=20000
lctl conf_param lustre-OST006a-osc-MDT0000.active=1
lctl --device 11 activate

第八步在管理节点或者客户重新挂载即可

网络检测(LNet)

lctl ping <nids>
列如:

测试连通性

lctl ping 192.168.20.102@o2ib

查询路由配置

lnetctl net show

二、Lustre 安装

Lustre 主要由 MGSMDSOSSClient 组成

本次部署方案为:配置MGS, MDS为一台,9台 OSS 和36台 客户端 。

一、服务端软件安装

一、添加YUM仓库,在/etc/yum.repos.d/目录下创建 lustre.repo文件

注意:设置YUM源,需要查询关于Lustre支持的内核列表,请参阅Lustre的变动日志

IB网络版YUM源

vim /etc/yum.repos.d/lustre.repo 

[lustre-server]
name=lustre-server
baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.12.8-ib/MOFED-4.9-4.1.7.0/el7/server
exclude=*debuginfo*
gpgcheck=0
enabled=1
[lustre-client]
name=lustre-client
baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.12.8-ib/MOFED-4.9-4.1.7.0/el7/client
exclude=*debuginfo*
gpgcheck=0
enabled=1
[e2fsprogs-wc]
name=e2fsprogs-wc
baseurl=https://downloads.whamcloud.com/public/e2fsprogs/latest/el7
exclude=*debuginfo*
gpgcheck=0
enabled=1

TCP网络版YUM源

[lustre-server]
name=lustre-server
baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.12.8/el7/server/
exclude=*debuginfo*
gpgcheck=0
enabled=1
[lustre-client]
name=lustre-client
baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.12.8/el7/client/
exclude=*debuginfo*
gpgcheck=0
enabled=1
[e2fsprogs-wc]
name=e2fsprogs-wc
baseurl=https://downloads.whamcloud.com/public/e2fsprogs/latest/el7
exclude=*debuginfo*
gpgcheck=0
enabled=1

二、安装 epel 源:

yum -y install epel-release

三、删除相关软件包,清除yum源,更新内核

yum remove linux-firmware kernel-tools-libs
yum clean all
yum update

四、安装 e2fsprogs :

yum --nogpgcheck --disablerepo=* --enablerepo=e2fsprogs-wc install -y e2fsprogs

四、安装带Lustre补丁的内核包。通过禁用OS仓库,确保为内核包选择Lustre仓库:

yum --nogpgcheck --disablerepo=base,extras,updates --enablerepo=lustre-server install -y kernel kernel-devel kernel-headers kernel-tools kernel-tools-libs kernel-tools-libs-devel

重启机器:

reboot

安装LDISKFSkmod和其他Lustre软件包

yum --nogpgcheck --enablerepo=lustre-server install -y kmod-lustre kmod-lustre-osd-ldiskfs lustre-osd-ldiskfs-mount lustre lustre-resource-agents

加载相关的内核模块:

modprobe -v lustre

如有错误,排查错误日志命令:

dmesg

查看安装的版本

lctl get_param version

在继续配置LNet之前,需要从内核卸载Lustre模块

lustre_rmmod

二、客户端软件安装

Lustre客户端软件包括一个包含内核模块的包,以及用于管理客户端软件的用户空间工具的其他包,Lustre客户端不需要“带Lustre补丁”的内核,这简化了安装。

注意:关于Lustre支持的内核列表,请参阅Lustre的变动日志

yum update

重启机器:

reboot

查看内核版本

uname -r

安装 Lustre Client 相关软件包:

yum --nogpgcheck --enablerepo=lustre-client install -y kmod-lustre-client lustre-client

加载内核模块:

modprobe -v lustre

查看安装的版本

lctl get_param version

验证后,从内核卸载Lustre模块:

lustre_rmmod

如下步骤不是必须操作,如报错卸载重新安装可参考如下步骤参考教程:(https://blog.csdn.net/qq_25605377/article/details/85845139)

yum remove -y "*lustre*"
yum --enablerepo=lustre-server install -y "*OFED*" "*mlnx*" ibutils
yum --nogpgcheck --disablerepo=* --enablerepo=e2fsprogs-wc install -y e2fsprogs
yum -y remove kmod-mlnx-ofa_kernel-4.9-OFED.4.9.4.1.7.1.x86_64
yum --nogpgcheck --enablerepo=lustre-server install -y kmod-lustre kmod-lustre-osd-ldiskfs lustre-osd-ldiskfs-mount lustre lustre-resource-agents

注意:卸载完成,在安装OFED后必须重启,否则配置网络无法识别o2ib内核模块

reboot

三、Lustre(LNet网络配置)

一、关闭 SELinux 和配置防火墙

setenforce 0            
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

systemctl stop firewalld
systemctl disable firewalld

二、服务端LNet网络配置步骤:

lustre_rmmod
modprobe -v lnet
lnetctl lnet configure

lnetctl net add --net o2ib --if ib0
lnetctl net add --net tcp --if eno3
lnetctl net show

lnetctl export > /etc/sysconfig/lnet.conf
systemctl enable lnet

三、客户端LNet网络配置步骤:

lustre_rmmod
modprobe -v lnet
lnetctl lnet configure

lnetctl net add --net o2ib --if ib0
lnetctl net add --net tcp --if em1
lnetctl net show

lnetctl export > /etc/sysconfig/lnet.conf
systemctl enable lnet

静态配置

IB网络版

vim /etc/modprobe.d/lustre.conf
options lnet networks="o2ib(ib0),tcp(em1)"

TCP网络版

vim /etc/modprobe.d/lustre.conf
options lnet networks="tcp(em1)"

三、Lustre 服务端部署

注意:所有部署操作,必须在配置完LNet网络之后进行否则导致无法连接、挂载。

一、磁盘分区

注意:MGS和MDS 节点及OSS节点分区命令一致,初始化和挂载命令不同。

#  查看系统未分区的磁盘块设备
lsblk 

# fdisk 无交互进行分区
vim partition.sh

#!/bin/bash
fdisk -u /dev/sdb << EOF
g
n
1


w
EOF

chmod +x partition.sh
bash partition.sh

分区完成后,在管理服务器上格式化磁盘为管理服务(MGS)和元数据服务(MDS)

其中 fsname 指定了文件系统名称,index 表示 MDT 的序号,每个 MDT 或者 OST 的序号必须唯一。

二、MGS和MDS 节点部署

MGS和MDS 节点同一台服务器格式化如下:

mkfs.lustre --fsname=lustre --mdt --mgs --index=0 --reformat /dev/sdb1

MGS和MDS 创建挂载目录,启动服务并挂载

mkdir -p /mnt/mg
mount.lustre  /dev/sdb1 /mnt/mg

写入开机挂载

注意:只能执行一遍,/etc/fstab 文件如有错误,可能导致无法开机

MGS和MDS 节点

echo "/dev/sdb1  /mnt/mg                              lustre  defaults,_netdev        0 0" >> /etc/fstab

三、OSS节点部署

OSS节点格式化如下,index序号需要变更:

mkfs.lustre --fsname=lustre --reformat --ost --mgsnode=192.168.20.102@o2ib0  --index=205 /dev/sdb1

OSS 创建挂载目录,启动服务并挂载

mkdir -p /mnt/ost
mount -t lustre  /dev/sdb1 /mnt/ost

写入开机挂载

注意:只能执行一遍,/etc/fstab 文件如有错误,可能导致无法开机

OSS节点

echo "/dev/sdb1  /mnt/ost                      lustre  defaults,_netdev        0 0" >> /etc/fstab

四、Lustre 客户端部署

注意:所有部署操作,必须在配置LNet网络完成之后进行否则导致无法连接、挂载。

一、客户端挂载:

注意:批量挂载客户端之前,需要先手动在某一台客户端挂载,创建对应的其他下层挂载目录

mount.lustre 192.168.20.102@o2ib:/lustre /mnt
mkdir -p /mnt/home  /mnt/public
umount /mnt
sed -i '11s/^/#/' /etc/fstab
mkdir -p /public
mount -t lustre 192.168.20.102@o2ib:/lustre/public /public
mount -t lustre 192.168.20.102@o2ib:/lustre/home /home
mount -t lustre 192.168.10.102@tcp:/lustre/public /public
mount -t lustre 192.168.10.102@tcp:/lustre/home /home

写入开机挂载

注意:只能执行一遍,/etc/fstab 文件如有错误,可能导致无法开机

IB网络版

echo "192.168.20.102@o2ib:/lustre/public /public lustre  ro,defaults,_netdev,noauto,x-systemd.automount,x-systemd.requires=lnet.service        0 0" >> /etc/fstab
echo "192.168.20.102@o2ib:/lustre/home /home lustre  defaults,_netdev,noauto,x-systemd.automount,x-systemd.requires=lnet.service      0 0" >> /etc/fstab

TCP网络版

echo "192.168.10.102@tcp:/lustre/public /public lustre  ro,defaults,_netdev,noauto,x-systemd.automount,x-systemd.requires=lnet.service        0 0" >> /etc/fstab
echo "192.168.10.102@tcp:/lustre/home /home lustre  defaults,_netdev,noauto,x-systemd.automount,x-systemd.requires=lnet.service      0 0" >> /etc/fstab

五、安装批量部署工具

所有部署调试完毕,执行多台批量部署,其中一些参数,细节,记得在批量部署时记得调整

Ansible 语法学习参考ll

 安装 yum install -y ansible
 验证 ansible --version
- 修改配置 
vim /etc/ansible/ansible.cfg 
14 inventory      = /etc/ansible/hosts                       # 主机定义分组
71 host_key_checking = False                                 # ssh 主机 key 验证配置参数,不需要输入yes,如果为 True,等待输入 yes
375 ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d # 注意:ConrolPersist=5d, 这个参数是设置整个长连接保持时间为5天。
400 pipelining = True                                        # 加速 Ansible 执行速度,如果不使用 sudo,建议开启。
vim /etc/ansible/hosts                                       # 定义分组
[master]
192.168.10.101 ansible_ssh_user="root" ansible_ssh_pass="I0XJ85nz62SzndrR"
[oss]
192.168.10.[102:110] ansible_ssh_user="root" ansible_ssh_pass="I0XJ85nz62SzndrR"
[client]
192.168.10.[11:46]  ansible_ssh_user="root" ansible_ssh_pass="I0XJ85nz62SzndrR"

一、批量免密

# ssh-keygen免密生成秘钥,非交互式
# -t 秘钥类型
# -q 安静输出
# -P 提供密语
# -f 生成路径

ssh-keygen -t rsa -q -P "" -f ~/.ssh/id_rsa

# 编写免密剧本
vim ssh-keyadd.yml

---
- hosts: all
  gather_facts: no

  tasks:
  - name: install ssh key
    authorized_key: user=root
                    key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
                    state=present
                    
# 执行如下命令进行批量免密

ansible-playbook ssh-keyadd.yml

二、批量修改主机名

vim hostname.yml

---
- hosts : client
  remote_user : root
  tasks :
  - name : "批量修改主机名"
    shell : hostname
  - name : show ip
    command : ip a
  - hostname : name=c-96-256-worker000{{ ansible_default_ipv4.address.split('.')[-1] }}
  
ansible-playbook hostname.yml

三、批量获取主机名和IP重定向写入/etc/hosts文件

vim hosts.yml

---
- hosts: all
  remote_user: root
  vars:
    - name: "hezhiqiang"
  tasks:
    - name: "批量获取主机名和IP重定向写入/etc/hosts文件"
      shell: echo {{item.key}}     {{item.value.ansible_hostname}} >> /etc/hosts
      with_dict: "{{hostvars}}"
      no_log: True
      #loop_control:
         #label: ""
    - name: "任务结束"
      shell: wc -l /etc/hosts
      shell: echo "--结束--"

      
 
 ansible-playbook hosts.yml

批量安装IB网络驱动程序,及初始化安装一些依赖

注意:下载驱动版本一定要下载对应系统版本否则内核无法加载,OFED驱动下载网站

vim InfiniBand.yml

---
- hosts: client
  remote_user: root
  gather_facts: false
  tasks:
  - name: "配置yum源"
    shell: "yum -y install wget"
    shell: "wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo"
    shell: "wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo"
  - name: "安装软件"
    yum:
      update_cache: yes
    yum:
      name: epel-release,perl,perl-devel,gcc,gtk2,atk,cairo,libxml2-python,createrepo,pciutils,gcc-gfortran,tcsh,libusbx,lsof,tcl,fuse-libs,tk,vim,telnet,htop,tree,numactl,redhat-lsb,net-tools.x86_64,python-devel,kernel-devel-3.10.0-1160.59.1.el7.x86_64,redhat-rpm-config,rpm-build
      state: present
  - name: "卸载相关软件"
    yum:
      name: linux-firmware,kernel-tools-libs
      state: removed
  - name: "清除缓存"
    yum:
      update_cache: yes
  - name: "yum update 更新"
    yum:
      name: "*"
      state: latest
  - name: "重启Linux服务器"
    reboot:
      pre_reboot_delay: 300
      test_command: uptime
  - name: "复制相关文件到目标服务器"
    copy:
      src: "{{ item.src }}"
      dest: "{{ item.dest }}"
      owner: root
      group: root
      mode: 755
    with_items:
       - {src: "/tmp/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.6-x86_64.iso", dest: "/tmp/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.6-x86_64.iso" }
       - {src: "/etc/yum.repos.d/lustre.repo", dest: "/etc/yum.repos.d/lustre.repo" }
  - name: "挂载驱动安装程序"
    shell: "umount -f /mnt "
    shell: "mount -o loop /tmp/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.6-x86_64.iso /mnt"
  - name: "安装驱动程序"
    shell: "/mnt/mlnxofedinstall --add-kernel-support"
  - name: "卸载驱动安装程序"
    shell: "umount /mnt"
  - name: "启动IB驱动"
    shell: "service openibd start"
  - name: "设置IB驱动开机自启动"
    shell: "systemctl enable openibd.service"
  - name: "启动子网管理器 opensmd "
    shell: "service opensmd start"
  - name: "设置子网管理器 opensmd 开机启动"
    shell: "chkconfig opensmd on"
  - name: "查看 HCA 端口状态,若 State 为 Active,则表示正常"
    shell: "ibstat"

      
      
ansible-playbook InfiniBand.yml

IB网络数据交互测试

参考文档

https://blog.csdn.net/ljlfather/article/details/102925954

https://blog.csdn.net/bandaoyu/article/details/115798693

服务端执行如下命令
ib_write_bw

客户端执行如下命令
ib_write_bw -d mlx4_0  -a -F 192.168.20.12
#编写剧本,进行批量安装软件、分区、并启动OST服务加入集群
vim oss.yml
---
- hosts: oss
  remote_user: root
  gather_facts: False
  vars:
    - list: [2,3,4,5,6,7,8,9,10]
  tasks:
    - name: this is loop
      debug: msg="{{ item }}"
      with_items: '{{list}}'
    - name:   
      shell:"yum --nogpgcheck --enablerepo=lustre-server install -y kmod-lustre kmod-lustre-osd-ldiskfs lustre-osd-ldiskfs-mount lustre lustre-resource-agents"
    - name: "分区"
      shell: bash /root/partition.sh
    - name: "创建挂载目录"
      shell: mkdir -p /mnt/ost
    - name: "循环传参"
    - name:  "格式化磁盘"
      shell: mkfs.lustre --fsname=lustre --reformat --ost --mgsnode=192.168.10.101 --index="{{list}}" /dev/sdb1
    - name: "启动OSS服务,加入集群"
      shell: mount -t lustre /dev/sdb1 /mnt/ost
    - name:"写入开机挂载"
      shell: echo "/dev/sdb1  /mnt/ost                              lustre  defaults,_netdev        0 0" >> /etc/fstab

# 执行如下命令进行批量安装软件、分区、并启动OST服务加入集群

ansible-playbook -i /etc/ansible/hosts -f oss.yml
# 注意:批量挂载客户端之前,需要先手动挂载,创建对应挂载目录

mount.lustre 192.168.10.101@o2ib0:/lustre /mnt
mkdir -p /mnt/home  /mnt/public
umount /mnt
# 编写剧本,进行批量安装客户端、并加入集群

vim client.yml
---
- hosts: client
  tasks:
    - name: "安装软件"
      yum:
        name: *
        state: latest
      yum:  
        update_cache: yes
    - name: "重启Linux服务器" 
      reboot:
        pre_reboot_delay: 300
        test_command: uptime
    - name: "批量安装客户端"
      shell:"yum --nogpgcheck --enablerepo=lustre-client install -y kmod-lustre-client lustre-client"
    - name: "创建挂载目录"
      shell: mkdir -p /public
    - name: "注释/home旧挂载"
      shell: sed -i '11s/^/#/' /etc/fstab
    - name: "配置lustre 网络"
      shell: "modprobe -v lnet"
      shell: "lnetctl lnet configure"
      shell: "lnetctl net add --net tcp1 --if em1"
      shell: "lnetctl net add --net o2ib0 --if ib0"
    - name: "为避免主机被重启,导入LNet网络配置"
      shell: "lnetctl export /etc/lnet.conf"
    - name: "启动LNet网络"
      shell: "lctl network up"
    - name:"挂载lustre并设置开机自启动"
      shell: echo "192.168.20.102@o2ib:/lustre/public /public lustre  ro,defaults,_netdev        0 0" >> /etc/fstab
      shell: echo "192.168.20.102@o2ib:/lustre/home /home lustre  defaults,_netdev        0 0" >> /etc/fstab
      shell: umount /home
      shell: mount -a

# 执行如下命令进行进行批量安装客户端、并加入集群

ansible-playbook -i /etc/ansible/hosts -f client.yml

四、批量获取内网IP并修改IB 网段

vim ip.yml

---
- hosts : client
  remote_user : root
  tasks :
  - name : "批量获取内网IP"
    shell : " sed -i s/IPADDR=192.168.20.11/IPADDR={{ ansible_all_ipv4_addresses | ipaddr('private') | first }}/g /etc/sysconfig/network-scripts/ifcfg-ib0 "
  - name : "批量修改网段"
    shell : " sed -i 4s/30/20/g /etc/sysconfig/network-scripts/ifcfg-ib0 "
  - name : "批量重启网络"
    shell : "systemctl restart network"
    
    
ansible-playbook ip.yml

六、常见问题处理

问题排查参考连接:

https://blog.51cto.com/u_9099998/2445847

此问题在客户端挂载时遇到
报错1:
[root@c-128-256-worker000140 ~]# modprobe -v lustre
insmod /lib/modules/3.10.0-1160.59.1.el7.x86_64/extra/lustre/net/libcfs.ko 
insmod /lib/modules/3.10.0-1160.59.1.el7.x86_64/extra/lustre/net/lnet.ko 
insmod /lib/modules/3.10.0-1160.59.1.el7.x86_64/extra/lustre/fs/obdclass.ko 
insmod /lib/modules/3.10.0-1160.59.1.el7.x86_64/extra/lustre/fs/ptlrpc.ko 
modprobe: ERROR: could not insert 'lustre': Cannot allocate memory
1.
2.
3.
4.
5.
6.

错误原因:服务器CPU,内存分配不匀,导致部分CPU未分配内存,无法加载lustre内核模块,表现如下

[root@c-128-256-worker000140 ~]# numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29
node 0 size: 0 MB
node 0 free: 0 MB
node 1 cpus: 10 11 12 13 14 15 16 17 18 19 30 31 32 33 34 35 36 37 38 39
node 1 size: 32654 MB
node 1 free: 30680 MB
node distances:
node   0   1 
  0:  10  20 
  1:  20  10
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

解决方案:协调IDC 机房同事重新插拔内存后调整状态,如果不行建议排查硬件故障

[root@c-128-256-worker000140 ~]# numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29
node 0 size: 16270 MB
node 0 free: 15480 MB
node 1 cpus: 10 11 12 13 14 15 16 17 18 19 30 31 32 33 34 35 36 37 38 39
node 1 size: 16384 MB
node 1 free: 15504 MB
node distances:
node   0   1 
  0:  10  21 
  1:  21  1shelllshe'l'lshell

最后更新于