(二)主机规划与磁盘分区 - 2.2 磁盘分区

2.2 磁盘分区

那Linux系统是安装在计算机元件的磁盘中。
一块磁盘是可以被分区成多个分区的(partition),以旧有的Windows观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘对吧!那个C, D, E就是分区(partition)啰。但是Linux的设备都是以文件的型态存在,那分区的文件名又是什么? 如何进行磁盘分区?磁盘分区有哪些限制?目前的 BIOS 与 UEFI分别是啥?MSDOS 与 GPT 又是啥?

2.2.1 磁盘连接的方式与设备文件名的关系

个人计算机常见的磁盘接口有两种, 分别是SATA与SAS接口,目前(2015)的主流是SATA接口。不过更老旧的计算机则有可能是已经不再流行的IDE界面喔!

正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚拟机环境下面,为了加速,可能就会使用 /dev/vd[a-p] 这种设备文件名。

再以SATA接口来说,由于SATA/USB/SAS等磁盘接口都是使用SCSI模块来驱动的, 因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。 所以SATA/USB接口的磁盘根本就没有一定的顺序,那如何决定他的设备文件名呢? 这个时候就得要根据Linux核心侦测到磁盘的顺序了!

例题:如果你的PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1, SATA5插槽上, 请问这三个磁盘在Linux中的设备文件名为何?
答:由于是使用侦测到的顺序来决定设备文件名,并非与实际插槽代号有关,因此设备的文件名如下:

  1. SATA1插槽上的文件名:/dev/sda
  2. SATA5插槽上的文件名:/dev/sdb
  3. USB磁盘(开机完成后才被系统捉到):/dev/sdc

因为如果你的磁盘被分区成两个分区,那么每个分区的设备文件名又是什么?在了解这个问题之前,我们先来复习一下磁盘的组成, 因为现今磁盘的分区与他物理的组成很有关系!

磁盘的组成主要有盘片、机械手臂、磁头与主轴马达所组成, 而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与磁道(Track)两种单位,其中扇区的物理量设计有两种大小,分别是 512Bytes 与 4KBytes。

盘片组成示意图

整颗磁盘的第一个扇区特别的重要,因为他记录了整颗磁盘的重要信息! 早期磁盘第一个扇区里面含有的重要信息我们称为MBR (Master Boot Record)格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为GPT (GUID partition table)

那么分区表又是啥?其实你刚刚拿到的整颗硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。 同样的道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用!

2.2.2 MSDOS(MBR) 与 GPT 磁盘分区表(partition table)

柱面

在前一小节的图示中, 我们有看到“开始与结束磁道”吧?而通常磁盘可能有多个盘片,所有盘片的同一个磁道我们称为柱面 (Cylinder), 通常那是文件系统的最小单位,也就是分区的最小单位啦!为什么说“通常”呢?因为近来有 GPT 这个可达到 64bit 纪录功能的分区表, 现在我们甚至可以使用扇区 (sector) 号码来作为分区单位哩!厉害了! 所以说,我们就是利用参考对照柱面或扇区号码的方式来处理!也就是说,分区表其实目前有两种格式!

MSDOS (MBR) 分区表格式与限制
早期的 Linux 系统为了相容于 Windows 的磁盘,因此使用的是支持 Windows 的MBR(Master Boot Record, 主要开机纪录区) 的方式来处理开机管理程序与分区表!而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512Bytes 的大小 (旧的磁盘扇区都是 512Bytes 喔!),
所以说,第一个扇区 512Bytes 会有这两个数据:

  • 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446Bytes
  • 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes

由于分区表所在区块仅有64 Bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。 若将硬盘以长条形来看,然后将柱面以直条图来看,那么那64Bytes的记录区段有点像下面的图示:

磁盘分区表的作用示意图

假设上面的硬盘设备文件名为/dev/sda时,那么这四个分区在Linux系统中的设备文件名如下所示, 重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关喔!

P1:/dev/sda1
P2:/dev/sda2
P3:/dev/sda3
P4:/dev/sda4

上图中我们假设硬盘只有400个柱面,共分区成为四个分区,第四个分区所在为第301到400号柱面的范围。 当你的操作系统为Windows时,那么第一到第四个分区的代号应该就是C, D, E, F。当你有数据要写入F盘时, 你的数据会被写入这颗磁盘的301~400号柱面之间的意思。

分区表就只有64 Bytes而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为主要(Primary)分区延伸(Extended)分区。 根据上面的图示与说明,我们可以得到几个重点信息:

  • 其实所谓的“分区”只是针对那个64 Bytes的分区表进行设置而已!
  • 硬盘默认的分区表仅能写入四组分区信息
  • 这四组分区信息我们称为主要(Primary)或延伸(Extended)分区
  • 分区的最小单位“通常”为柱面(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

你可以这样思考分区的角度:

  • 数据的安全性: 因为每个分区的数据是分开的!所以,当你需要将某个分区的数据重整时,例如你要将计算机中Windows的C 盘重新安装一次系统时, 可以将其他重要数据移动到其他分区,例如将邮件、桌面数据移动到D 盘去,那么C 盘重灌系统并不会影响到D盘! 所以善用分区,可以让你的数据更安全。
  • 系统的性能考虑: 由于分区将数据集中在某个柱面的区段,例如上图当中第一个分区位于柱面号码1~100号,如此一来当有数据要读取自该分区时, 磁盘只会搜寻前面1~100的柱面范围,由于数据集中了,将有助于数据读取的速度与性能!所以说,分区是很重要的!

既然分区表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分区出四个分区?当然不是啦!有经验的朋友都知道, 你可以将一颗硬盘分区成十个以上的分区的!那又是如何达到的呢?在Windows/Linux系统中, 我们是通过刚刚谈到的延伸分区(Extended)的方式来处理的啦!延伸分区的想法是: 既然第一个扇区所在的分区表只能记录四笔数据, 那我可否利用额外的扇区来记录更多的分区信息?

磁盘分区表的作用示意图

在上图当中,我们知道硬盘的四个分区记录区仅使用到两个,P1为主要分区,而P2则为延伸分区。请注意, 延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。 然后我们可以通过延伸分区所指向的那个区块继续作分区的记录。

如上图右下方那个区块有继续分区出五个分区, 这五个由延伸分区继续切出来的分区,就被称为逻辑分区(logical partition)。 同时注意一下,由于逻辑分区是由延伸分区继续分区出来的,所以他可以使用的柱面范围就是延伸分区所设置的范围喔! 也就是图中的101~400啦!
同样的,上述的分区在Linux系统中的设备文件名分别如下:
P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9

怎么设备文件名没有/dev/sda3与/dev/sda4呢?因为前面四个号码都是保留给Primary或Extended用的! 所以逻辑分区的设备名称号码就由5号开始了!这在 MBR 方式的分区表中是个很重要的特性,不能忘记!

MBR 主要分区、延伸分区与逻辑分区的特性我们作个简单的定义:

  • 主要分区与延伸分区最多可以有四笔(硬盘的限制)
  • 延伸分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由延伸分区持续切割出来的分区;
  • 能够被格式化后,作为数据存取的分区为主要分区与逻辑分区。延伸分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分区限制;

事实上,分区是个很麻烦的东西,因为他是以柱面为单位的“连续”磁盘空间, 且延伸分区又是个类似独立的磁盘空间,所以在分区的时候得要特别注意。

❄ 例题:
在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D与E整合成为一个新的分区?

磁盘空间整合示意图

答:

  • 上图可以整合:D与E同属于延伸分区内的逻辑分区,因此只要将两个分区删除,然后再重新创建一个新的分区,就能够在不影响其他分区的情况下,将两个分区的容量合成为一个。
  • 下图不可整合:D与E分属主区与逻辑分区,两者不能够整合在一起。除非将延伸分区破坏掉后再重新分区。但会影响到所有的逻辑分区,要注意的是:如果延伸分区被破坏,所有逻辑分区将会被删除。因为逻辑分区的信息都记录再延伸分区里面。

由于第一个扇区所记录的分区表与MBR很重要,几乎只要读取硬盘都会由这个扇区先读起。因此,如果整个硬盘的第一个扇区(就是MBR与partition table所在的扇区)物理实体坏掉了,硬盘大概就没有用了。

❄ 例题:
如果我想将一颗大硬盘“暂时”分区成为四个partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分区出四个Primary?若不行,那么你建议该如何分区?

答:

  • 由于Primary+Extended最多只能由四个,其中Extended最多只能有一个,因此P+P+P+P的分区方式是不适合的。因为使用到4个P,即使硬盘还有剩余容量,因为无法再继续分区,所以剩余容量就被浪费掉了。
  • 假设想将所有四个分区记录都用上,那么P+P+P+E是比较适合的。所以可以用的4个partitions有3个主要及1个逻辑分区,剩余的容量在延伸分区中。
  • 如果要分区超过4个以上,一定要有Extended分区,而且必须将所有剩下的空间都分配给Extended,然后再以logical的分区来规划Extended的空间。另外,考虑到磁盘的连续性,一般建议将Extended的柱面号码分配在最后面的柱面内。

❄ 例题:
假如我的PC有两颗SATA硬盘,我想在第二颗硬盘分区出6个可用的分区(可以被格式化来存取数据之用), 那每个分区在Linux系统下的设备文件名为何?且分区类型各为何?至少写出两种不同的分区方式。

答:
由于P(Primary) + E(Extended)最多只能有四个,其中E最多只能有一个。需要分6个分区则不能分出4个P。
假设两种环境:

  • P+P+P+E的环境
分区示意图

示意图中可用的是 /dev/sdb1, /dev/sdb2, /dev/sdb3, /dev/sdb4, /dev/sdb5, /dev/sdb6, /dev/sdb7, 至于/dev/sdb4这个延伸分区本身仅是提供来给逻辑分区创建之用。

  • P+E的环境
分区示意图

1~4号是保留给主要/延伸分区的,因此第一个逻辑分区一定是由5号开始的! 所以/dev/sdb3, /dev/sdb4 就会保留下来没有用到。

MBR分区表除了上述的主分区、延伸分区、逻辑分区需要注意之外,由于每组分区表仅有16Bytes而已,因此可记录的信息是相当有限的!所以,在过去MBR分区表的限制中经常发现以下问题:

  • 操作系统无法抓取到2.2T以上的磁盘容量
  • MBR仅有一个区块,若被破坏后,经常无法活很难救援
  • MBR内的存放开机管理程序的区块仅446Bytes,无法容纳较多的程序码

早期2.2TB限制现象不是很严重,但是目前单一磁盘容量甚至高达8TB,或者用多颗磁盘搭建出磁盘阵列,可高达70TB甚至更大,如果使用MBR分割就得2TB/2TB的分割下去,这样分区会很繁琐。为了解决这个问题,后来就有了GPT这个磁盘分区格式的出现。

GUID partition table, GPT 磁盘分区表

过去一个扇区大小就是512Bytes,不过目前已经有4K的扇区设计出现!为了相容于所有的磁盘,因此在扇区的定义上面,大多会使用所谓的逻辑区块位址(Logical Block, Address, LBA)来处理。GPT将磁盘所有区块以此LBA(默认为512Bytes)来规划,而第一个LBA成为LBA0(从0开始编号)。
与MBR仅使用第一个512Bytes区块来记录分区信息相比,GPT使用34个LBA区块来记录分区信息!同时,GPT除了前面34个LBA之外,整个磁盘最后33个LBA也拿来作为另一个备份!

GPT分区表的结构示意图
  • LBA0(MBR相容区块)
    与MBR模式相似,相容区块也分为两个部分,一个就是跟之前446Bytes相似的区块,存储了第一阶段的开机管理程序!而在原本的分区表的记录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为GPT格式之意。而不动GPT分区表的磁盘管理程序,就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护此磁盘。

  • LBA1(GPT表头记录)
    这个部分记录了分区表本身的位置与大小,同时记录了备份用的GPT分区(就是磁盘最后的34个LBA区块)放置的未知,同时放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码来判断GPT是否正确。若有错误,还可以通过这个记录区来取得备份的GPT(磁盘最后的备份区块)来恢复GPT的正常运行!

  • LBA2-33(实际记录分区信息处)
    从LBA2区块开始,每个LBA可以记录4笔分区记录,所以默认情况下,总共可以有432 = 128笔分区记录。因为每个LBA有512Bytes,因此每笔记录用到128Bytes的空间,除了每笔记录所需要的识别码与相关的记录之外,GPT在每笔记录中分别提供了64bits来记载开始/结束的扇区号码,因此,GPT分区表对于单一分区来说,他的最大容量限制就在“264 512Bytes = 263 1KBytes = 233TB = 8ZB”(1ZB = 230TB)。
    现在GPT分区默认可提供多达128笔记录,而在Linux本身的核心设备记录中,针对单一磁盘来说,虽然过去最多只能达到15个分区,不过由于 Linux kernel 通过 udev 等方式的处理,现在LInux也没有这个限制在了!此外,GPT分区已没有所谓的主、延伸、逻辑分区的概念,既然每笔记录都可以独立存在,所以每个都可以视为是主分区!每一个分区都可以拿来格式化使用。

server常常需要比较大容量的磁盘,新版的Linux大多认识了GPT分区表。不过,老牌的fdisk磁盘管理工具并不认识GPT,要使用GPT,要操作类似gdisk或者是parted指令才行。另外,开机管理程序方面,grub第一版并不认识GPT,得要grub2以后才会认识。

并不是所有操作系统可以读取到GPT磁盘分区格式,同时也不是所有硬件都可以支持GPT格式。是否能够读写GPT格式又与开机检测程序(BIOSUEFI)有关。

2.2.3 开机流程中的 BIOS 与 UEFI 开机检测程序

主机系统在嵌入硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制

BIOS搭配MBR/GPT的开机流程

BIOS与CMOS,CMOS是记录各项硬件参数且嵌入在主板上面的存储器BIOS则是一个写入到主板上的一个固件(固件就是写入到硬件上的一个软件程序)。BIOS就是开机适合,计算机系统会主动执行的第一个程序!
BIOS会分析计算机里面有哪些存储设备,以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘,并去读取硬盘里第一个扇区的MBR未知。MBR这个仅有446Bytes的硬盘容量里面会放置最基本的开机管理程序,此时BIOS就功成圆满,接下来就是MBR内开机管理程序的工作了。

这个开机管理程序的目的是在载入(load)核心文件,由于开机管理程序是操作系统在安装时候提供的,所以会认识硬盘内的文件系统格式,因此能够读取核心文件,接下来就是核心文件的工作,开机管理程序与BIOS也功成圆满,之后的工作就交给操作系统。

整个开机流程到操作系统之前的动作应该是这样的:

  1. BIOS:开机主动执行的固件,会认识第一个可开机设备;
  2. MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
  4. 核心文件:开始操作系统的功能 ... ...

如果分区表为GPT格式,BIOS也能从LBA0的MBR相容区块读取第一阶段的开机管理程序码,那么BIOS同样可以读取到正确的操作系统核心(当然前提是开机管理程序能够认识GPT,比如Windows XP 就无法识别GPT格式)。

GPT中LBA0仅提供第一阶段的开机管理程序码,因此如果使用类似grub的开机管理程序,那么就得额外分区出一个“BIOS boot”分区来放置其他开机过程所需的程序码。在CentOS中,这个分区通常占用2MB左右。

BIOS与MBR都是硬件本身会支持的功能,Boot loader则是操作系统安装在MBR上面的一套软件。MBR仅有446Bytes,因此这个开机管理程序是非常小而美的。boot loader主要任务有:

  1. 提供菜单:使用者可以选择不同的开机项目,这也是多重开机的重要功能!
  2. 载入核心文件:直接指向可开机的程序区段来开始操作系统;
  3. 转交其他loader:将开机管理功能转交给其他loader负责。

计算机系统可能具有两个以上的开机管理程序!硬盘只有一个MBR,但是开机管理程序除了可以安装在MBR,还可以安装在每个分区的开机扇区(boot sector)

❄ 例题

假设你的个人计算机只有一个硬盘,里面切成四个分区,其中第一、二分区分别安装了Windows及Linux, 你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的开机管理程序, 那么整个流程可以图示如下:

开机管理程序的工作执行示意图

MBR开机管理程序提供两个菜单,菜单一(M1)可以直接载入Windows的核心文件来开机;菜单二(M2)将开机管理工作交给第二个分区的开机扇区(boot sector)。选择M2后,该开机管理程序仅有一个开机菜单,因此能够使用Linux核心文件来开机。

  • 每个分区都拥有自己的开机扇区(boot sector)
  • 图中的系统盘为第一及第二分区
  • 实际可开机的核心文件是放置到个分区内的
  • loader只会认识自己的系统盘内的可开机核心文件,以及其他loader
  • loader可直接指向或间接将管理权转交给另一个管理程序

如果安装多重开机,最好先安装Windows再安装Linux

  • Linux安装时,可以将开机管理程序安装再MBR或个别分区的开机扇区,而且Linux的loader可以手动设置菜单,所以可以在Linux的boot loader里加入Windows的开机选项;
  • Windows安装时,会主动覆盖调MBR以及自己所在分区的开机扇区,没有让我们自己选择菜单的功能。
    因此,先装Linux再装Windows,MBR的开机管理程序就只会有WIndows项目。(也有处理方法,利用Linux的救援模式来挽救MBR)

UEFI BIOS 搭配 GPT开机的流程

GPT可以提供64bit的寻址,也能使用较大的区块来处理开机管理程序。但是BIOS需要GPT提供相容模式才能够读写这个磁盘设备~ 而且BIOS仅为16位的程序,与现阶段的操作系统接轨方面有点弱!为了解决这个问题,就有了UEFI(Unified Extensible Firmware Interface)可延伸固件界面的产生。
UEFI主要想取代BIOS固件界面,因此也成UEFI 为 UEFI BIOS。
UEFI使用C程序语言,比使用组合语言的BIOS更容易开发!如果开发者够厉害,甚至可以在UEFI开机阶段就让该系统了解TCP/IP而直接上网,根本不需要进入操作系统。

  • BIOS与UEFI的差异
比较项目 传统BIOS UEFI
使用程序语言 组合语言 C语言
硬件资源控制 使用中断(IRQ)管理 不可变的内存读取 不可变得 输入/ 输出存取 使用驱动程序与协定
处理器运行环境 16位 CPU保护模式
扩充方式 通过IRQ链接 直接载入驱动程序
第三方厂商支持 较差 较佳且可支持多平台
图形化能力 较差 较佳
内置简化操作系统前环境 不支持 支持

与BIOS不同,UEFI简直像是一个低阶的操作系统~ 甚至主板上硬件资源的管理,也跟操作系统相当类似,只需要载入驱动程序即可控制操作。

2.2.4 Linux安装模式下,磁盘分区的选择(极重要)

windows系统重装之前,都需要事先考虑C盘多少容量?D盘又要给多大容量?实际安装时候,发现C盘之前会有100MB的分区被独立出来(WIN7分两个盘时会预留100MB空间),所以实际上有三个分区。

Linux又该如何设计呢?

目录树结构(directory tree)

Linux内所有数据都是以文件形态呈现,所以Linux最重要的就在于目录树架构。
目录树架构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构。整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为“/”,所有的文件都与目录树有关。

目录树相关性示意图

如图所示,所有的文件都是又根目录(/)衍生来的,而次目录下还能够有其他的数据存在。图中长方形为目录,波浪形则为文件。想取的mydata文件,最终的文件名为:/home/dmstai/mydata。

Linux使用目录树架构,文件放置在磁盘分区中,“如果结合目录树的架构与磁盘内的数据”呢?这就牵涉到“挂载(mount)”问题了。

文件系统与目录树的关系(挂载)

“挂载”是利用一个目录当成进入点,将磁盘分区数据放置在该目录下;进入该目录就可以读取该分区。这个动作成为“挂载”,进入点的目录我们成为“挂载点”。由于Linux系统最重要的是根目录,因此根目录一定要挂载到某个分区。至于其他目录可依使用者需求来挂载到不同的分区。

目录树与分区之间的相关性

如上图,假设硬盘分两个分区,partition 1是挂载到根目录, partition 2挂载到 /home目录。当数据放置在/home内的各次目录时,数据是放置到patition 2的,如果没在/home下,则数据会放置到partition 1。

windows也是挂载的概念,比如USB放置到windows时会侦测到F(或其他盘)盘,那么读取数据去相应盘读取即可。

distributions 安装时,挂载点与磁盘分区的规划

Linux安装时需要规划磁盘分区与目录树的挂载。
Linux安装时提供“自订安装,Custom” - “Expert,专家模式”

  • 自订安装“Custom”
    A:初次接触Linux:只要分区“/”及“swap”即可:
    初次安装Linux,通常直接以一个最大分区“/”来安装系统。这样不怕分区错误造成无法安装的困境!
    例如/usr是Linux可执行程序及相关文件摆放的目录,所以他的容量需求蛮大的,玩意/usr分区不够大,由于无法将数据完全写入的问题,就有可能无法安装。因此初次安装,仅分区成两个分区“/”与Swap即可。

B: 建议分区方法:预留一个备用的剩余磁盘容量
Linux的学习,最麻烦的可能就是分区问题,分区是系统管理员很重要得一个任务。
预留的分区可以拿来做备份用。Linux实际使用中,某些script或者重要文件值得备份时,就可以使用剩余容量分出新的分区,来备份重要配置文件或者script。这样做最大的好处就是重装系统时,一些软件或工具程序马上在硬盘中找到。

  • Linux安装程序提供的默认硬盘分区方式
    通常不建议使用各个distribution所提供默认的Server安装方式,这会让你无法得知Linux在搞什么鬼,也不见得可以符合你的需求!而且需要注意的是,选择Server时候,需要“确定”你的硬盘数据是否不再需要!因为Linux会自动把硬盘旧的数据全部杀掉!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容