以前学linux的时候,毕竟自己没搞运维,就只注重了很多命令的运用,没太在意文件系统这块。买了本linux的书,这部分看了点东西,记个笔记哈哈。
有个场景,比如说我们现在的服务器上存储不够用了,那么当然需要加硬盘了对吧。
在linux上加硬盘,往硬盘上存数据,就会涉及到给硬盘分区、格式化(赋予文件系统)、挂载。
步骤是 分区(parted) ---> 格式化 (mkfs) ----->挂载(mount)
分区有很多工具。比如说fdisk,parted等等吧,这里需要知道两个分区类型。一种是传统老旧的类型叫MBR,一种是现在常用的类型GPT。
简单说下区别:MBR最多只有4个主分区,在逻辑分区上也比较局限(主分区个数有限,如果再想分区,就要抽出来一个扩展分区,在扩展分区里添加逻辑分区)。而GPT基本上分区数足够了,分区的存储大小也足够了。
fdisk这个分区工具只支持传统的MBR分区类型,parted分区工具这两种类型都支持。
分区工具的使用,就不多说了,这个每一步都有提示,线上手册也很多。
我在学习的时候看了慕课网的视频教程,不错的。贴个地址:http://www.imooc.com/learn/111
分区以后,要创建文件系统,mkfs(make file system)就是格式化创建文件系统,这个都是针对某一块磁盘的分区进行的格式化。ext4表示一种linux支持的文件系统。
比如: mkfs.ext4 /dev/sdf2
/dev/sdf2 这个就是设备名称。
你比如sda、sdb、sdc 等等,这就是第几块磁盘的意思,a就是第一块硬盘,b就是第二块。。。
比如sda1 sda2 sda3 这个就表示是第一块硬盘里,sda1第一块分区,sda2第二块分区。。。
格式化以后,就要挂载文件系统,就是把一个分区设备,挂到一个挂载点上。(挂载点说白了就是一个存在的目录)
命令格式就是 # mount /dev/sdb1 /home/bala
(这里再说个知识点,挂载命令里/dev/sdb1这个设备名,现在推荐的做法都是用uuid唯一标识符了,因为设备名称会改变,和内核发现设备的顺序有关)
在给一个分区创建文件系统时,会分配它一个唯一的uuid。
那么怎么样知道这个设备名,对应那个uuid呢?这里有个命令
# blkid #就是block id 可以看到哪个设备名对应哪个uuid 。然后挂载的时候,使用uuid,而不是设备名了哈哈
文件系统这块,必须要提及文件系统表/etc/fstab,系统启动的时候会读取这个文件,自动挂载里边的记录的设备。
比如查看下:# cat /etc/fstab
UUID=80c0be4e-fed2-4542-9259-d667b6ae34eb / ext4 defaults 1 1
UUID=9ae2f239-db3e-4aae-8cef-85d05cf9d61d /boot ext4 defaults 1 2
UUID=4bc97876-6add-4768-96ca-13876451a570 /home ext4 defaults 1 2
UUID=afddbec2-c7b2-4bde-97d3-fc4a4deb380e swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
表里各个项意思是:设备名 挂载点 文件系统类型 选项 balala
发现以上文件系统类型项中,出现比如swap tmpfs 等等。这些是特殊的文件系统,并不仅仅是物理媒介,他们是作为系统接口来使用的文件系统。
主要有proc(挂载在/proc)、sysfs(挂载在/sys)、tmpfs
还要提及swap。说白了就是内存不咋够用了,利用一些磁盘上的空间,进行数据交换的一块空间。可以使用free命令查看swap使用情况。
可以使用磁盘分区当交换空间,也可以使用一个文件当交换空间。具体命令就不列出了。
还有个比较重要的知识点就是inode节点。这个有兴趣的话,可以自己去查下资料。
文件系统这块总结几个常用的命令吧,很多命令里有很多选项参数,这里就不一一列举了。
# parted
# fdisk -l
# mkfs
# blkid
# mount
# umount
# sync # 同步,强制缓冲区里的东西,写到磁盘里。
# df # disk free磁盘使用情况
# du # 目录下,各个文件占用存储大小
# free # 查看内存和交换分区swap使用情况
# ls -i # inode节点
# vi /etc/fstab # 查看文件系统表