Linux基础介绍【第九篇】
服务器添加3块磁盘的体系结构
- [root@oldboylinux test]# free -m
- total used free shared buffers cached
- Mem: 992 133 859 0 24 37
- -/+ buffers/cache: 70 921
- Swap: 511 0 511
注意:
1、linux系统的特性是将系统不用的物理内存缓存起来,因此,859不是系统的真是内存。
2、系统真正可用内存是921。
3、buffers为写入缓冲区,sync将缓冲区数据写入磁盘。
4、cache为读取数据的缓冲区。
5、硬盘是机械的,无论是写入还是读取都太慢了,所以读取和写入都是用来缓存技术。
6、门户架构网站都会采用缓存技术,来让用户写入读取尽可能不接触磁盘。
磁盘的内部结构
磁盘的内部结构主要包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分。
磁头组件及磁头驱动装置
1、磁头组件。它由读写磁头、传动手臂、传动轴三部分组成。
磁盘读取数据的工作原理是利用特定的磁粒子的极性来记录数据。磁头在读取数据时,将磁粒子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。
2、磁头驱动装置。磁盘的寻道是靠移动磁头,而移动磁头则需要该装置驱动才能实现(机械操作)。磁头驱动装置由电磁线圈电机、磁头驱动小车、防震动装置构成,高精度的轻型磁头驱动装置能够对磁头进行正确的驱动和定位,并能在很短的时间内精确定位系统指令指定的磁道。
3、磁盘片。盘片是磁盘存储数据的真正载体,磁盘盘片大多采用金属薄膜材料(或有机玻璃材料),这种金属薄膜较软盘的不连续颗粒载体具有更高的存储密度、高剩磁及高矫顽力等优点。
4、主轴组件。主轴组件包括如轴承和驱动电机等。磁盘主轴的转数是衡量磁盘读写性能的重要参考之一。例:SAS15K,SATA10K。
5、前置控制电路。前置电路控制磁头感应的信号、主轴电机调速、磁头驱动和伺服定位等,由于磁头读取的信号微弱,将放大电路密封在腔体内可以减少外来信号的干扰,提高操作指令的准确性。
企业生产工作中磁盘的选型
当前服务器市场,主流磁盘为SAS、SATA、SSD硬盘。
企业级SAS硬盘
企业里常见的SAS硬盘是15000转/分。当前主流300G、600G、1T,从具体的业务需求及性价比考虑,工作中多用300-600G的SAS硬盘。用于提供生产线上的普通对外提供服务的业务服务器。例如,生产线上的数据库业务、存储业务、图片业务及相关高并发业务(web http、cache服务),总的来说,如果没有特殊业务需求,SAS磁盘是生产环境首选的磁盘配置。
企业级SATA硬盘
企业级SATA硬盘7200-10000转/分,常见的容量为1T、2T、4T和6T,优点是经济实惠,容量大,从具体的业务需求及性价比考虑,工作中多用SATA磁盘做线下不提供服务的数据存储或者并发业务服务不是很大的业务应用,比如站点程序及数据库、图片的线下备份等。特性容量性价比高,一般2T的SATA磁盘较佳。
磁盘选购要点:
1、线上业务用SAS磁盘。
2、线下的业务用SATA磁盘,磁带库。
3、线上高并发、小容量的业务用SSD磁盘。
4、根据数据的访问热度,智能分析分层存储。
注意:千万不能用SATA磁盘来做在线高并发服务的数据存储或数据库业务。
磁盘相关名词解释
英文 |
中文 |
disk |
磁盘 |
head |
磁头 |
sector |
扇区 |
track |
磁道 |
cylinder |
柱面 |
units |
单元块(一个柱面的大小) |
block |
数据块 |
inode |
索引节点 |
在磁盘不工作的时候,磁头停靠在靠近主轴接触盘片的表面,即线速度最小的地方,这里是一个不存放任何数据的特殊区域,称为启停区或着陆区(landing zone),启停区以外就是数据区。
在磁盘的最外圈,离主轴最远的磁道称为"0"磁道,磁盘数据的存放就是从最外圈"0"磁道开始的。"0"磁道非常重要,系统的引导程序就在0柱面0磁道1扇区的前446bytes。
磁道
每个盘片有两个面,都可记录信息。盘片表面以盘片中心为圆心,用于记录数据的不同半径的圆形磁化轨迹就称为磁道。
磁盘在格式化时被划分成许多同心圆,这些同心圆的轨迹叫做磁道(track)。磁道由盘面从外向内依次从0开始顺序编号。
柱面
所有的盘面上同一个半径的磁道的圆形轨迹从上到下依次会成一个圆柱体,就称作柱面(cylinder),每个圆柱上的磁头由上而下从"0"开始编号。
柱面数=一个盘面的磁道数
扇区
盘面有圆心向四周画直线,不同的磁道被直线分成许多扇形(弧形)的区域,每个弧形的区域叫做扇区,每个扇区大小为512字节。
操作系统是以扇区(sector)为单位将信息存储在磁盘上,一般情况下,每个扇区的大小是512个字节。一个扇区主要有两个部分内容,存储数据地点的标识符和存储数据的数据段。
扇区的第一个主要部分是标识符。标识符就是扇区头标,包括组成扇区三维地址的三个数字,扇区所在的磁头(或盘面)、磁道(或柱面号)以及扇区在磁道上的位置即扇区号。投标中还包括一个字段,其中有显示扇区是否能可靠存储数据,或者是否已发现某个故障因而不宜使用的标记。有些磁盘控制器在扇区头标中还记录有指示字,可在原扇区出错时指引磁盘转到替换扇区或磁道。最后,扇区头标以循环冗余校验(CRC)值作为结束,以供控制器检验扇区头标的读出情况,确保准备无误。
扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。在初始准备期间,计算机用512个虚拟信息字节(实际数据的存放地)和与这些虚拟信息字节相应的ECC数字填入这个部分。
磁道柱面扇区总结
磁盘最基本的组成部分是由坚硬的金属材料制成的涂以磁性介质的盘片(有很多层),不同容量磁盘的盘片数不等。
1、一块磁盘有2-14个盘片,每个盘片有两个面,每个面对应一个读写磁头,用磁头号来区分盘面,即盘面数就是磁头数,盘片数*2=磁头数(盘面数)。
2、不同盘面的磁道被划分为多个扇形区域,每个区域就是一个扇区(sector)。
3、同一个盘面,以盘片中心为圆心,每个不同半径的圆形轨迹就是一个磁道(track)。
4、不同盘面相同半径的磁道组成一个圆柱面就是柱面(cylinder)。
5、一个柱面包含多个磁道(这些磁道半径相同),一个磁道包含多个扇区。
6、数据信息记录可表示为:某磁头、某磁道(柱面)、某扇区。
磁盘容量计算
- [root@oldboylinux ~]# fdisk -l
- Disk /dev/sda: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x000ec58f
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 26 204800 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 26 91 524288 82 Linux swap / Solaris
- Partition 2 does not end on cylinder boundary.
- /dev/sda3 91 1045 7658496 83 Linux
方法一:
磁盘容量=512*扇区数*磁道数*磁头数
每个磁道的大小=512*扇区数
一个盘面的大小=512*扇区数*磁道数
方法二:
磁盘容量=柱面数*柱面大小
柱面数=磁道数
柱面大小=磁道大小*磁头数
磁道大小=512*扇区数
- [root@oldboylinux ~]# fdisk -l /dev/sda1
- Disk /dev/sda1: 209 MB, 209715200 bytes
- 255 heads, 63 sectors/track, 25 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
磁头数:255 heads,扇区数:63sectors/track,柱面数:25cylinders。
磁盘大小=512*扇区数*磁道数*磁头数=512*255*63*25=205632000 bytes
机械磁盘读写原理
1、磁盘是按照柱面为单位读写数据的,即先读取同一个盘面的某一个磁道,读完之后,如果数据没有读完,磁头也不会切换其他的磁道,而是选择切换磁头,读取下一个盘面的相同半径的磁道,直到所有盘面的相同半径的磁道读取完成之后,如果数据还没有读写完成,才会切换到其他不同半径的磁道,这个切换磁道的过程称为寻道。
2、不同磁头间的切换是电子切换,而不同磁道间的切换需要磁头做径向运动,这个径向运动需要步进电机调节,这个动作是机械的切换。
磁盘分区
磁盘存储逻辑结构
一个硬盘的存储结构包括主引导记录、分区表、分区结束标志,及其它分区的引导信息及数据区信息。
主引导扇区在整个硬盘里是唯一的,也就是一个硬盘只能有一个,下面是0磁道1扇区的放大图示。
16字节分区表的内容
字节数 |
说明 |
1bytes |
state:分区状态,0=未激活,0x80=激活。 |
1bytes |
startHead:分区起始磁头号 |
2bytes |
startSC:分区起始扇区和柱面号,低字节的低6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位。 |
1bytes |
type:分区类型,如0x0B=FAT32,0x83=linux等,00表示此项未用 |
1bytes |
endHead:分区结束磁头号 |
2bytes |
endSC:分区结束扇区和柱面号 |
4bytes |
Relative:线性寻址方式下分区相对扇区地址(对于基本分区即为绝对地址) |
4bytes |
sectors:分区大小(总扇区数) |
备份与恢复MBR
- [root@oldboylinux ~]# dd if=/dev/sda of=mbr.bin bs=512 count=1 #备份MBR
- 1+0 records in
- 1+0 records out
- 512 bytes (512 B) copied, 0.000217105 s, 2.4 MB/s
- [root@oldboylinux ~]# od -xa mbr.bin #查看MBR
- 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e
- k H dle dle so P < nul 0 8 nul nul so X so @
- 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006
- { > nul | ? nul ack 9 nul stx s $ j ! ack nul
- 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507
- nul > > bel 8 eot u vt etx F dle soh ~ ~ bel u
- 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203
- s k syn 4 stx 0 soh ; nul | 2 nul nl t etx stx
- 0000100 0080 8000 8176 0000 0800 90fa f690 80c2
- nul nul nul nul v soh nul nul nul bs z dle dle v B nul
- 0000120 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0
- u stx 2 nul j Y | nul nul 1 @ so X so P <
- 0000140 2000 a0fb 7c40 ff3c 0274 c288 f652 80c2
- nul sp { sp @ | < del t stx bs B R v B nul
- 0000160 5474 41b4 aabb cd55 5a13 7252 8149 55fb
- t T 4 A ; * U M dc3 Z R r I soh { U
- 0000200 75aa a043 7c41 c084 0575 e183 7401 6637
- * u C sp A | eot @ u enq etx a soh t 7 f
- 0000220 4c8b be10 7c05 44c6 01ff 8b66 441e c77c
- vt L dle > enq | F D del soh f vt rs D | G
- 0000240 1004 c700 0244 0001 8966 085c 44c7 0006
- eot dle nul G D stx soh nul f ht \ bs G D ack nul
- 0000260 6670 c031 4489 6604 4489 b40c cd42 7213
- p f 1 @ ht D eot f ht D ff 4 B M dc3 r
- 0000300 bb05 7000 7deb 08b4 13cd 0a73 c2f6 0f80
- enq ; nul p k } 4 bs M dc3 s nl v B nul si
- 0000320 f084 e900 008d 05be c67c ff44 6600 c031
- eot p nul i cr nul > enq | F D del nul f 1 @
- 0000340 f088 6640 4489 3104 88d2 c1ca 02e2 e888
- bs p @ f ht D eot 1 R bs J A b stx bs h
- 0000360 f488 8940 0844 c031 d088 e8c0 6602 0489
- bs t @ ht D bs 1 @ bs P @ h stx f ht eot
- 0000400 a166 7c44 3166 66d2 34f7 5488 660a d231
- f ! D | f 1 R f w 4 bs T nl f 1 R
- 0000420 f766 0474 5488 890b 0c44 443b 7d08 8a3c
- f w t eot bs T vt ht D ff ; D bs } < nl
- 0000440 0d54 e2c0 8a06 0a4c c1fe d108 6c8a 5a0c
- T cr @ b ack nl L nl ~ A bs Q nl l ff Z
- 0000460 748a bb0b 7000 c38e db31 01b8 cd02 7213
- nl t vt ; nul p so C 1 [ 8 soh stx M dc3 r
- 0000500 8c2a 8ec3 4806 607c b91e 0100 db8e f631
- * ff C so ack H | ` rs 9 nul soh so [ 1 v
- 0000520 ff31 f3fc 1fa5 ff61 4226 be7c 7d7f 40e8
- 1 del | s % us a del & B | > del } h @
- 0000540 eb00 be0e 7d84 38e8 eb00 be06 7d8e 30e8
- nul k so > eot } h 8 nul k ack > so } h 0
- 0000560 be00 7d93 2ae8 eb00 47fe 5552 2042 4700
- nul > dc3 } h * nul k ~ G R U B sp nul G
- 0000600 6f65 006d 6148 6472 4420 7369 006b 6552
- e o m nul H a r d sp D i s k nul R e
- 0000620 6461 2000 7245 6f72 0072 01bb b400 cd0e
- a d nul sp E r r o r nul ; soh nul 4 so M
- 0000640 ac10 003c f475 00c3 0000 0000 0000 0000
- dle , < nul u t C nul nul nul nul nul nul nul nul nul
- 0000660 0000 0000 0000 0000 c58f 000e 0000 2080
- nul nul nul nul nul nul nul nul si E so nul nul nul nul sp
- 0000700 0021 9f83 1906 0800 0000 4000 0006 9f00
- ! nul etx us ack em nul bs nul nul nul @ ack nul nul us
- 0000720 1907 e482 5a0a 4800 0006 0000 0010 e400
- bel em stx d nl Z nul H ack nul nul nul dle nul nul d
- 0000740 5a0b fe83 ffff 4800 0016 b800 00e9 0000
- vt Z etx ~ del del nul H syn nul nul 8 i nul nul nul
- 0000760 0000 0000 0000 0000 0000 0000 0000 aa55
- nul nul nul nul nul nul nul nul nul nul nul nul nul nul U *
- 0001000
- [root@oldboylinux ~]# dd if=mbr.bin of=/dev/sda bs=512 count=1 #恢复MBR
磁盘分区
1、磁盘分区的实质就是针对0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号,及扇区号和柱面号。
2、分区工具有fdisk(适合小于2T的磁盘分区),parted(适合大于2T的磁盘分区,可以对小于2T的磁盘分区),fdisk首选,只有大于2T时才会选parted。
3、一块磁盘的分区表仅有64bytes大小,每个分区表要占用16字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4个。
4、磁盘分区是按照柱面(cylinder)来划分的。
5、扩展分区不能直接使用的,还需要在扩展分区的基础上创建逻辑分区。
6、扩展分区有自己的分区表,因此扩展分区下面的逻辑分区可以有多个。
磁盘在使用前一般需要进行分区,当然如果不分区直接格式化使用也可以,但这不是常见情况。磁盘分区有主分区、扩展分区和逻辑分区。一块硬盘最多可以有4个分区表信息(磁盘本身限制),其中一个主分区的位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区(操作系统限制),在这个扩展分区中可以划分多个逻辑分区(IDE磁盘分区编号大概5-63),SATA(编号5-15)。
一台服务器6块600G的磁盘,raid5后,总大小3T,次数无法装系统。解决办法是做raid5后,不要直接重启装系统,而是再raid界面,继续分一个小的虚拟磁盘vd 200G,用这个200G的虚拟磁盘装系统,装完系统后再把剩余的2.8T通过parted分区。
主分区primary
主分区是磁盘上必须存在的分区,一般为磁盘的第一个分区。在一个磁盘上最多只能有4个主分区。
一个磁盘想分6个分区,主分区和扩展分区的数量:
1p+1e,2p+1e,3p+1e。
扩展分区Extended
扩展分区就像一个虚拟出来的一个小硬盘一样,但是不同的是没有MBR,而只有扩展分区表,而且这个扩展分区表示没有64bytes的限制的,所以可以在扩展分区上划分多个逻辑分区。一块磁盘只能存放一个扩展分区,并且扩展分区不能直接存放数据,扩展分区受限于操作系统。
逻辑分区logical
不能在磁盘中单独直接划分逻辑分区(fdisk),逻辑分区必须存在于扩展分区内。在扩展分区内可以划分多个逻辑分区,逻辑分区的编号从数字5开始。在这个扩展分区内可以划分多个逻辑分区(IDE磁盘大概编号可以是5-63)。
磁盘分区注意事项
1、任意多个主分区,但要求1<=主分区数量<=4。
例如,一个硬盘可以分为4个主分区、3个主分区、2个主分区、1个主分区。
2、扩展分区可以和主分区组合,但要求2<=(主分区+扩展分区)<=4。
例如:3个主分区+1个扩展分区、2个主分区+1个扩展分区或1个主分区+1个扩展分区。当总分区的数量大于4个的时候,必须提前分一个扩展分区。
3、如果要分成四个磁盘分区的话,那么分区方式可以为p+p+p+p或p+p+p+e。
注意:
由于MBR及磁盘分区表大小的限制,如果对磁盘分配了4p或3p+e后,即使磁盘还有剩余未分的空间,那么这部分空间也无法分区使用了(因为无分区可分了,分区表空间已经被沾满)。因此,在做分区规划时,如果业务需要,在分区之前就已经明确要超过4个分区,就可以选择3p+e的分区方式,并且在最后一个扩展分区要将所有的剩余空间都分配给这个扩展分区。当然,也可以采用1p+1e、2p+1e的分区方式,其实就是主分区不能分完,保留不分。
说明:
1、扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。
2、对于主分区和逻辑分区在一本的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。
3、分区数字编号1-4留给主分区或扩展分区使用,逻辑分区编号只能从5开始,即使1-4分区号有剩余,也不会分配给逻辑分区。
4、对硬盘分区,实际上就是修改硬盘的分区表(partition table),也就是说可以通过fdisk分区实际上就是在修改64字节的分区表,分区对应的数据没有关系。因此,理论上调整分区大小,不会删除分区内的数据。
分区方案
方案一:集群结构中的某个节点,数据有多份或者不重要。
/boot 100MB linux引导程序
swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。
/ 剩余硬盘大小
方法二:数据库及存储,有大量重要数据
/boot 100MB
/ 50-200G
swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。
/data 剩余硬盘大小,放数据库及存储数据。
方案三:门户级别或大网站
/boot 100MB
swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。
/ 50-200G
剩余空间保留,不再进行分区,将来分给别的需要的部门。
硬盘分区的设备名
在linux系统中,是通过设备名来访问设备的,设备名存放在"/dev"目录中。
设备名称的定义规则如下,其他的分区依次类推:
系统的第一块IDE接口的硬盘:/dev/hda
系统的第二块IDE接口的硬盘:/dev/hdb
系统的第一块SCSI接口的硬盘:/dev/sda
系统的第二块SCSI接口的硬盘:/dev/sdb
SATA、SAS都是sd开头。
每个分区则使用磁盘名称加对应的数字编号表示:
系统的第一块IDE接口硬盘的第一个分区:/dev/hda1
系统的第一块IDE接口硬盘的第五个分区:/dev/hda5
系统的第二块SCSI接口硬盘的第一个分区:/dev/sdb1
系统的第二块SCSI接口硬盘的第五个分区:/dev/sdb5
注意:
1、分区数字编号1-4留给主分区或扩展分区使用,逻辑分区编号只能从5开始。
2、IDE硬盘设备名均以/dev/hd开头,不同硬盘编号依次是/dev/hda/、/dev/hdb、/dev/hdc…。
3、SCSI/SAS/SATA/USB接口硬盘的设备名均以/dev/sd开头。不同硬盘编号依次是/dev/sda、/dev/sdb、/dev/sdc…。
4、特别注意,SAS/SATA为当前互联网生产环境主流硬盘接口,SSD固态硬盘,由于是电子设备,性能很高,也逐渐被应用。
5、linux环境下没有盘符的概念。要对磁盘设备进行操作,需要使用磁盘设备名,读取磁盘设备内容,需要把创建的分区或逻辑卷上的文件系统挂载到指定的目录上。
6、在linux系统上划分了分区之后,还要在分区上创建文件系统。
文件系统类型
文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区上组织文件的方式和方法,常见文件系统如ext2、ext3、ext4、NTFS、FAT、FAT32等。文件系统是组织存储文件或数据的方法,目的是易于查询和存取数据。因此,如果磁盘上没有文件系统也就无法存储数据了,因此,在磁盘分区后能够使用之前必须建立对应的文件系统才行。
文件系统是基于存储设备的,比如硬盘或光盘,并且包含文件物理位置的维护,文件系统也可以说是虚拟数据或网络数据存储的方法,比如NFS、MFS、GFS。目前unix、linux的文件系统有很多种实现,例如:UFS(基于BSD的unix文件系统)、ext2、ext3、ext4、zfs、xfs和reiserfs等。
注意:
1、文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。
2、分区必须格式化创建文件系统才能存放数据。
3、一个分区只能有一种文件系统。
4、linux下常见文件系统ext2、ext3、ext4、zfs、xfs(CentOS7)和reiserfs(单独安装)。windows下常见文件系统NTFS、FAT32。
文件系统的选择
SAS、SATA银盘文件系统选择:
1、reiserfs:大量小文件业务首选reiserfs(100k以内)
2、xfs:有的门户的数据块mysql业务。
4、ext4:视频下载、流媒体、数据库、小文件业务。
5、ext2:没有日志,CDN网站加速服务。
常用应用:
CentOS5.x系统:默认ext3。
CentOS6.x系统:默认ext4。
CentOS7.x系统:默认xfs。
SSD文件系统选择
ext4、reiserfs可以作为SSD文件系统,但未对SSD做优化,不能充分发挥SSD性能,并影响SSD使用时间。
btrfs对SSD作了优化,mount通过参数启用。但btrfs仍处于试验阶段,生产环境谨慎使用。
jffs32、nilfs2、yaffs是常用的flash file system,在嵌入式环境广泛应用,建议使用。
在linux中制作文件系统
用类似如下命令在linux中制作并优化reiserfs文件系统:
/sbin/mkreiserfs /dev/sda2
用类似如下命令在linux中制作xfs文件系统:
mkfs -t xfs -f /dev/sda2
注意:ext3fs其实是简单的激活了记账的ext2fs。当创建该文件系统时,对mke2fs使用-j选项:
/sbin/mke2fs -j /dev/sda2
查看目前支持的文件系统
- [root@oldboylinux ~]# ls /lib/modules/2.6.32-504.el6.x86_64/kernel/fs/
- autofs4 cramfs ext3 gfs2 mbcache.ko squashfs
- btrfs dlm ext4 jbd nfs ubifs
- cachefiles ecryptfs fat jbd2 nfs_common udf
- cifs exportfs fscache jffs2 nfsd xfs
- configfs ext2 fuse lockd nls
文件系统内部
- [root@oldboylinux ~]# dumpe2fs /dev/sda
- dumpe2fs 1.41.12 (17-May-2010)
- dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
- Couldn't find valid filesystem superblock.
- [root@oldboylinux ~]# dumpe2fs /dev/sda1
- dumpe2fs 1.41.12 (17-May-2010)
- Filesystem volume name: <none>
- Last mounted on: /boot
- Filesystem UUID: 16664a83-1118-495f-af51-363c9f6fb6e0
- Filesystem magic number: 0xEF53
- Filesystem revision #: 1 (dynamic)
- Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
- Filesystem flags: signed_directory_hash
- Default mount options: user_xattr acl
- Filesystem state: clean
- Errors behavior: Continue
- Filesystem OS type: Linux
- Inode count: 51200
- Block count: 204800
- Reserved block count: 10240
- Free blocks: 166642
- Free inodes: 51162
- First block: 1
- Block size: 1024
- Fragment size: 1024
- Reserved GDT blocks: 256
- Blocks per group: 8192
- Fragments per group: 8192
- Inodes per group: 2048
- Inode blocks per group: 256
- Flex block group size: 16
- Filesystem created: Fri Dec 16 22:02:58 2016
- Last mount time: Sat Jan 7 08:51:29 2017
- Last write time: Sat Jan 7 08:51:29 2017
- Mount count: 28
- Maximum mount count: -1
- Last checked: Fri Dec 16 22:02:58 2016
- Check interval: 0 (<none>)
- Lifetime writes: 36 MB
- Reserved blocks uid: 0 (user root)
- Reserved blocks gid: 0 (group root)
- First inode: 11
- Inode size: 128
- Journal inode: 8
- Default directory hash: half_md4
- Directory Hash Seed: 5c41ba8b-25c4-49f3-ab7e-e14d96dca193
- Journal backup: inode blocks
- Journal features: (none)
- Journal size: 4096k
- Journal length: 4096
- Journal sequence: 0x00000025
- Journal start: 0
超级块:记录文件系统的控制与管理信息(Group0以前的信息)。
1、block和inode的个数和大小,及其已用和未用的数量。
2、文件系统的载入时间、最近一次写入数据时间、最近一次执行fsck进行磁盘检查的时间等。
3、有效位:0已载入,1位载入。
组描述:记录本块组从何处开始
块位示图:使用位示图记录哪些块已用哪些块未用。
inode位示图:使用位示图记录inode的使用情况。
inode区:各个inode组成的区域,每个inode都有一个唯一编号。
数据块区:各个block组成的区域,用于存储文件数据。
磁盘分区
添加一块磁盘创建6个分区
1p+1e(5L):/dev/sdb1,/dev/sdb5,/dev/sdb6,/dev/sdb7,dev/sdb8,dev/deb9
分区:设置分区表
格式化:创建文件系统
查看磁盘信息
- [root@oldboylinux ~]# fdisk -l
- Disk /dev/sda: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x000ec58f
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 26 204800 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 26 91 524288 82 Linux swap / Solaris
- Partition 2 does not end on cylinder boundary.
- /dev/sda3 91 1045 7658496 83 Linux
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
- [root@oldboylinux ~]# fdisk -cu /dev/sdb
- Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
- Building a new DOS disklabel with disk identifier 0xf7a4dd89.
- Changes will remain in memory only, until you decide to write them.
- After that, of course, the previous content won't be recoverable.
- Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- Command (m for help): m #查看帮助
- Command action
- a toggle a bootable flag
- b edit bsd disklabel
- c toggle the dos compatibility flag
- d delete a partition #删除创建的分区
- l list known partition types #列出分区类型
- m print this menu #查看帮助
- n add a new partition #创建分区
- o create a new empty DOS partition table
- p print the partition table #查看分区
- q quit without saving changes #退出,不保存
- s create a new empty Sun disklabel
- t change a partition's system id #更改分区的系统id
- u change display/entry units
- v verify the partition table
- w write table to disk and exit #保存,写入分区表
- x extra functionality (experts only)
- Command (m for help):
- Command (m for help): p #查看分区情况
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System #没有分区信息
- Command (m for help): n #创建分区
- Command action
- e extended
- p primary partition (1-4)
- p #选择分区类型
- Partition number (1-4): 1 #选择分区标号
- First sector (2048-2097151, default 2048): #扇区
- Using default
value 2048 - Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M #指定大小
- Command (m for help): p #查看分区情况
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System #目前的分区情况
- /dev/sdb1 2048 206847 102400 83 Linux
- Command (m for help):
- Command (m for help): n #创建分区
- Command action
- e extended
- p primary partition (1-4)
- e #选择分区类型
- Partition number (1-4): 2 #选择分区标号
- First sector (206848-2097151, default 206848):
- Using default
value 206848 - Last sector, +sectors or +size{K,M,G} (206848-2097151, default 2097151): #默认全部大小
- Using default
value 2097151 - Command (m for help): p #查看分区情况
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended #扩展分区
- Command (m for help):
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- p
- Partition number (1-4): 3
- No free sectors available #没有扇区
- Command (m for help):
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- l #逻辑分区
- First sector (208896-2097151, default 208896):
- Using default
value 208896 - Last sector, +sectors or +size{K,M,G} (208896-2097151, default 2097151): +10M #指定大小
- Command (m for help): p
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended
- /dev/sdb5 208896 229375 10240 83 Linux #逻辑分区
- Command (m for help):
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- l
- First sector (231424-2097151, default 231424):
- Using default
value 231424 - Last sector, +sectors or +size{K,M,G} (231424-2097151, default 2097151): +10M
- Command (m for help): p
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended
- /dev/sdb5 208896 229375 10240 83 Linux
- /dev/sdb6 231424 251903 10240 83 Linux
- Command (m for help):
- Command (m for help): d #删除
- Partition number (1-6): 5 #指定标号
- Command (m for help): p
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended
- /dev/sdb5 231424 251903 10240 83 Linux #/dev/sdb6变为/dev/sdb5
- Command (m for help):
最后分区情况
- Command (m for help): p
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended
- /dev/sdb5 208896 229375 10240 83 Linux
- /dev/sdb6 231424 253951 11264 83 Linux
- /dev/sdb7 256000 280575 12288 83 Linux
- /dev/sdb8 282624 309247 13312 83 Linux
- /dev/sdb9 311296 2097151 892928 83 Linux
- Command (m for help):
列出类型
- Command (m for help): l
- 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
- 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
- 5 Extended 42 SFS 86 NTFS volume set da Non-FS data
- 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
- 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
- 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
- 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
- a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
- b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
- c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
- e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
- f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
- 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
- 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
- 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
- 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
- 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
- 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
- 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
- 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
- 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
- 1e Hidden W95 FAT1
- Command (m for help):
- Command (m for help): t #调整分区类型
- Partition number (1-9): 9 #指定需要调整分区的编号
- Hex code (type L to list codes): L #列出分区类型
- 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
- 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
- 5 Extended 42 SFS 86 NTFS volume set da Non-FS data
- 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
- 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
- 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
- 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
- a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
- b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
- c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
- e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
- f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
- 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
- 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
- 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
- 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
- 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
- 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
- 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
- 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
- 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
- 1e Hidden W95 FAT1
- Hex code (type L to list codes): 8e #指定的分区类型
- Changed system type of partition 9 to 8e (Linux LVM)
- Command (m for help): p #查看分区情况
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended
- /dev/sdb5 208896 229375 10240 83 Linux
- /dev/sdb6 231424 253951 11264 83 Linux
- /dev/sdb7 256000 280575 12288 83 Linux
- /dev/sdb8 282624 309247 13312 83 Linux
- /dev/sdb9 311296 2097151 892928 8e Linux LVM #分区类型已经调整
- Command (m for help): w #写入分区表
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
- Syncing disks.
通知linux分区表的变化(否则需要重启系统才能看到变化)
- [root@oldboylinux ~]# partprobe /dev/sdb
查看结果
- [root@oldboylinux ~]# fdisk -l
- Disk /dev/sda: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x000ec58f
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 26 204800 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 26 91 524288 82 Linux swap / Solaris
- Partition 2 does not end on cylinder boundary.
- /dev/sda3 91 1045 7658496 83 Linux
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 1 13 102400 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sdb2 13 131 945152 5 Extended
- Partition 2 does not end on cylinder boundary.
- /dev/sdb5 14 15 10240 83 Linux
- /dev/sdb6 15 16 11264 83 Linux
- /dev/sdb7 16 18 12288 83 Linux
- /dev/sdb8 18 20 13312 83 Linux
- /dev/sdb9 20 131 892928 8e Linux LVM
文件系统的简单操作
磁盘与目录的容量:
df:列出文件系统的整体磁盘使用量。
du:评估文件系统的磁盘使用量(常用于评估目录所占容量)。
1、将容量结果以易读的容量格式显示出来:df -h。
2、将/etc下面的可用的磁盘容量以易读的容量格式显示:df -h /etc。
3、将目前各个分区当做可用的inode数量列出:df -ih。
4、检查根目录下面每个目录所占用的容量:du -sm/*。
连接文件:ln
1、hard link(硬链接实际链接):只是在某个目录下新建一条文件名链接到某inode号码的关联记录而已。
2、symbolic link(符号链接,快捷方式):再创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件夹的文件名。
3、将/etc/passwd复制到/tmp下面,并且查看inode与block
磁盘格式化:mkfs -t ext3 /dev/sda6
磁盘检查:fsck、badblocks
fsck -C -f -t ext3 /dev/sda6,卸载状态检查。
badblocks -sv /dev/sda6
磁盘挂载与卸载
1、挂载ext2、ext3文件系统
mount /dev/sda6 /mnt
df –h
2、挂载cd或dvd光盘
mkdir /media/cdrom
mount -t iso9660 /dev/cdrom /media/cdrom #-t iso9660这个是光盘的格式
mount /dev/cdrom /media/cdrom #系统自己去测试挂载
df
3、格式化与挂载软盘
mkfs -t vfat /dev/fd0
mkdir /media/floppy
mount -t fat /dev/fd0 /media/floppy
df
4、挂载U盘
mkdir /tmp/flash
mount -t vfat -o iocharset=cp950 /dev/sda1 /tmp/flash
df
5、文件卸载umount
umount /dev/sda6
umount /media/cdrom
umount /tmp/flash
umount /dev/fd0
umount /tmp/home
强制卸载:umount –lf 挂载点
强制卸载nfs案例:
umount:/mnt:device is busy解决办法
当无法卸载nfs挂载目录时,原因及解决办法:
1、可能当前目录就是挂载的nfs目录(/mnt)
解决办法:退出挂载的目录/mnt,再执行卸载。
2、比如nfs server挂了,nfs client会出问题(df -h窗会死掉口)
最好的强制卸载方法umount -lf /mnt。
Linux基础介绍【第九篇】的更多相关文章
- Linux基础知识第九讲,linux中的解压缩,以及软件安装命令
目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...
- Linux基础介绍【第二篇】
远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...
- Linux基础介绍【第一篇】
Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...
- Linux基础介绍【第八篇】
Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以 ...
- Linux基础介绍【第六篇】
定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...
- Linux基础介绍【第五篇】
linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...
- Linux基础介绍【第七篇】
linux用户分类 超级用户:UID=0,root 普通用户:UID 500起,由超级用户或具有超级用户权限的用户创建的用户. 虚拟用户:UID 1-499,为了满足文件或服务启动的需要而存在,一般都 ...
- Linux基础介绍【第三篇】
更改SSH服务端远程登录的配置 windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest.Linux的管理用户是root,普通用户默认有很多个,远 ...
随机推荐
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- android 两种实现计时器时分秒的实现,把时间放在你的手中~
可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...
- css3线条围绕跑马+jquery打字机效果
原文地址:css3线条围绕跑马+jquery打字机效果 有图有真相,今天偶然看到了一种效果,仔细看了下,发现它是用css的clip+css3的动画实现的,简直叼.于是自己拿来了前一阵子写的打字机效果, ...
- 深入理解 Android 之 View 的绘制流程
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
- Oracle Standard Error 列表
今天,我特意从网上找了一些,以及自己平时总结的,关于错误编号和说明,平时我们在写项目的时候,往往是可能会出现下面这些错误,例如:违反唯一约束,无效的会话ID,等等.希望对大家有点帮助!可以看看,如果有 ...
- Python学习实践------正向最大匹配中文分词
正向最大匹配分词: 1.加载词典文件到集合中,取词典文件中最大长度词的length 2.每次先在句子中按最大长度分割,然后判断分割的词是否存在字典中,存在则记录此词,调整起始点. 3.不存在则按最大长 ...
- 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源
前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...
- [PHP源码阅读]strpos、strstr和stripos、stristr函数
我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. strpos mixed strpos ( strin ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...