iops:i/o per second:每秒的读写次数。
桌面用的固态硬盘的接口一般是sata的。
并口:同一个线缆可以接多块设备
串口:只能接一个。
机械硬盘:由很多盘片组成,盘片上有很多同心圆中心有一个同心轴(叫主轴),每个盘片的正反面都有一个磁头,就像留声机,有一个手臂(arm),支撑所有磁头。
硬盘结构图片请参考:
track:磁道
sector:扇区,512bytes
cylinder:柱面:圆柱体的外表面(除去上下2个圆面)
分区划分是以柱面为单位的。
平均寻道时间:硬盘的同心轴旋转的速度。越快io越好。
5400转/分,7200转/分,10000转/分,15000转/分
最外层的磁道,同一段时间内转过的长度最大,所以io最快,所以把c盘划分到外层,所以windows的操作系统都装在c盘上。
linux的哲学思想:一切皆文件
设备号:
major:主设备号:区分设备的类型(鼠标还是键盘),用于标明所需要的驱动程序。
minor:次设备号:区分同种类型下的不同设备(有2个显示器,区分是哪个显示器)。是特定设备的访问入口。
创建设备文件命令:mknod
:make block or character special files
mknod [option]... name type [major minor]
# mknod testdev c 111 1 # ll testdev crw-r--r--. 1 root root 111, 1 dec 25 18:42 testdev # mknod -m 664 testdev1 c 111 1 # ll testdev1 crw-rw-r--. 1 root root 111, 1 dec 25 18:42 testdev1
设备文件的名字不是随便的,是有标准的,由icann制定。
操纵系统给硬盘的设备文件的命名规则:
# ll /dev/sda* brw-rw----. 1 root disk 8, 0 dec 25 10:10 /dev/sda brw-rw----. 1 root disk 8, 1 dec 25 10:10 /dev/sda1 brw-rw----. 1 root disk 8, 2 dec 25 10:10 /dev/sda2
设备的引用问题:
所以有了下面的设备引用方式:
硬盘的空间很大,为了更细致的使用它,要给它划分成独立的区域,叫分区。如何识别分区呢?使用/dev/sda#,/dev/hda#。
#:为数字,可能是1位的数字,也可能是2位的数字。
注意:centos5根据硬盘接口的类型,把ide的命名位hd,把scsi等的命名位sd。但是centos6和7,不管是什么接口的硬盘,一律用sd[a-z]来命名了。
硬盘分区类型:
mbr:master boot record:主引导记录(扇区)
在0号track(磁道),0号sector(扇区)里,有512bytes
这512bytes分为3部分:
前446bytes:bootloader程序,引导操作系统启动的程序。
接下来的64bytes:分区表(fat),用16个字节标识一个硬盘的可使用区域,所以一共只能有4个分区(硬盘的可使用区域)。
如果想要超过4个分区怎么办?
让某一个分区,不直接指定硬盘空间的具体可使用区域,而是指向硬盘的一个小地方,这个地方又放了一张分区表(fat),这个分区表的大小可以随意指定,所以这个分区表里就可以放n多的分区的索引,再由此索引,指定具体的分区(硬盘的可使用区域)。
所以就可以有了:
最后2个bytes:mbr区域是否有效的标识。如果是55aa(16进制),则说明有效。否则,说明无效。
gpt:未调查
fdisk
查看硬盘里的分区情况:fdisk -l [-u][device...]
不指定设备文件的话,就显示所有硬盘的分区情况。
指定设备文件的话,就显示指定硬盘的分区情况。
# fdisk -l disk /dev/sda: 64.4 gb, 64424509440 bytes, 125829120 sectors(扇区) units = sectors of 1 * 512 = 512 bytes(每个扇区是512bytes) sector size (logical/physical): 512 bytes / 512 bytes(扇区的逻辑/物理size都是512bytes) i/o size (minimum/optimal): 512 bytes / 512 bytes(io大小512bytes) disk label type: dos(dos代表是mbr的分区类型) disk identifier: 0x000bc639(磁盘的uuid,16位的数字) device boot start end blocks id system /dev/sda1 * 2048 2099199 1048576 83 linux /dev/sda2 2099200 125829119 61864960 8e linux lvm # fdisk -l /dev/sda disk /dev/sda: 64.4 gb, 64424509440 bytes, 125829120 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 label type: dos disk identifier: 0x000bc639 device boot start end blocks id system /dev/sda1 * 2048 2099199 1048576 83 linux /dev/sda2 2099200 125829119 61864960 8e linux lvm
管理分区:fdisk device
fdisk提供一个交互式接口来管理分区,进入交互式以后,在里面可以使用很多子命令。
所有操作的结果都是暂时保存在内存中,还没有写入到磁盘,直到使用了w命令后,才会把操作反应到磁盘,也就是操作才生效。这个命令非常危险。
command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition(删除分区) g create a new empty gpt partition table g create an irix (sgi) partition table l list known partition types(显示磁盘种类,也就是上面用fdisk -l命令的指向结果里的id) 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)
下图是在虚拟机上新添加的硬盘,大小是1gb。
添加硬盘前:
# ll /dev/sda* brw-rw----. 1 root disk 8, 0 dec 25 10:10 /dev/sda brw-rw----. 1 root disk 8, 1 dec 25 10:10 /dev/sda1 brw-rw----. 1 root disk 8, 2 dec 25 10:10 /dev/sda2
添加硬盘后:发现多了一个/dev/sdb,所以新添加的硬盘被操作系统识别到了。
# ll /dev/sd* brw-rw----. 1 root disk 8, 0 dec 26 13:26 /dev/sda brw-rw----. 1 root disk 8, 1 dec 26 13:26 /dev/sda1 brw-rw----. 1 root disk 8, 2 dec 26 13:26 /dev/sda2 brw-rw----. 1 root disk 8, 16 dec 26 13:28 /dev/sdb
查看一下新硬盘的情况:
发现硬盘大小是:1073mb,和添加的1gb大小符合;硬盘分区类型是mbr
# fdisk /dev/sdb welcome to fdisk (util-linux 2.23.2). command (m for help): p disk /dev/sdb: 1073 mb, 1073741824 bytes, 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 label type: dos disk identifier: 0x0e2a2184 device boot start end blocks id system
创建一个主分区:
command (m for help): n partition type: p primary (0 primary, 0 extended, 4 free) e extended select (default p): p(问你是创建主分区p,还是扩展分区e) partition number (1-4, default 1): 1(因为上面选的是主分区,所以问你主分区的分区号) first sector (2048-2097151, default 2048): 2048(正在创建的这个分区,从哪个扇区开始创建) last sector, +sectors or +size{k,m,g} (2048-2097151, default 2097151): +200m(创建多大的分区) partition 1 of type linux and of size 200 mib is set(告诉你一个200m的分区创建成功了) command (m for help): p disk /dev/sdb: 1073 mb, 1073741824 bytes, 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 label type: dos disk identifier: 0x87b57c10 device boot start end blocks id system /dev/sdb1 2048 411647 204800 83 linux command (m for help): w(保存!) the partition table has been altered! calling ioctl() to re-read partition table. syncing disks.
上面创建了一个/dev/sdb1分区。
查看刚创建的分区是否被操作系统识别了:查看文件/proc/partitions,发现/dev/sdb1已经在里面了,就说明了操作系统已经识别了刚创建的分区了。
# cat /proc/partitions major minor #blocks name 8 0 62914560 sda 8 1 1048576 sda1 8 2 61864960 sda2 8 16 1048576 sdb 8 17 204800 sdb1 11 0 1048575 sr0 253 0 38834176 dm-0 253 1 4063232 dm-1 253 2 18960384 dm-2
上面创建分区的操作是在centos7里做的,所以操作系统才能马上就识别到刚创建的分区/dev/sdb1,但是如果是centos5或者6,就不能马上识别出刚创建出来的分区。需要用下面的命令,告诉操作系统我刚创建了一个分区,请识别它,谢谢。下面的命令一般执行第一次时,不会成功,再执行一次就好了。
centos5:partprobe [device]
centos6/7:partx
,kpartx
partx -a [device]
kpartx -af [device]
所以,在划分数据区的时候,最好预留一块区域,当满了的时候,管理员可以启动这块预留区域,然后操作系统就能工作了。
c/c++ 学习互助qq群:877684253
本人微信:xiaoshitou5854
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论