admin管理员组

文章数量:1563235

Liunx学习笔记 - 05 - 文件系统管理

1 分区类型和文件系统

分区类型

对于一块硬盘而言,需要分区才能使用,有三种分区类型:主分区、扩展分区和逻辑分区。

主分区:一块硬盘最多只能分4个主分区;
扩展分区:一块硬盘最多只能有1个扩展分区,且扩展分区也属于主分区的一种,即主分区加扩展分区最多只能有4个;然而扩展分区既不能存储数据也不能格式化,其唯一的作用是做逻辑分区处理(相当于中间商)。
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区。

所以,一般都是分1-3个主分区,外加1个扩展分区,然后在扩展分区里面再划分很多个的逻辑分区。

在Windows中,分区之后,他们的目录名称就按照分区的先后自动命名成了C、D、E、F、G……等。然而Linux中并无此说法。

Linux将分区命名为设备名,对于sata硬盘,即主分区1为/dev/sda1,主分区2为/dev/sda2,主分区3为/dev/sda3,扩展分区为/dev/sda4,逻辑分区1、2、3……分别为/dev/sda5、/dev/sda6、/dev/sda7……注意,即便没有主分区2和主分区3,那么逻辑分区依旧是从5开始编号的,只是此时扩展分区是紧接着上个主分区编号而已。即/dev/sda1-4始终是留给主分区的,而/dev/sda5-N则是给逻辑分区的!

比如,只分了一个主分区+一个扩展分区,在扩展分区里面则又分了3个逻辑分区,那么他们的设备名分别为:

分区设备名
主分区1/dev/sda1
扩展分区/dev/sda2
逻辑分区1/dev/sda5
逻辑分区2/dev/sda6
逻辑分区3/dev/sda7

更有意思的是,Linux中自己架构了一套目录树结构,所有的目录都是从根目录/开始的,而用户的文件则一般放到家目录/home/用户名中,管理员自己的目录为/root,跟启动相关的都在/boot中,还有其他很多目录,而这些目录是要跟硬盘的分区相挂载的,也就是要指定他们放到哪个分区里面去。
一般单独给/boot分个200M~1G空间,作为启动盘,有点像win7前面多出来那100M哈;
给根目录/分个10-100G的分区,类似于Windows的C盘系统了;
给/home分个上百G,类似于Windows中我的文档;
还有个特殊的/swap交换分区,它和Windows的虚拟内存比较类似,给它单独分个2-4G就好了,当然,如果你内存非常大,这个/swap不分也没问题的;
对于其它没有指定挂载点的目录,他们就跟着根目录/挂载到对应分区上了;
如果你还有特别重要的数据做备份,可以单独做个备份的分区来玩。

文件系统

windows里面分区也是要对应文件系统的,比如FAT32、NTFS等,硬盘一般都用NTFS,因为FAT32的话,大于4G的文件就无法支持,比如整个高清电影十几个G,就放不进去了。

同样,Linux也有自己的一套文件系统,叫ext2、ext3、ext4,现在都是ext4系统了。ext4系统最大系统容量达到1EB(1EB=1024PB=1024*1024TB),而单个文件的最大容量则达到16TB,这是非常非常大的数字了!

2 文件系统常用命令df、du、fsck、dumpe2fs

2.1 文件系统查看命令df

语法:df [选项] [挂载点]
选项:
-a 显示所有文件信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量,如kB、MB、GB等
-T 显示文件系统类型,如ext2、ext3、ext4等
-m 以MB为单位显示容量
-k 以KB为单位显示容量

示例

df -h /	#查看根分区的文件系统,显示
文件类型		容量 已用		可用 已用 挂载点
/dev/sda5	92G	4.5G	83G	6%	/
df -h /home	#查看家目录所在分区的文件系统,显示
文件类型		容量 	已用		可用 	已用 挂载点
/dev/sda7	132G	238M	125G	1%	/home

也可以写挂载点,比如df -h同时查看所有分区的挂载信息。

2.2 统计目录或文件大小du

语法:du [选项] [目录或文件名]
选项
-a 显示每个文件的磁盘占用量,默认只统计 子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如kB、MB、GB等
-s 统计总占用量,而不列出子目录和子文件的占用量

示例:

du -sh /home	#显示家目录的文件大小,显示如下
177M 	/home

如果对比df的显示结果就会发现,df出来的家目录为238M,而这里du的家目录才177M,这是由于df除了统计文件大小,还统计了系统、进程等临时文件所占资源,所以其统计出来的空间较大!而du只统计了文件大小,所以较小,du也是比较真实的大小反映。

2.3 文件系统修复命令fsck

语法:fsck [选项] 分区设备文件名
选项:
-a 不用显示用户提示,自动修复文件系统
-y 自动修复,和-a作用一致,但有些文件系统只支持-y

不建议使用文件系统修复命令fsck,搞不好就系统崩溃了,而且系统自己本身就会自动修复的。

2.4 显示磁盘状态命令dumpe2fs

语法:dumpe2fs 分区设备文件名
示例:

dumpe2fs /dev/sda5 | more	# 查看根目录所在分区/dev/sda5的磁盘状态,由于显示内容太长了,用管道符“|”给more来查看

显示的内容非常多,那么可以看到有一行是

……
Block count:		24413696
……
Block size:			4096
……

那么我们就知道每一个分块大小是4096kB,即4k,而共有24413696个分块,大约是192.3GB。

3 文件管理常用命令-挂载命令mount

挂载,即将设备文件名 与 对应设备(如硬盘分区、光盘、U盘、软盘)等挂载点相连接的过程。

3.1 查询与自动挂载

语法:mount [-l]
作用:查询系统中已经挂载的设备,-l会显示卷标名称

语法:mount -a
作用:依据配置文件/etc/fstab的内容,自动挂载

3.2 挂载命令格式

mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以为ext3、ext4、iso9660等文件系统,其中iso9660为光驱的标准。
-L 卷标名(别名):挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项,参考帮助。

3.3 挂载和卸载光盘

挂载光盘的过程:

先mkdir /mnt/cdrom/ 建立一个空目录用作挂载点(类似windows中的盘符,Linux中为空目录);
再将光盘放入光驱;
用mount -t iso9660 /dev/cdrom /mnt/cdrom即可将光驱的设备文件名/dev/cdrom与挂载点/mnt/cdrom挂载起来,或者用mount /dev/sr0 /mnt/cdrom,不写文件类型也没关系,系统会用默认的文件系统,也是OK的,这个/dev/sr0和/dev/cdrom的设备文件名是等效的,两者是软链接关系,都是指光驱;
接下来就可以cd /mnt/cdrom进入到挂载点目录,直接进入光驱目录了。

卸载光盘的过程:

先cd …退出光盘目录;注意在光盘目录中是无法卸载的,因为不能自己在梯子上把梯子抽调啊~
再unmount /mnt/cdrom或unmount /dev/cdrom或unmount /dev/sr0即可卸载光盘。相当于windows中的光盘右键鼠标,弹出的操作。

3.4 挂载和卸载U盘

挂载U盘的过程

先fdisk -l查看U盘的设备文件名,若仅有一块硬盘,其为sda,则插入U盘会被分成sdb,若只有一个分区,分区号为sdb1,若有两块硬盘分别为sda和sdb,则插入的U盘会被分成sdc,若只有一个分区,分区号为sdc1;
再mkdir /mnt/usb创建挂载点;
然后mount -t vfat /dev/sdb1 /mnt/usb来挂载U盘,因为Liunx不支持Windows的NTFS文件系统,至于fat32和fat64文件系统,要分别指定类型为vfat和fat才能挂载;
就可以cd /mnt/usb进入U盘目录操作了。

卸载U盘的过程

先cd …退出U盘目录;
再umount /dev/usb卸载U盘,即可。

4 fdisk分区

添加新硬盘;

fdisk -l查看新硬盘的设备文件名,若之前只有一块硬盘,那么新硬盘会被命名为/dev/sdb;

使用fdisk /dev/sdb命令进行分区;

在交互界面的提醒下完成分区过程……

用partprobe重新读取分区表信息;

用mkfs -t ext4 /dev/sdb1格式化各分区;

建立挂载点并挂载各分区,如mkdir /disk1,mount /dev/sdb1 /disk1。

但是这种手动挂载每次开机都要重新手动执行一遍,比较麻烦,若要开机自动挂载,可以修改配置文件/etc/fstab,把新分区写道该文件中去,即可,写入格式参考该文件中其他分区:

……
UUID=……		/disk1	ext4	defaults	1	2	
……

其中的UUID是硬盘通用的唯一标识码,用dumpe2fs -h /dev/sdb1可查看该UUID码,把它写进去就好了。

用mount -a先重新挂载一遍,要没问题,就好了,如果有问题,看哪里写错了,再该对就妥了。

本文标签: 文件系统学习笔记liunx