磁盘管理:
磁盘算是IO部件,算是一个外部器件,磁盘自诞生以来他的速度还是没有太大的改变。RAM是掉电丢失的。而数据就得放到其他设备上上。如U盘,光盘,软盘,硬盘,磁带。虽然固态硬盘已经走进大家的市场。但是机械硬盘还是主流的。
首先了解一下磁盘吧,磁盘是由一个一个光盘组成的。多说不宜,还是用图片说话。这样更清晰
引用一下度娘的。
硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。
这里只能看到一个大概。其实,硬盘的盘片不止一个,一个盘片有两个盘面。下面再引用一个度娘的图片。更清晰一些。
看到了吧,是由好几块磁盘组成的。而且磁头也不止一个呢。这些盘片固定在一个轴上。每一个面都会存在一个磁头去读磁盘上的内容。这下就有了扇区和柱面的概念,不用怕,继续贴百度的图片。这样更好理解。(我自己画太丑了,后面的再我自己画,由于我也是菜鸟,可能有些地方不对,请大神指正)
这下就介绍完了,这些同心圆就是磁道track(就是一个圆圈),一些小的扇形就是扇区sector。一般而言一个扇区为512字节。由于费尔和格林贝格尔发现了“巨磁效应”。非常小的磁性变化会导致巨大的电阻变化。就导致现在的硬盘大容量和小型化。(但是读取速度还没有太大的变化)。
比如我们存一个文件,是存到一个盘面的吗?? 不是的,在不同的盘面的同一个位置按照磁道存储的,不同盘面的同一个磁道的连在一起就组成了柱面。就是相同半径的圆圈在不同的磁盘上就组成了一个空性圆柱。
我们的Windows打开我的电脑会发现A,B,C,D四个分区。那为什么要分区呢,首先一个分区可以有一个文件系统,先记住这个概念。分区是逻辑边界,并不是真的在磁盘上用工具刻出一块一块区域。如果不划分分区,那么整块磁盘只能是一个文件系统。
那么到底磁盘到底怎么划分分区,这些分区的信息怎样保存呢!!!
磁盘刚出场的时候。磁盘的厂商会对磁盘先格式化。这个过程就是划分磁道,扇区等,但里面没有任何分区。分区就是为了创建一个文件系统的。那怎么划分分区。分区的信息又在哪呢??
这就有了MBR(主引导记录)他在一个磁盘的最前面。也就是0盘面,0磁道,0扇区。一共是512的byte。
其中 446byte的bootloader(很重要,是引导加载程序)
64byte的分区表(每16个字节可以标示一个分区,那么也就是说一共可以划分4个主分区)
2byte的魔术(这两位标记MBR是否有效)
那分区的分法是什么。磁盘的分区是按照柱面存储的,同一个分区的文件在一个分区吧,刚才说了一个文件是在不同磁盘的同一位置。所以分区是按照柱面进行划分的。由高中的知识可以知道,在外面的磁道的线速度最快。所以最外面的柱面是0号柱面。他的读取速度最快。一般是放C盘(系统盘)。
那分区的信息怎么样保存呢?是一个文件直接开始从最前面写一直写到结束,然后再来一个文件继续写,一直写到结束吗?就像下图一样.
那么问题来了,怎么知道一个文件是从什么地方开始什么地方结束呢(因为磁盘上的数据都是0,1),这样写的文件不是把磁盘写成一团乱麻了么。。。所以不能这么写!!!
那怎么办呢,那必须要给这些数据一个逻辑边界。
linux的普遍的文件系统是ext形式的。
以ext2为例
一个分区存在数个数据块。
1.data块:
一个块的大小与数量格式化完就不再变了(1k,2k,4k)
一个块只能存放一个文件
2.inode块
一个inode大小固定为128 bytes
4.文件系统描述符
记录了每个块组的起始位置
5.block 位图
快速定位哪些块是空的
6.inode 位图
同上定位哪些inode是空的
目录其实是一张表,这张表记录了以下信息。
这下文件的信息的在第一片区域。当然这里的文件信息没有文件的名字,有inode号和其他一些属性。因为文件的名字是存放在上级目录中的,
其实上图还是不完全的,一个分区被分成数个数据块,一个数据块又有超级块和文件系统描述等东西存在
分区的开始是Boot Block,和加载操作系统有关。
现在一个分区是存在2个部分的,其实还有第三个,那就是日志文件系统。用来修复一些损坏(如windows 的强行关机,再开机的界面那里就要求修复)
(本菜鸟也是刚学习linux,若有错误,请大神指教)
lrwxrwxrwx. 1 root root 14 9月 20 22:57 system-release -> centos-release看看上面的那个链接文件。既然链接文件本应该写磁盘块的位置没有写磁盘块在哪,而是写的别的文件的路径。都没磁盘块。哪来的大小。那么他的大小是什么呢。我们发现,他是有大小的,大小是14。其实他是被链接文件的字符个数(centos-release)数数刚好14.
[root@localhost test_xuexi]# echo "help" >test [root@localhost test_xuexi]# ln /root/test_xuexi/test /root/txt [root@localhost test_xuexi]# ls ../ anaconda-ks.cfg Desktop Documents Downloads monitor_man.sh Music Pictures Public Templates test_xuexi txt Videos [root@localhost test_xuexi]# ll -i txt ls: 无法访问txt: 没有那个文件或目录 [root@localhost test_xuexi]# ll -i ../txt 35128852 -rw-r--r--. 2 root root 5 10月 14 22:02 ../txt [root@localhost test_xuexi]# ll -i ./test 35128852 -rw-r--r--. 2 root root 5 10月 14 22:02 ./test [root@localhost test_xuexi]# rm test [root@localhost test_xuexi]# cat ../txt help
[root@localhost ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 xfs 18G 4.2G 14G 24% / devtmpfs devtmpfs 898M 0 898M 0% /dev tmpfs tmpfs 912M 516K 912M 1% /dev/shm tmpfs tmpfs 912M 9.0M 904M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 297M 194M 104M 66% /boot tmpfs tmpfs 183M 32K 183M 1% /run/user/0 /dev/sr0 iso9660 4.1G 4.1G 0 100% /mnt/cdrom
[root@localhost ~]# blkid /dev/sr0: UUID="2015-12-09-23-14-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="e19602a8-407c-414d-b38f-83f14718477a" TYPE="xfs" /dev/sda2: UUID="cfd32983-7e1e-4d7d-ae3e-1e38dfc17616" TYPE="swap" /dev/sda3: UUID="f35003eb-898a-4681-8342-f8f6de03e541" TYPE="xfs"
[root@localhost ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x00079f53 Device Boot Start End Blocks Id System /dev/sda1 * 2048 616447 307200 83 Linux /dev/sda2 616448 4810751 2097152 82 Linux swap / Solaris /dev/sda3 4810752 41943039 18566144 83 Linux
设备的使用 mount 设备 挂载点 mount /dev/sr0 /mnt/cdrom
[root@localhost CentOS 7 x86_64]# umount /dev/sr0 umount: /run/media/root/CentOS 7 x86_64: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))