ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ubuntu生信工作站从零搭建:系统安装、硬盘挂载与conda环境配置

Ubuntu生信工作站从零搭建:系统安装、硬盘挂载与conda环境配置 前阵子帮实验室搭了一台用于生信分析的Ubuntu工作站从系统安装一路折腾到conda环境跑通正好借着这个完整流程把“LinuxUbuntu系统安装、硬盘挂载、用户创建、生信分析配置”这条从零到一的路子完整捋一遍。做生信的人应该都清楚分析环境的底子是立命之本——装好一台管理妥当的Linux工作站后续的RNA-seq、WGS流程才不会在第一步就掉链子。这篇文章适合三类人看刚进实验室、第一次接触服务器的新手研究生准备把手头旧电脑或新工作站折腾成生信分析机的开发者以及已经装过系统但每次挂盘、建用户都要现搜命令的“半熟练工”。我尽量把每一步的做法、背后的逻辑、容易踩的坑都写出来不说废话直接给能落地的东西。1. 生信机器选Ubuntu比CentOS省心在哪儿很多生信服务器运维教程还在用CentOS但我觉得这两年新装的机器Ubuntu LTS才是更省心的选择。核心原因是软件生态生信常用的 conda、R、Python 数据分析栈以及 fastqc、samtools、bwa 这类工具链对 Ubuntu 系的支持明显更积极。Bioconda 官方文档里给的安装示例大多默认能在 Ubuntu 上跑通依赖缺失时 apt 能补的库也最全基本搜一个报错名就能找到对应的apt install包。对比下来各家的情况大致是这样发行版软件新鲜度conda/R 兼容性国内源便利度适合场景Ubuntu 22.04 LTS高apt和conda同样活跃最好阿里云、清华源镜像同步快生信单机、小型课题组工作站Debian 12稳定但部分工具版本偏旧好源也齐全追求纯稳定、不追新版本的人Rocky/AlmaLinux偏保守兼容RHEL生态需要多花时间处理依赖源较全已有RHEL运维习惯、跑企业级集群的openSUSE一般能用但社区资料少一般不推荐新手尝试国内网络环境下Ubuntu 的 apt 源和 conda 源都有很成熟的镜像服务这是非常现实的考量。实验室服务器如果安装在教育网或普通宽带上安装系统时选择国内镜像源后续下载 R 包和生信工具的速度差距是十倍以上。另一个容易纠结的问题是装 Server 版还是 Desktop 版。如果这台机器是当服务器用我直接推荐 Ubuntu Server 版。桌面版会多占用 1~2GB 内存跑图形界面对生信分析来说这些内存不如省下来给比对、组装这类吃内存的环节。日常操作用 SSH 远程登录完全够了必要时也可以后续单独装一个轻量桌面。当然如果你想把它当日常开发工作机一边写代码一边看结果图表装 Desktop 版也行只是心里要有数GUI 不是免费的它占用的资源本来可以给分析任务。2. Ubuntu 22.04 LTS 安装实操启动盘到基础加固2.1 启动盘制作最容易翻车的一步制作安装U盘看起来简单实际上很多人在这一步就卡住了。Windows 下我建议用 Rufus 或 balenaEtcher。Rufus 选择 Ubuntu 的 ISO 镜像后要注意写入方式选“DD镜像模式”而不是默认的“ISO镜像模式”。这个细节不少人忽略结果做出来的启动盘插上电脑直接各种乱码或无法引导。如果用dd命令在已有的 Linux 或 macOS 机器上做启动盘命令是sudo dd ifubuntu-22.04.3-live-server-amd64.iso of/dev/sdX bs4M statusprogress注意of后面是U盘设备名比如/dev/sdc不是分区。写错了会把整个硬盘数据抹掉执行前一定用lsblk确认好设备路径。2.2 BIOS设置与U盘引导开机进BIOS一般是 F2/Del/F10/F12关掉 Secure Boot 或开启兼容模式。Ubuntu 22.04 其实已经支持 Secure Boot 了但在部分主板上还是会出现驱动加载异常新装机求稳直接关掉。然后设置U盘优先启动保存重启进入安装界面。进入安装引导后有几个细节值得注意语言选 English 或中文都可以但服务器建议用 English后面出问题搜日志、查资料都方便。安装类型选择“Ubuntu Server”不勾选安装过程中联网下载更新装完再更新避免安装过程卡在网络环节。键盘布局默认即可。网络配置一般 DHCP 自动获取静态IP 建议系统装完后再改。2.3 手动分区把根目录和/home分开分区方案是我最想强调的部分。很多第一次装系统的人直接选“使用整个磁盘”一路回车装完也能用。但生信场景下数据量大、重装系统风险高分区规划必须提前想清楚。推荐的分区方案挂载点建议大小说明/boot/efi512MBUEFI启动必需自动创建/100GB系统盘足够放系统软件和conda环境swap与内存大小相当或减半内存64GB以下建议有内存128GB以上可选择16GB/data剩余所有空间单独数据盘存放原始数据、分析结果、参考基因组根分区没必要给太大。很多人习惯把所有空间都给/觉得省事实际上后面数据一多系统盘满了会导致 apt 装不了软件、系统日志写不入、服务异常处理起来非常被动。数据单独挂/data系统坏了重装数据不受影响重装后重新挂载一下就能继续工作。在手动分区界面记得为/data新建挂载点。如果安装时还没插数据盘也可以先在系统根分区留好逻辑卷或未分配空间装完再用fdisk操作。我个人的经验是机器到手先确认有几块盘系统盘和数据盘分开规划能避免未来很多麻烦。2.4 镜像源与基础软件配置安装过程中会要求配置Ubuntu镜像源默认是archive.ubuntu.com国内网速不理想。直接改成清华或阿里云镜像https://mirrors.tuna.tsinghua.edu.cn/ubuntu/系统重启进入终端后先做一轮基础更新和工具安装sudo apt update sudo apt upgrade -y sudo apt install -y curl wget git vim htop tree build-essentialbuild-essential是编译工具链后面装 R 包或者从源码编译生信软件时几乎是必须的。htop用来实时监控资源占用生信任务跑起来后你会经常用到它。3. 数据盘挂载四步走分区、格式化、挂载、开机自动挂载生信工作站几乎都会配独立的数据盘。系统装完后第一件事就是把数据盘挂载好而不是继续在系统盘里建一堆目录堆数据。3.1 确认硬盘是否识别先看系统是否已经认到新硬盘lsblk如果有一块/dev/sdb或/dev/nvme0n1之类的设备且没有分区说明硬盘已经识别可以开始分区。如果lsblk里没看到检查数据线、电源线或者是否需要更新阵列卡驱动。3.2 分区与格式化以一块 8TB 数据盘/dev/sdb为例sudo fdisk /dev/sdb进入 fdisk 交互界面后依次按g创建新的 GPT 分区表n新建分区后续提示直接回车使用默认值整个磁盘分一个区w写入并退出然后把分区格式化为 ext4 文件系统sudo mkfs.ext4 /dev/sdb1为什么推荐 ext4稳定、成熟、兼容性最好生信场景下不需要折腾太多的高级特性。如果你要用超过 16TB 的单盘或者以后想上大文件、稀疏文件的场景再考虑 XFS。数据盘不是越新越好稳定第一。3.3 创建挂载点并挂载sudo mkdir -p /data sudo mount /dev/sdb1 /data到这里新盘已经可以临时使用了。注意只是临时重启后会失效。/data这个挂载点名称可以按你的使用习惯来比如/workspace、/genome、/home/data都行。我习惯用/data下面所有业务目录都在它下面扩展比如mkdir -p /data/raw /data/analysis /data/reference /data/software3.4 开机自动挂载fstab配置临时挂载之后还要设置开机自动挂载否则重启后数据盘就“消失”了。虽然可以重新 mount但生信服务器往往跑着长任务重启后如果挂载失效很容易出问题。先查看硬盘 UUIDsudo blkid /dev/sdb1然后编辑/etc/fstabsudo vim /etc/fstab在文件末尾添加一行UUID你的UUID /data ext4 defaults,nofail 0 2字段含义设备UUID挂载点文件系统类型挂载选项是否dump备份标志0为不备份fsck检查顺序根分区为1其余为2。这里有个关键参数nofail强烈建议加上。作用是即使这块盘没插好或启动时识别失败系统也能正常进入不会卡在 emergency mode。曾经就遇到过一个同事没有加nofail一次机房停电重启后系统直接进不了桌面只能进救援模式原因就是一块移动硬盘没被识别。加上nofail能避免这种尴尬。配置完执行sudo mount -a没有报错就说明 fstab 配置没问题。如果不放心可以重启一次验证。3.5 挂载后的权限规划硬盘挂载成功后默认所有者是 root普通用户无法写入。最常见的操作是把数据盘授权给某个用户或某个用户组sudo chown -R yourname:yourname /data如果你准备多人共用这台机器建议先规划好用户组再授权见下一节。另外不要图省事chmod 777一放了之后面你找谁都能写、谁都能删数据时会非常后悔。4. 多用户身份规划账号、用户组与SSH登录生信服务器基本不会一个人独占课题组里往往有学生、有协作者、还有临时访问的合作伙伴。如果所有人的操作都共用 root 或共用同一个普通账号出了问题根本查不到是谁操作的哪天有人误删一个文件夹都找不到责任人。4.1 用 adduser 创建用户别用 useradd这是新手最容易踩的坑。useradd和adduser名字很像行为差异却很大useradd是一个底层命令创建用户时默认不创建家目录、不设置密码。adduser是一个交互式脚本它会自动创建家目录、复制骨架文件、引导你设置密码和用户信息。日常创建用户直接用sudo adduser zhangshan按提示设置密码用户信息可以全部回车跳过。执行完会自动创建/home/zhangshan目录和对应的.bashrc等配置文件。如果要一次性批量创建用户可以用脚本配合newusers或循环调用useradd但那种场景一般是几十台机器统一初始化。单机工作站老老实实用adduser最顺手。4.2 赋予sudo权限与SSH登录创建完的普通用户默认没有 sudo 权限。生信分析不强制需要 sudo日常安装 conda 环境、跑比对工具都用不上。但用户有时候要安装系统级依赖这时候可以视情况加入 sudo 组sudo usermod -aG sudo zhangshan-aG的意思是 append 到附加组注意不加-a会覆盖用户已有的附加组这是个容易忽略的细节。然后配置 SSH 登录。服务器一般用密钥登录更安全也可以避免密码登录被爆破sudo apt install openssh-server # 在用户家目录创建 .ssh 目录并设置权限 sudo chsh -s /bin/bash zhangshan sudo mkdir -p /home/zhangshan/.ssh sudo chmod 700 /home/zhangshan/.ssh把你的公钥写入authorized_keyssudo vim /home/zhangshan/.ssh/authorized_keys写入公钥后设置权限sudo chown -R zhangshan:zhangshan /home/zhangshan/.ssh sudo chmod 600 /home/zhangshan/.ssh/authorized_keys权限设置非常关键。SSH 对authorized_keys文件权限很敏感如果权限过宽比如 644服务器会直接拒绝该密钥登录方便起见可以再检查下/etc/ssh/sshd_config里的PubkeyAuthentication yes。4.3 用户组与共享目录多人协作时建议按项目或课题建立用户组。比如建一个bioinfo组sudo addgroup bioinfo把需要共享数据的用户加入组sudo usermod -aG bioinfo zhangshan然后规划共享目录的所有权。例如参考基因组放在/data/reference希望课题组成员都能读sudo chown -R root:bioinfo /data/reference sudo chmod -R 775 /data/reference这样目录的所有者 root 可读写组成员 bioinfo 可读写其他人无权访问。注意目录权限中的 setgid 位设置为chmod -R 2775可以让新创建的文件自动继承组避免用户 A 创建的目录用户 B 读不了。这是多人共享目录非常实用的技巧。5. 生信分析环境搭建conda三件套与常用工具链系统装好、用户建好、数据盘挂载好接下来就是生信人最关心的分析环境配置。这个环节我强烈建议统一用 conda 管理软件环境而不是用 apt 直接装一堆生信工具。5.1 Miniconda 安装别装 Anaconda太大很多预装包你用不上还占系统盘空间。直接装 Minicondawget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh一路回车最后选择yes初始化 conda它会自动往~/.bashrc里写入初始化代码。安装完成后source ~/.bashrc conda --version看到版本号说明基础环境OK。5.2 配置国内 conda 源这一步不做后面装软件会等到天荒地老。创建或编辑~/.condarc文件channels: - conda-forge - bioconda - defaults show_channel_urls: true如果你想走清华源可以再加入清华的镜像地址。配置完执行conda clean -i清一下索引缓存。注意 conda 源的顺序有讲究conda-forge放最前面很多现代生信工具只发布在 conda-forge 或 bioconda依赖解析会更顺。如果装一些旧工具可能需要把 bioconda 放前面具体看报错再调。建议再装个 mambaconda install -n base mamba -c conda-forgemamba用 C 重写了依赖解析速度是 conda 的数倍。处理复杂环境依赖时mamba 几乎不会出现“Solving environment”卡死的情况。生信圈现在实际用 mamba 的比 conda 命令更多所以后续操作我直接用 mamba。5.3 建立独立的分析环境不要把所有工具都装在 base 环境里。RNA-seq 要 hisat2、samtoolsChIP-seq 要用 bowtie2、macs2WGS 又要 bwa、gatk装一起早晚会有依赖冲突。按项目建环境是最省心的做法conda create -n rna-seq python3.9 conda activate rna-seq mamba install -c bioconda -c conda-forge fastqc multiqc trimmomatic hisat2 samtools subread例如转录组分析流程一条命令装齐核心工具建一个宏基因组环境再装 kraken2、metaphlanconda create -n metagenome python3.8 conda activate metagenome mamba install -c bioconda -c conda-forge kneaddata fastp megahit prokka humann这种环境隔离的好处是你跑完一个项目的所有分析整个环境的工具版本是固定的后面别人复制你的流程不会因为版本不一致而结果不同。这也是科研可复现性的基本要求。5.4 R与Python环境的落地生信分析离不开 R 和 Python。R 可以直接用 conda 安装避免很多编译 R 包时的系统依赖问题conda create -n r-env r-base4.3 conda activate r-env在这个环境里用install.packages(BiocManager)安装 BiocManager再通过它安装 DESeq2、edgeR 等转录组常用的 R 包。用 conda 装 R 的好处在于R 包的很多依赖比如图形库、XML 库conda 会自动处理比裸编译省事不少。Python 环境同样用 conda 创建按需指定版本conda create -n py311 python3.11 conda activate py311 mamba install -c conda-forge numpy pandas scikit-learn matplotlib jupyter notebook不用在系统全局装一堆 Python 包按项目隔离就好。关于 pip 和 conda 混用的问题我建议以 conda 为主conda 装不了再用 pip而且优先在 conda 环境里用 pip避免污染 base。5.5 环境可用性验证跑通一个小流程环境配完不验证等于白配。我习惯在实际分析前先跑一个迷你测试取样品数据的一小段 fastq 文件跑一遍 fastqc 和 multiqc确认工具链是通的。conda activate rna-seq fastqc test_R1.fastq.gz -o /data/analysis/QC multiqc /data/analysis/QC -o /data/analysis/QC/multiqc_results能正常生成网页报告说明快速比对、质控工具能跑。然后再试一下比对工具比如 hisat2 或 bwahisat2 --version bwa 21 | head -5 samtools --version如果这些工具都能正常输出版本信息恭喜核心分析环境基本就绪。建议顺手把这些版本号记到一个env.md文件里存在/data/analysis/下后续做方法学描述时用得到。5.6 目录规范从第一天开始养成习惯环境配完之后我建议你立刻按下面的模式创建目录结构并坚持遵守/data/ ├── raw/ # 原始测序数据只读不可改动 │ ├── projectA/ │ └── projectB/ ├── analysis/ # 分析过程文件和结果 │ ├── projectA/ │ └── projectB/ ├── reference/ # 参考基因组、注释文件、索引 └── software/ # 编译安装的第三方软件不是conda管理的每个用户的脚本和笔记放在各自家目录比如/home/zhangshan/projects/projectA/scripts/。数据文件集中在/data分析结果输出到/data/analysis/projectA/。这样备份、迁移、磁盘清理都能清晰地按目录操作。生信项目数据动辄几百GB到几TB没有目录规范三个月后你自己都找不到数据在哪。6. 装完就跑不起来的常见问题与修复笔记最后这部分是我实际操作中积累下来的高频故障。每一台新机器配好后总有那么几个问题反复出现提前知道怎么救能省半天时间。6.1 开机进入 emergency mode新手最常见的故障。表现是开机后进入一个“Give root password for maintenance”的界面进不了系统。绝大多数原因是/etc/fstab写错了或者挂载的设备 UUID 变了。处理方式输入 root 密码进入维护模式执行mount -o remount,rw / vim /etc/fstab把写错的那行注释掉或改正保存退出后重启。如果找不到问题行可以一条条注释后重启试。这就是为什么前面强调nofail参数加上它很多情况根本不会进 emergency mode。6.2 新建用户无法写入共享目录用户能登录、能看目录但一创建文件就提示Permission denied。大概率是目录的组权限没设置好或者用户不在正确的组里。排查思路groups username # 查看用户属于哪些组 ls -ld /data/shared # 查看目录的属主和权限如果是目录属组不对用chown -R :groupname /data/shared改属组如果用户没在组里用usermod -aG groupname username加入然后退出重新登录生效。别怀疑是系统坏了90% 都是权限问题。6.3 conda 换源后 403/404换源后装软件报 404 或 403通常是源地址不对或者缓存混乱。先看配置conda config --show channels确认 URL 无误后清理缓存conda clean -i conda clean -a然后重新安装。如果一直用清华源注意 Anaconda 官方 API 在某些网络下有频率限制实在不行换阿里或者上海交大的源。清华源有时候也有同步延迟新软件包不是立刻就能拉到。6.4 R 包编译报错连环缺依赖R 里执行BiocManager::install(DESeq2)经常出现configure: error: libcurl library not found ERROR: configuration failed for package ‘curl’这种时候不要急着去换 R 版本先把系统依赖装齐sudo apt install -y libcurl4-openssl-dev libssl-dev libxml2-dev libfontconfig1-dev libxt-dev libharfbuzz-dev libfribidi-dev gfortran装完再重新安装 R 包绝大多数问题就解决了。R 包编译依赖系统库这是绕不过去的一环建议无论装哪台机器都先把这套基础库装上。6.5 磁盘空间爆满生信数据增长极快尤其是 intermediate 文件、临时文件很容易不知不觉把磁盘占满。排查命令df -h # 查看整体占用 du -sh /data/* # 看哪个目录占用最多 du -sh /home/* # 检查用户目录清理手段按顺序来sudo apt autoclean # 清理apt缓存 conda clean -a # 清理conda缓存和废弃包 rm -rf /data/analysis/*/tmp # 删除自己的临时目录如果情况紧急可以考虑du -xhd1 / | sort -h | tail快速定位大目录。我给实验室定的规矩是所有中间文件和临时文件明确标注删除策略原始测序数据一旦分析完毕归档到存储区分析目录只保留脚本和精简结果。6.6 用户权限失控的“救火”思路有些课题组习惯不管三七二十一chmod -R 777短时间是方便了日子久了你会遇到某个用户改了别人的文件、共享目录被删得乱七八糟、备份恢复后权限全乱。遇到这种情况我的处理方式是不要挨个调权限直接从数据存储的顶层重新规划。原始数据目录只读属主 root 或专人分析结果目录按项目分配给负责人共享参考目录组读写设置 setgid 位保证新文件自动继承权限管理要有规矩宁可前面多花 20 分钟规划也别后期三天救一次火。写在最后的一点实际体会这套从裸机到生信环境的工作流我现在走一遍大概两个多小时其中大部分时间花在等下载和编译上。最值得花心思的不是命令本身而是分区、挂载、用户组、目录规范这些“地基工程”。很多实验室的服务器用了一两年后各种凌乱基本都是在初期装机器图省事埋下的隐患。如果你正打算装一台新机器我的建议是启动盘做好后别急着装先把分区怎么分、数据目录怎么建、哪几个人要用机器、谁负责管理权限这些问题列出来再动手。前面花一小时想清楚后面能省下几十小时的查错成本。也希望这篇流水账能为准备入坑的人省点时间少走点弯路。
返回列表