高级Linux运维工程师必备技能(扫盲篇)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的话就得把它存到硬盘上,想毕都知道文件存入磁盘都是二进制存取的。那么硬盘是如何存储的呢?我们现在标配基本上都是1T呢,现在都是2017了,500G的硬盘都已经遭嫌弃了。
1.生活小知识。
上面是一幅图可以看到,有磁头,而且这个磁头是悬浮在盘面上的,如果这个盘面有震动,很可能直接滑到盘面,导致上面写的数据被划掉,造成数据丢失,因此,我们在购买硬盘的时候都写着不能强剧烈震动。
硬盘在工作的时候,这个盘面一直在转,如果访问里面的数据,需要一定时间,我们称之为“平均寻道时间”。
把不同盘面上的相同磁道(可以理解就是盘面上的一个圈,整个盘面有好多个这个样的打圈小圈形成的)划分成同一个分区内部。那么这些维护不同盘面的相同编号的磁道我们成为柱面(cylinder).
磁盘划分实际上是按照柱面划分的,那么很显然在最外层的柱面划分出来的分区的性能是最好的,你可能会问为什么?原因很简单,就是在相同的角速度中,最外层的周长是最大(也就意味着它存储的数据将越多)。因此我们在划分分区的时候依次划分C,D,E硬盘,最先划分的是C盘(分区软件默认把C盘划分到最外层),因此大家都用C盘做系统盘是有原因的哟!
2.MBR分区
在整块硬盘的最外侧磁道上,在第零("0")个扇区上,这个扇区是不能用来划分区的,因为这个扇区上存放着整块磁盘的分区信息。这个分区通常被称作为MBR(Master Boot Record,主引导记录 )分区(现在都流行GPT分区了),这个扇区仅仅占用了512个字节(bytes),你可别小看这512bytes,
a>.它保函了引导加载器(bootloader,其占用了446bytes);
b>.fat,即分区表,其占用了64bytes,每16bytes一个分区,总共只能分区4个[据说比尔盖茨层发表过言论:“硬盘这么小,有谁能用到多余4个分区呢?)【当时的硬盘都很小而且特别贵,只有几百兆(M)大小】”;
c>.5A,其为十六进制的“5A”,占用最后2个字节,用来标记这个MBR分区是否是有效数据的(2个字节被填充了2个5A,MBR有效性标记)。
硬盘内部都是真空的,为什么呢?因为它要旋转,有的硬盘的转速高达1.5w/m,如果不坐车真空的这么高的转速很容易和真空中的微粒发生碰撞,导致温度过高!所以不要轻易拆开硬盘,基本上你拆开就不是真空了,即使拆开后能用,也用不了多长时间就会坏掉的。
3.扩展分区与逻辑分区
随着硬盘的存储数据进一步的增长,我们分区4个是远远够用的,因此需要从4个主分区中拿出一个分区单独,用来存放其他的分区信息我们叫它为“扩展分区”,如果这个扩展分区足够大,就可以对其进行划分多个分区让不同用户使用。因此这个扩展分区(引用额外的分区表)是不能被格式化的,这样它就不能被使用,需要额外划分出一个或多个逻辑分区才能被使用。
4.MBR分区方法
a>.4个主分区
b>.3个主分区和一个扩展分区。
注意:MBR最大支持2T的硬盘。大于2TB就得使用GPT分区格式!
5.硬盘接口
DMA:Direct Memory Access (直接内存访问机制)
磁盘设备存放于/dev/文件夹下,
IDE接口的磁盘:/dev/hda、/dev/hdb、/dev/hdc、/dev/hdd
SCSI接口的磁盘:/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd
/dev/XdYZ
/dev/ 表示的是一个设备目录
X h IDE硬盘
s SATA、SISC、U盘
Y a 第一块硬盘
b 第二块硬盘
c 第三块硬盘
。。。。。。。。。。
Z 1-3表示主分区,4一般为扩展分区
5是逻辑分区第一个分区
6是逻辑分区第二个分区
。。。。。。。。。。
a>.IDE(ATA):并口,每个控制器可接两个硬盘,master/slave,133MB/S(这个速率就是被淘汰的根部原因)
/dev/hd[a-z](注意:在Centos6.x版本以后,所有的硬盘即便是IDE接口的都被识别为sd,早起的设备被设置为hd)
/dev//hda[1-4](标识4个主分区)
/dev/hda[5+](逻辑分区5开始)
b>.SCSI:Small Computer System Interface (小型计算机接口,在读取数据上效率很高,因为它有单独的SCSI控制器,容错能力强且抗衰老【但是价格贵啊,相同存储空间是机械硬盘的8倍价格呢!】) 速率:320mb/s 也是并口的 (有的人为了省钱用IDE做raid阵列)
c>.SATA(Serial):300Mbps,600Mbps,6Gbps
d>.SAS:6Gbps
e>.USB:2.0接口: 3.0接口:
6.查看系统是如何识别磁盘分区的
1 [root@yinzhengjie ~]# cat /proc/partitions #查看系统识别的分区 2 major minor #blocks name 3 4 8 0 292968750 sda 5 8 16 292968750 sdb 6 9 127 278290432 md127 7 259 0 512000 md127p1 8 259 1 277777408 md127p2 9 253 0 52428800 dm-0 10 253 1 33038336 dm-1 11 253 2 192307200 dm-2 12 [root@yinzhengjie ~]#
注意:如果你对你的硬盘剩余的空间进行分区后,新加的分区信息内核是不能识别的,需要内核去重读硬件的分区表,重启是不顶事的!我在生产环境中就遇到过这么一个坑。
7.根在内核
根做为访问文件的入口,那么这个根到底在硬盘上呢?还是在操作系统上呢?根实际上是在内核中,我们访问数据都是操作系统将这个硬盘挂在到了根下,然后我们去访问它而已。那你又会问了,那内核在哪啊?答案是在磁盘上。
实际上,在装载内核之前,先启动的是bootloader(内核未启动就还没有文件系统存在),bootloader区磁盘上找到内核并启动,内核启动后会自动生成一个“/”(根),并将磁盘的文件都挂在到“/”下,这就形成了文件系统。
8.linux目录
1 /bin,/sbin #存放系统自身完成自己的启动和基本运行机制索要提供的程序;。 2 /usr/bin,/usr/sbin #存放完成操作系统基本功能的所提供的二进制程序; 3 /usr/local/bin,/usr/local/sbin #存放第三方程序; 4 /lib,/lib64,/usr/lib,/usr/lib64 #存放库文件的; 5 /etc/ #存放配置文件的; 6 /media,/mnt #用于挂在的目录,当然你也可以自定义的; 7 /dev #存放各种设备文件; 8 /proc,/sys #存放运行中的内存映射数据; 9 /home,/root #存放各普通用户的家目录,比如 /home/yinzhengjie; 10 /var #存放日志的目录; 11 /opt,/misc #触发挂在目录; 12 /srv #存放服务相关数据的; 13 /tmp #存放各种临时文件,每次关机时自动清理; 14 /boot #存放内核、引导菜单等启动文件;
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 ''' 8 /:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中 9 10 /bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。 11 12 /boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小200M即可 13 14 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。 15 16 /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。 17 18 注:/etc/X11存放与x windows有关的设置。 19 20 /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据 21 22 /lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。 23 24 /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found 25 26 /mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。 27 28 /opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下 29 30 /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等 31 32 /root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。 33 34 /sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。 35 36 /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下 37 38 /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内 39 40 /usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间 41 42 /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间 43 '''
9.用来对设备进行分区的命令
用于分区的管理工具:fdisk,sfdisk,parted
a>.查看分区信息
1 [root@yinzhengjie ~]# fdisk -l /dev/[sh]d[a-z] #使用文件名通配过滤掉没有用的信息(不是正则表达式哟),可以看出下面只有2个硬盘 2 3 Disk /dev/sda: 21.5 GB, 21474836480 bytes 4 255 heads, 63 sectors/track, 2610 cylinders 5 Units = cylinders of 16065 * 512 = 8225280 bytes 6 Sector size (logical/physical): 512 bytes / 512 bytes 7 I/O size (minimum/optimal): 512 bytes / 512 bytes 8 Disk identifier: 0x00059922 9 10 Device Boot(是否可引导) Start End Blocks Id(对应文件系统的ID) System 11 /dev/sda1 *(*表示可以引导) 1 39 307200 83 Linux 12 Partition 1 does not end on cylinder boundary. 13 /dev/sda2 39 2358 18631680 83 Linux 14 /dev/sda3 2358 2611 2031616 82 Linux swap / Solaris 15 16 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 17 255 heads, 63 sectors/track, 1305 cylinders 18 Units = cylinders of 16065 * 512 = 8225280 bytes 19 Sector size (logical/physical): 512 bytes / 512 bytes 20 I/O size (minimum/optimal): 512 bytes / 512 bytes 21 Disk identifier: 0x00000000 22 23 [root@yinzhengjie ~]#
b>虚拟文件系统
VFS:(Virtual File System)#虚拟文件系统
基本文件系统:Ext3,Ext3,Ext4,Reiserfs(早起的suse用的就是该文件系统哟),xfs(支持单个巨大的文件),JFS(日志文件系统,IBM开发的),vfat,NTFS
交换分区:swap
集群文件系统:GFS2(红帽系统研发,谷歌都再用呢),OCFS2(甲骨文公司研发,用的人不多)
网络文件系统:NFS,smbfs(window是CIFS)
光盘:iso9660
c>.对磁盘进行分区
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 ''' 8 fdisk: 9 d 删除分区 10 n:新建一个分区 11 p:列出已有分区 12 t:调至分区ID 13 l:列出内核支持的分区id 14 w:保存退出 15 q:不保存退出 16 m:帮助 17 '''
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 ''' 8 [root@yinzhengjie ~]# fdisk /dev/sdb #对第二块硬盘进行分区 9 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel 10 Building a new DOS disklabel with disk identifier 0x8614a108. 11 Changes will remain in memory only, until you decide to write them. 12 After that, of course, the previous content won't be recoverable. 13 14 Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) 15 16 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to 17 switch off the mode (command 'c') and change display units to 18 sectors (command 'u'). 19 20 Command (m for help): m #查看帮助 21 Command action 22 a toggle a bootable flag 23 b edit bsd disklabel 24 c toggle the dos compatibility flag 25 d delete a partition 26 l list known partition types 27 m print this menu 28 n add a new partition 29 o create a new empty DOS partition table 30 p print the partition table 31 q quit without saving changes 32 s create a new empty Sun disklabel 33 t change a partition's system id 34 u change display/entry units 35 v verify the partition table 36 w write table to disk and exit 37 x extra functionality (experts only) 38 39 Command (m for help): p #列出已有分区 40 41 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 42 255 heads, 63 sectors/track, 1305 cylinders 43 Units = cylinders of 16065 * 512 = 8225280 bytes 44 Sector size (logical/physical): 512 bytes / 512 bytes 45 I/O size (minimum/optimal): 512 bytes / 512 bytes 46 Disk identifier: 0x8614a108 47 48 Device Boot Start End Blocks Id System 49 50 Command (m for help): n #新建一个分区 51 Command action 52 e extended #扩展分区 53 p primary partition (1-4) #主分区 54 p #选择主分区 55 Partition number (1-4): 1 #选择编号 56 First cylinder (1-1305, default 1): #选择分区的起始点,默认为1 57 Using default value 1 58 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +1G #创建一个1G的主分区 59 60 Command (m for help): n #再新建一个分区 61 Command action 62 e extended 63 p primary partition (1-4) 64 p #选择类型为主分区 65 Partition number (1-4): 2 #设置编号为2 66 First cylinder (133-1305, default 133): 67 Using default value 133 68 Last cylinder, +cylinders or +size{K,M,G} (133-1305, default 1305): +1G #创建一个1G的分区 69 70 Command (m for help): n #再新建一个分区 71 Command action 72 e extended 73 p primary partition (1-4) 74 p #选择类型为主分区 75 Partition number (1-4): 3 #这只编号为3 76 First cylinder (265-1305, default 265): 77 Using default value 265 78 Last cylinder, +cylinders or +size{K,M,G} (265-1305, default 1305): +2G #创建一个2G的分区 79 80 Command (m for help): n #再新建一个分区 81 Command action 82 e extended 83 p primary partition (1-4) 84 e #由于已经设置了3个主分区了,所以我将第四个分区设置为扩展分区,便于我创建更多的逻辑分区 85 Selected partition 4 86 First cylinder (527-1305, default 527): 87 Using default value 527 88 Last cylinder, +cylinders or +size{K,M,G} (527-1305, default 1305): 89 Using default value 1305 90 91 Command (m for help): p #列出已有分区 92 93 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 94 255 heads, 63 sectors/track, 1305 cylinders 95 Units = cylinders of 16065 * 512 = 8225280 bytes 96 Sector size (logical/physical): 512 bytes / 512 bytes 97 I/O size (minimum/optimal): 512 bytes / 512 bytes 98 Disk identifier: 0x8614a108 99 100 Device Boot Start End Blocks Id System 101 /dev/sdb1 1 132 1060258+ 83 Linux #这就是主分区,ID为83 102 /dev/sdb2 133 264 1060290 83 Linux 103 /dev/sdb3 265 526 2104515 83 Linux 104 /dev/sdb4 527 1305 6257317+ 5 Extended #折就是扩展分区,ID为5 105 106 Command (m for help): n #新建一个分区 107 First cylinder (527-1305, default 527): 108 Using default value 527 109 Last cylinder, +cylinders or +size{K,M,G} (527-1305, default 1305): +5G #创建一个5G的逻辑分区。 110 111 Command (m for help): P #列出已有分区 112 113 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 114 255 heads, 63 sectors/track, 1305 cylinders 115 Units = cylinders of 16065 * 512 = 8225280 bytes 116 Sector size (logical/physical): 512 bytes / 512 bytes 117 I/O size (minimum/optimal): 512 bytes / 512 bytes 118 Disk identifier: 0x8614a108 119 120 Device Boot Start End Blocks Id System 121 /dev/sdb1 1 132 1060258+ 83 Linux #主分区 122 /dev/sdb2 133 264 1060290 83 Linux 123 /dev/sdb3 265 526 2104515 83 Linux 124 /dev/sdb4 527 1305 6257317+ 5 Extended #扩展分区 125 /dev/sdb5 527 1180 5253223+ 83 Linux #这就是新建的逻辑分区 126 127 Command (m for help): W #保存退出 128 129 验证是否分区成功: 130 [root@yinzhengjie ~]# fdisk /dev/sdb 131 132 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to 133 switch off the mode (command 'c') and change display units to 134 sectors (command 'u'). 135 136 Command (m for help): p 137 138 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 139 255 heads, 63 sectors/track, 1305 cylinders 140 Units = cylinders of 16065 * 512 = 8225280 bytes 141 Sector size (logical/physical): 512 bytes / 512 bytes 142 I/O size (minimum/optimal): 512 bytes / 512 bytes 143 Disk identifier: 0x8614a108 144 145 Device Boot Start End Blocks Id System 146 /dev/sdb1 1 132 1060258+ 83 Linux 147 /dev/sdb2 133 264 1060290 83 Linux 148 /dev/sdb3 265 526 2104515 83 Linux 149 /dev/sdb4 527 1305 6257317+ 5 Extended 150 /dev/sdb5 527 1180 5253223+ 83 Linux 151 152 Command (m for help): q 153 154 [root@yinzhengjie ~]# 155 '''
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 #让操作系统重读分区表,获取最新的分区信息。 8 ''' 9 [root@yinzhengjie ~]# cat /proc/partitions #查看系统识别的分区,发现没有我们的分区 10 major minor #blocks name 11 12 8 0 292968750 sda 13 8 16 292968750 sdb 14 9 127 278290432 md127 15 259 0 512000 md127p1 16 259 1 277777408 md127p2 17 253 0 52428800 dm-0 18 253 1 33038336 dm-1 19 253 2 192307200 dm-2 20 [root@yinzhengjie ~]# 21 [root@yinzhengjie ~]# kpartx -l /dev/sdb #列出已添加的所有分区信息 22 sdb1 : 0 2120517 /dev/sdb 63 23 sdb2 : 0 2120580 /dev/sdb 2120580 24 sdb3 : 0 4209030 /dev/sdb 4241160 25 sdb4 : 0 2 /dev/sdb 8450190 26 sdb5 : 0 10506447 /dev/sdb 8450253 27 [root@yinzhengjie ~]# kpartx -af /dev/sdb #强行添加分区信息 28 [root@yinzhengjie ~]# kpartx -a /dev/sdb #重读分区表信息 29 [root@yinzhengjie ~]# 30 [root@yinzhengjie ~]# ls /dev/sdb* #发现系统以及识别了这几个分区 31 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5 32 [root@yinzhengjie ~]# 33 [root@yinzhengjie ~]# cat /proc/partitions #查看分区表 34 major minor #blocks name 35 36 8 0 20971520 sda 37 8 1 307200 sda1 38 8 2 18631680 sda2 39 8 3 2031616 sda3 40 8 16 10485760 sdb 41 8 17 1060258 sdb1 42 8 18 1060290 sdb2 43 8 19 2104515 sdb3 44 8 20 1 sdb4 45 8 21 5253223 sdb5 46 253 0 1060258 dm-0 47 253 1 1060290 dm-1 48 253 2 2104515 dm-2 49 253 3 1 dm-3 50 253 4 5253223 dm-4 51 [root@yinzhengjie ~]# 52 53 ''' 54 55 56 #提示,如果你的操作系统是Centos5的话执行以下命令就好使了 57 [root@yinzhengjie ~]# partprobe #但是这个条命令不适合CentOs6!
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 ''' 8 [root@yinzhengjie ~]# fdisk /dev/sdb 9 10 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to 11 switch off the mode (command 'c') and change display units to 12 sectors (command 'u'). 13 14 Command (m for help): p #查看当前分区 15 16 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 17 255 heads, 63 sectors/track, 1305 cylinders 18 Units = cylinders of 16065 * 512 = 8225280 bytes 19 Sector size (logical/physical): 512 bytes / 512 bytes 20 I/O size (minimum/optimal): 512 bytes / 512 bytes 21 Disk identifier: 0x8614a108 22 23 Device Boot Start End Blocks Id System 24 /dev/sdb1 1 132 1060258+ 83 Linux 25 /dev/sdb2 133 264 1060290 83 Linux 26 /dev/sdb3 265 526 2104515 83 Linux 27 /dev/sdb4 527 1305 6257317+ 5 Extended 28 /dev/sdb5 527 1180 5253223+ 83 Linux 29 30 Command (m for help): d #删除分区 31 Partition number (1-5): 5 #选择相应的编号,在她给定的数值内选取哟 32 33 Command (m for help): p #发现已经删除成功了 34 35 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 36 255 heads, 63 sectors/track, 1305 cylinders 37 Units = cylinders of 16065 * 512 = 8225280 bytes 38 Sector size (logical/physical): 512 bytes / 512 bytes 39 I/O size (minimum/optimal): 512 bytes / 512 bytes 40 Disk identifier: 0x8614a108 41 42 Device Boot Start End Blocks Id System 43 /dev/sdb1 1 132 1060258+ 83 Linux 44 /dev/sdb2 133 264 1060290 83 Linux 45 /dev/sdb3 265 526 2104515 83 Linux 46 /dev/sdb4 527 1305 6257317+ 5 Extended 47 48 Command (m for help): w #保存配置并退出 49 The partition table has been altered! 50 51 Calling ioctl() to re-read partition table. 52 Syncing disks. 53 [root@yinzhengjie ~]# 54 55 56 '''
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 ''' 8 [root@yinzhengjie ~]# fdisk /dev/sdb 9 10 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to 11 switch off the mode (command 'c') and change display units to 12 sectors (command 'u'). 13 14 Command (m for help): p #查看当前分区信息 15 16 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 17 255 heads, 63 sectors/track, 1305 cylinders 18 Units = cylinders of 16065 * 512 = 8225280 bytes 19 Sector size (logical/physical): 512 bytes / 512 bytes 20 I/O size (minimum/optimal): 512 bytes / 512 bytes 21 Disk identifier: 0x8614a108 22 23 Device Boot Start End Blocks Id System 24 /dev/sdb1 1 132 1060258+ 83 Linux 25 /dev/sdb2 133 264 1060290 83 Linux 26 /dev/sdb3 265 526 2104515 83 Linux #主分区 27 /dev/sdb4 527 1305 6257317+ 5 Extended 28 29 Command (m for help): t #调整分区ID 30 Partition number (1-5): 3 #选择分区标号 31 Hex code (type L to list codes): L #查看ID对应的文件系统类型。 32 33 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 34 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 35 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 36 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 37 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx 38 5 Extended 42 SFS 86 NTFS volume set da Non-FS data 39 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 40 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 41 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 42 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access 43 a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O 44 b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor 45 c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs 46 e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT 47 f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 48 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 49 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 50 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 51 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 52 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 53 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 54 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 55 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep 56 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT 57 1e Hidden W95 FAT1 58 Hex code (type L to list codes): 82 #选择 Linux swap / So分区类型 59 Changed system type of partition 3 to 82 (Linux swap / Solaris) 60 61 Command (m for help): P #查看当前类型 62 63 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 64 255 heads, 63 sectors/track, 1305 cylinders 65 Units = cylinders of 16065 * 512 = 8225280 bytes 66 Sector size (logical/physical): 512 bytes / 512 bytes 67 I/O size (minimum/optimal): 512 bytes / 512 bytes 68 Disk identifier: 0x8614a108 69 70 Device Boot Start End Blocks Id System 71 /dev/sdb1 1 132 1060258+ 83 Linux 72 /dev/sdb2 133 264 1060290 83 Linux 73 /dev/sdb3 265 526 2104515 82 Linux swap / Solaris #果真已经变成了交换分区 74 /dev/sdb4 527 1305 6257317+ 5 Extended 75 76 Command (m for help): t #修改分区类型 77 Partition number (1-5): 3 #还是选择之前修改的分区 78 Hex code (type L to list codes): 83 #修改会之前的分区类型 79 Changed system type of partition 3 to 83 (Linux) 80 81 Command (m for help): p #查看分区情况 82 83 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 84 255 heads, 63 sectors/track, 1305 cylinders 85 Units = cylinders of 16065 * 512 = 8225280 bytes 86 Sector size (logical/physical): 512 bytes / 512 bytes 87 I/O size (minimum/optimal): 512 bytes / 512 bytes 88 Disk identifier: 0x8614a108 89 90 Device Boot Start End Blocks Id System 91 /dev/sdb1 1 132 1060258+ 83 Linux 92 /dev/sdb2 133 264 1060290 83 Linux 93 /dev/sdb3 265 526 2104515 83 Linux 94 /dev/sdb4 527 1305 6257317+ 5 Extended 95 96 Command (m for help): w #保存当前配置 97 The partition table has been altered! 98 99 Calling ioctl() to re-read partition table. 100 Syncing disks. 101 [root@yinzhengjie ~]# 102 '''
10.创建文件系统
你可以使用2个扇区(512字节)为一个块(block),那么这个一个快的大小就是1kb,4个扇区就是2kb,8个扇区就是4kb.那么问题来了,这个每个单位的块导师是1kb好呢?还是2kb或是4kb好呢?这就要看你存储的数据的大小了,如果你存储的数据是大文件的话,当然block越大越好,这样block存储相同的数据block越大,用的块数就越少,如果你存储的是小文件的话,当然block越小越好,因为block过大,存进去的数据却很小就造成了浪费!(因为一个block只能存储一个数据源)。
注意,在存储数据的时候,一个block只能属于一个文件,不能同时属于2个文件。硬连接除外,其实硬链接指的还是一同一个文件。也就是说,不同的文件不能使用相同的磁盘块。这些磁盘块都有其编号的,是为了方便数据源(主要是inode)只想存储数据的块(block)
磁盘碎片,就是不是连续的块(block)存储着属于同一个文件的数据,这样就导致了在存取的时候特别麻烦,大大的降低了磁盘的工作效率。如下图:
日志文件系统是可以将源数据(indoe)和块数据都写入日志区,等都写入成功了在把数据分别写入到源数据区和块数据区,假如你才写文档的时候,如果突然断电,恰巧你刚刚好写完数据,那么他回将数据分别写入indoe和block区域中,如果你没有写完,他就会对比在日志区的inode和block对应的是否完整,如果不完整,日志区会自动将Inode删除,清除掉不完整的block,就完成了一次自检模式。
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com ''' mke2fs: 配置文件:/etc/mke2fs.conf -t:指定文件类型{ext2|ext3|ext4} -j:用于创建Ext3文件系统,相当于-t ext3 -L label: 指定卷标, -b{ 1024|2028|