linuxbio
A. bio.es是啥意思,什么作用
幻灯片 24BIO,Before in Office的缩写形式。
当前面临那些即将进入职场的人们,特别是应届学生们来说,如果找到一份适合自己的工作和如何才能在办公室政治中立于不败之地是非常重要的课题。
那么BIO应运而生,BIO主要为即将进入职场的朋友们提供就业前的咨询和心理辅导。
前缀 pref.
表示"生命","生物"(如:biochemistry)
Biology(生物学)的缩写
一种不能用语言表示的奇怪的感觉或者生活状态,或者口头禅,仅适用与小部分人群,可能你的身边就有这种人存在,当你告诉他时,他会很吃惊。因为这很surprise,哇哈哈,还有它的变异体。比如阿啦BIO,在这种人群中,本词语在任何话语或感觉中都适用,因为它全都可以概括
bio(block input output)块的输入和输出
bio是linux内核中通用块层的一个核心数据结构,它描述了块设备的I/O操作。它联系了内存缓冲区与块设备。
B. 有没有会在Linux系统安装Bioperl 的大侠
如果你是Linux系统,随意打开一个终端;如果用的是Windows系统,那么打开命令提示符。输入以下命令: perldoc Bio::SeqIO 以上命令的作用是查看Bio::SeqIO模块的文档是否存在,如果存在,则会有相应的文档输出,则你安装Bio::SeqIO模块;如果没...
C. 🍓我的生信入门day2 bio-linux简单操作
仅供自己记录复习,并不严谨。
主要是学习了bio-linux最基本的一些操作。
1.linux命令组成。命令➕选项➕参数。
2.创建共享文件。windows和bio-linux的共享文件。
3.访问路径:pwd
访问下一级:ll 空格 文件名
访问本级:ll
访问上一级:ll 空格 ..
进入下一级:cd 空格 文件名或目录名
进入上一级:cd 空格 ..
注意:访问只是弹出该目录下有的所有文件和目录。进入是进入到下一级中的文件或者目录。
4.显示文件ls ls -a ls-l [文件长格式显示]
5.创建目录和文件。mkdir 空格 目录名 ;touch 空格 文件名
6.复制cp、移动mv、删除rm文件。不能操作目录。操作目录:mv -r 、cp -r 、rm -r空格 目录名,删除只能删除本操作目录下的文件。
7.查看文件内容: cat 空格 文件名。所以不能对目录cat,可以ll 注意:ll是访问,是文件的一些基本信息。目录:cd 空格 目录名。
8.修改文件:vi 空格 文件名 按下i显示insert就可以编辑修改了。编辑修改完以后按下Esc后,打冒号: 然后wq保存,退出。q!是退出不保存,按d删除内容。
D. window10 装入虚拟机bio-linux后为什么不显示桌面
什么叫装入虚拟机bio-linux,看不懂。
从图上看,你的硬盘是mbr格式,但是你用了uefi引导。
如果是实机,进bios,启用csm support,boot那里uefi改带legacy的。
如果是vmware虚拟机,虚拟机关机,编辑虚拟机设置,高级,取消勾选通过 EFI 而非 BIOS 引导
E. linux device mapper中的bio怎么产生的
赖的device-mapper-libs 版本低了,找个1.02.90以后的版本,安装完之后,在安装你的docker-io
F. win8 环境下安装biolinux双系统
Step 1
在Windows操作系统下,清空某个硬盘分区,或从已有的分区中分割出新分区。Ubuntu将安装在这个分区中。可以使用一些知名磁盘工具软件(分区助手、DiskGenius等)来分割新区。
示例:
如上图所示,C盘是Win8.1的系统盘,E盘是我从原本的C盘中分割出的新分区(在使用工具进行分割时,可以不把分割出的空间作为新分区,因为我们要获得的是一块未被使用的空间)。
Step 2
确定空白分区后,删除该分区,使其在Windows资源管理器中不可见。
可以通过右键点击“这台电脑”图标,进入“管理”功能的“磁盘管理”界面,选择空白分区,右键“删除卷”。
上图是对E盘执行“删除卷”操作前的磁盘状态。
下图是对E盘执行“删除卷”操作后的磁盘状态:
现在,在Windows操作系统下,原先的E盘已不可见,且不可使用。资源管理器中只剩下C盘:
Step 3
在Windows操作系统下安装EasyBCD这款软件。安装成功后,打开软件,显示语言选择“简体中文”。
在左侧工具列表中选择“添加新条目”,在右侧功能区选择右上角的“NeoGrub”选项卡,点击“安装”按钮。如下图所示:
安装后,点击“配置”按钮,会打开一个名为“menu.lst”的记事本文件。清空文件内容,写入下面的文字:
title Install Ububtu
root (hd0,0)
kernel (hd0,0)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
如下图所示,注意空格:
注意1:文件第2、3、4行出现的“(hd0,0)”指向的是当前系统盘的位置,我这里是C盘。但假如C盘并非首个分区,而是第二个,需要修改为“(hd0,1)”,依此类推。
注意2:文件第三行,“ubuntu-14.04-desktop-amd64.iso”是我的Ubuntu系统镜像的文件名,将其修改为你的。
注意3:文件第三行出现了“vmlinuz.efi”,由于我安装的Ubuntu是64位操作系统,此处必须是“vmlinuz.efi”,不能缺少扩展名。
Step 4
使用压缩工具打开Ubuntu镜像文件,将“.disk”文件夹和casper文件夹内的“initrd.lz”和“vmlinuz.efi”文件复制到C盘根目录,再将Ubuntu系统镜像文件复制到C盘根目录:
Step 5
重启计算机,在启动界面看到操作系统选择项,选择“NeoGrub引导加载器”:
之后出现Ubuntu选择界面,选择“Install Ubuntu”。
注意:此处有可能出现“File not found”错误:
原因一般是在之前的“menu.lst”文件内的参数没有配置好,但不需要重启计算机进行设置,因为启动界面已经给我们临时修改参数的方法:
依然选择“InstallUbuntu”,按键盘e进入修改界面:
对上图中的三处“(hd0,0)”进行修改,前面的0代表是第几块硬盘,“0”代表第一块;后面的0代表是某块硬盘内的第几个分区。此处的修改方法也已经给出,键盘e修改,键盘d删除,键盘b确认并启动:
注意:Win7、Win8系统在安装时,默认会在系统盘之前创建一个几百兆大小的系统专用分区,所以如果C盘是系统盘,此处参数一般是“hd(0,1)”
Step 6
成功进入Ubuntu试用界面后,桌面上有两个文件。
按Ctrl+Alt+T打开终端,输入“sudo umount –l /isodevice”,取消光盘驱动器挂载,否则在后面安装过程中可能会无限卡进度:
注意:注意空格,而且“-l”中的“l”是大写字母“L”的小写形态。不是数字1,也不是字母“i”。
Step 7
双击桌面图标“安装Ubuntu14.04 LTS”,开始安装Ubuntu。
如果你连接了网络,可以选择“安装中下载更新”,会延长安装时间,也可以在安装完Ubuntu系统后再下载安装更新。
在“安装类型”界面会有多个安装选项:
如果选择第一项,Ubuntu会自动进行分区安装,之后与Windows操作系统共存为双系统。对分区没有细致要求的用户选择此项即可,本教程即可直接跳过步骤Step7、Step8。如果要自定义分区,选择“其它选项”。此处,我选择“其他选项”。
下图显示的是我们整个硬盘的分区状态:
我们要将Ubuntu安装在“空闲”分区内。选择“空闲”分区,再点击左下方红线处的加号,进行分区。
关于Linux的分区挂载,很多带有定势思维的Windows用户还在理解的道路上艰难爬行,分区不是本文重点,此事应当阅读关于Linux分区的专业文章。
根目录“/”是必须存在的,可以分8G给“/”。
交换分区swap不是必须存在的,可以不给其分配空间,这同样意味着,你可以将所有空间分给“/”。
“/boot”不是必须存在的,如果你的硬盘是Ubuntu单系统,推荐为其分配空间,一般小于200M,并且将它设置为第一分区;如果你的硬盘不是单系统,而是像本文所述的双系统,不必分配空间。
“/home”用于保存用户的文件,如果你要向其中保存大量数据,需要分配较多空间。
“/user” 主要用于保存应用程序文件,如果你要安装很多程序,需要分配较多空间。可以考虑为其分配最大空间。
分区时需要选择文件系统类型,选择“Ext4”即可。
注意:如果你的内存较小,交换分区大小应该超过物理内存大小,但要小于物理内存大小乘以2;如果你的内存足够大,交换分区分配1G到2G即可,甚至可以不分配。但如果你要安装一些强制需要交换分区的软件,则必须进行分配,如果你不确定以后安装的某款软件是否强制需要交换分区,最好进行分配,一般1G即可。
Step 8
分区完成后,开始安装。
如果你没有分配交换空间,系统会给出提示,跳过即可。
安装完成后,选择重启。如果一切正常,可以看到如下图所示的Ubuntu样式的启动项选择界面:
上图可以看出,Win8.1已经成功安装。
Step 9 收尾工作
在系统启动界面,Win8.1系统处于最后一项,如果需要让Win8.1处于第一项,可以这样设置:
1、进入Ubuntu系统。
2、Ctrl+Alt+T打开终端,输入“sudo nautilus”,以root权限打开资源管理器。
3、找到“30_os-prober”文件,将其名称修改为“06_os-prober”即可:
进入Windows系统,清除C盘下之前复制的文件。
打开EasyBCD,在之前的“添加新条目”功能中,点击“删除”按钮,清除“NeoGrub”引导。
G. bio-infopage是什么
有核心数据的页。bio是linux内核中通用块层的一个核心数据结构,它描述了块设备的I/O操作,联系了内存缓冲区与块设备。bio-infopage是表示直接跳转到有核心数据的一页,是直接访问的,并不是惦记很多链接对linux进行访问。infopage是将所有的内容拆成一个一个的段落,每个段落都有自己独立的page,不同的page之间用类似于网页的跳转的方式进行连接。
H. Linux磁盘I/O子系统
上文学到 不管什么文件系统类型,都通过VFS(虚拟文件系统层)读和写等操作文件,写文件的元数据和文件的实际数据到磁盘 。但数据是怎么落地磁盘中的呢?落到磁盘中的都经过什么组件?
以一个写数据到磁盘为例,给出Linux I/O子系统的体系结构。
当磁盘执行写入操作时发生的 基本操作 (假设磁盘上扇区中的文件数据已经被读取到分页缓存)。
1) 一个进程通过write()系统调用 VFS虚拟文件系统 请求写一个文件。
2) 内核更新已映射文件的分页缓存。
3) 内核线程 pdflush/Per-BDI flush将分页缓存刷新到磁盘。
4) 同时 VFS虚拟文件系统层 在一个bio(block input output)结构中放置每个块缓冲,并向块设备层提交写请求。
5) 块设备层 从上层得到请求,并执行一个 I/O电梯操作,将请求放置到I/O 请求队列。
6) 设备驱动器 (比如SCSI 或 其他设备特定的驱动器)将执行写操作。
7) 磁盘设备 固件执行硬件操作,如在盘片扇区上定位磁头,旋转,数据传输。
过去的20年中,处理器性能的改进要超过计算机系统中的其他组件,如处理器缓存、物理内存及磁盘等等。 访问内存和磁盘的速度较慢会限制整个系统的性能 ,怎么解决这个问题呢?引入 磁盘缓存机制 ,在较快的存储器中缓存频繁使用的数据,减少了访问较慢的存储器的次数。
磁盘缓存机制有以下3个地方解决:
引入存储层次结构 ,在CPU和磁盘之间放置L1缓存、L2缓存、物理内存和一些其他缓存减少这种不匹配,从而让进程减少访问较慢的内存和磁盘的次数,避免CPU花费更多的时间等待来自较慢磁盘驱动器的数据。
另外一种解决思路: 在更快的存储器上实现更高的缓存命中率,就可能更快地访问数据 。怎么提高缓存命中率呢?引入 参考局部性(locality of reference) 的技术。这项技术基于以下2个原则:
1) 大多数最近使用过的数据,在不久的将来有较高的几率被再次使用(时间局部性)。
2) 驻留在数据附近的数据有较高的几率被再次使用(空间局部性)。
Linux在许多组件中使用这些原则,比如分页缓存、文件对象缓存(索引节点缓存、目录条目缓存等等)、预读缓冲等。
以进程从磁盘读取数据并将数据复制到内存的过程为例。进程可以从缓存在内存中的数据副本中检索相同的数据,用于读和写。
1) 进程写入新数据
当一个进程试图改变数据时,进程首先在内存中改变数据。此时磁盘上的数据和内存中的数据是不相同的,并且内存中的数据被称为 脏页(dirty page) 。脏页中的数据应该尽快被同步到磁盘上,因为如果系统突然发生崩溃(电源故障)则内存中的数据会丢失。
2) 将内存中的数据刷新到磁盘
同步脏数据缓冲的过程被称为 刷新 。在Linux 2.6.32内核之前(Red Hat Enterprise Linux 5),通过内核线程pdflush将脏页数据刷新到磁盘。在Linux 2.6.32内核中(Red Hat Enterprise Linux 6.x)pdflush被Per-BDI flush线程(BDI=Backing Device Interface)取代,Per-BDI flush线程以flush-MAJOR:MINOR的形式出现在进程列表中。当内存中脏页比例超过阀值时,就会发生刷新(flush)。
块层处理所有与块设备操作相关的活动。块层中的关键数据结构是bio(block input output)结构,bio结构是在虚拟文件系统层和块层之间的一个接口。
当执行写的时候,虚拟文件系统层试图写入由块缓冲区构成的页缓存,将连续的块放置在一起构成bio结构,然后将其发送到块层。
块层处理bio请求,并链接这些请求进入一个被称为I/O请求的队列。这个链接的操作被称为 I/O电梯调度(I/O elevator)。问个问题:为啥叫电梯调度呢?
Linux 2.4内核使用的是一种单一的通用I/O电梯调度方法,2.6内核提供4种电梯调度算法供用户自己选择。因为Linux操作系统适用的场合很广泛,所以I/O设备和工作负载特性都会有明显的变化。
1)CFQ(Complete Fair Queuing,完全公平队列)
CFQ电梯调度为每个进程维护一个I/O队列,从而 对进程实现一个QoS(服务质量)策略 。CFQ电梯调度能够很好地适应存在很多竞争进程的大型多用户系统。它积极地避免进程饿死并具有低延迟特征。从2.6.18内核发行版开始,CFQ电梯调度成为默认I/O调度器。
CFQ为每个进程/线程单独创建一个队列来管理产生的请求,各队列之间用时间片来调度,以保证每个进程都能分配到合适的I/O带宽。I/O调度器每次执行一个进程的4个请求。
2)Deadline
Deadline是一种循环的电梯调度(round robin)方法,Deadline 算法实现了一个近似于实时的I/O子系统。在保持良好的磁盘吞吐量的同时,Deadline电梯调度既提供了出色的块设备扇区的顺序访问,又确保一个进程不会在队列中等待太久导致饿死。
Deadline调度器为了兼顾这两个方面,引入了4个队列,这4个队列可分为两类,每一类都由读和写两种队列组成。一类队列用来对 请求 按 起始扇区序号 进行排序(通过红黑树来组织),称为sort_list;另一类对 请求 按 生成时间进行排序 (由链表来组织),称为fifo_list。每当确定了一个传输方向(读或写),系统都将会从相应的sort_list中将一批连续请求调度到请求队列里,具体的数目由fifo_batch来确定。 只有遇到三种情况才会导致一次批量传输的结束 :1.对应的sort_list中已经没有请求了;2.下一个请求的扇区不满足递增的要求;3.上一个请求已经是批量传输的最后一个请求了。
所有的请求在生成时都会被赋上一个期限值,并且按期限值将它们排序在fifo_list中, 读请求的期限时长默认为500ms,写请求的期限时长默认为5s。 在Deadline调度器定义了一个writes_starved默认值为2,写请求的饥饿线。 内核总是优先处理读请求,当饿死进程的次数超过了writes_starved后,才会去考虑写请求 。 为什么内核会偏袒读请求呢? 这是从整体性能上进行考虑的。读请求和应用程序的关系是同步的,因为应用程序要等待读取完毕,方能进行下一步工作所以读请求会阻塞进程,而写请求则不一样。应用程序发出写请求后,内存的内容何时被写入块设备对程序的影响并不大,所以调度器会优先处理读请求。
3) NOOP
一个简单的FIFO 队列,不执行任何数据排序。NOOP 算法简单地合并相邻的数据请求,所以增加了少量的到磁盘I/O的处理器开销。NOOP电梯调度假设一个块设备拥有它自己的电梯算法。当后台存储设备能重新排序和合并请求,并能更好地了解真实的磁盘布局时,通常选择NOOP调度,
4)Anticipatory
Anticipatory本质上与Deadline一样,但Anticipatory电梯调度在处理最后一个请求之后会等待一段很短的时间,约6ms(可调整antic_expire改变该值),如果在此期间产生了新的I/O请求,它会在每个6ms中插入新的I/O操作,这样可以将一些小的I/O请求合并成一个大的I/O请求,从而用I/O延时换取最大的I/O吞吐量。
Linux内核使用设备驱动程序得到设备的控制权。 设备驱动程序 通常是一个独立的内核模块,通常针对每个设备(或是设备组)而提供,以便这些设备在Linux操作系统上可用。一旦加载了设备驱动程序,将被当作Linux内核的一部分运行,并能控制设备的运行。
SCSI (Small Computer System Interface,小型计算机系统接口)是最常使用的I/O设备技术,尤其在企业级服务器环境中。SCSI在 Linux 内核中实现,可通过设备驱动模块来控制SCSI设备。 SCSI包括以下模块类型 :
1) Upper IeveI drivers(上层驱动程序)。 sd_mod、sr_mod(SCSI-CDROM)、st(SCSI Tape)和sq(SCSI通用设备)等。
2) MiddIe IeveI driver(中层驱动程序) 。如scsi_mod实现了 SCSI 协议和通用SCSI功能。
3) Low IeveI drivers(底层驱动程序) 。提供对每个设备的较低级别访问。底层驱动程序基本上是特定于某一个硬件设备的,可提供给某个设备。
4) Pseudo drive(伪驱动程序) 。如ide-scsi,用于 IDE-SCSI仿真。
通常一个较大的性能影响是文件系统元数据怎样在磁盘上存放 。引入 磁盘条带阵列 (RAID 0、RAID 5和RAID 6)解决这个问题。在一个条带阵列上,磁头在移动到阵列中下一个磁盘之前,单个磁盘上写入的数据称为 CHUNKSIZE ,所有磁盘使用一次它后返回到第一个磁盘。 如果文件系统的布局没有匹配RAID的设计,则有可能会发生一个文件系统元数据块被分散到2个磁盘上,导致对2个磁盘发起请求 。或者 将所有的元数据在一个单独的磁盘上存储,如果该磁盘发生故障则可能导致该磁盘变成热点 。
设计RAID阵列需要考虑以下内容:
1) 文件系统使用的块大小。
2) RAID 阵列使用的CHUNK大小。
3) RAID 阵列中同等磁盘的数量。
块大小 指可以读取/写入到驱动器的最小数据量,对服务器的性能有直接的影响。块的大小由文件系统决定,在联机状态下不能更改,只有重新格式化才能修改。可以使用的块大小有1024B、2048B、4096B,默认为 4096 B。
stride条带 是在一个chunk中文件系统块的数量。如果文件系统块大小为4KB,则chunk大小为64KB,那么stride是64KB/4KB=16块。
stripe-width 是RAID阵列上一个条带中文件系统块的数量。比如 一个3块磁盘的RAID5阵列 。按照定义,在RAID5阵列每个条带中有1个磁盘包含奇偶校验内容。想要得到stripe-width,首先需要知道每个条带中有多少磁盘实际携带了数据块,即3磁盘-1校验磁盘=2数据磁盘。2个磁盘中的stride是chunk中文件系统块的数量。因此能计算 2(磁盘)*16(stride)=32(stripe)。
创建文件系统时可以使用mkfs给定数量:mk2fs -t ext4 -b 4096 -E stripe=16,stripe_width=64 /dev/vda
I. linux上输入命令就出现下面的东东,是因为缺少Bio::AlignIO模块吗
关于Perl模块。建议你使用CPAN来安装。简单说,CPAN就如Centos下面Yum,Ubuntu中的apt-get
CPAN有强大的库,供你安装相应的模块:
相应的命令参考:出现的Yes,不断回车就可以
#yum-yinstallperl-CPAN
#perl-MCPAN-e"installBio::AlignIO"
或者
#yum-yinstallperl-CPAN
#cpan-iAlignIO