Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如: C, D,E ,F 盘等。
Linux 的文件结构是单个的树状结构,可以用 tree 进行展示。
1、Linux 磁盘分区和目录的关系
i、分区是物理上的区分;目录是逻辑上的区分。
ii、分区都必须挂载到目录树中的某个具体的目录才能进行读写操作。
iii、根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
现在我们查看分区和目录及使用情况:
fdisk 查看硬盘分区表,软件名称:fdisk (util-linux 2.13-pre7)
swapon:查询交换分区
df查看分区使用和挂载目录情况:软件名称:df (GNU coreutils) 5.97
挂载关系如下:
技巧:/home、/var 、/usr、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片。
du:查看文件(目录)占用空间情况:软件名称:du (GNU coreutils) 5.97
文件占用空间du、df的差别:
文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data。
du命令是用户级的程序,命令返回的值反映了分配给文件及目录的磁盘块数,但它不考虑Meta Data;
du:
查看各目录或文件所占空间
-s 只显示总和大小
-a / all 显示所有大小(包括文件)
-h 友好格式显示,比如用K/M/G表示大小。
--max-depth=N 统计的目录深度。当N=0时等同于-s,所以和--s参数不能同时出现。
-b 显示为字节数。
-k 显示为K字节数。
-m 显示为兆字节数。
df命令则查看文件系统的磁盘分配表,反映文件系统的的实际情况:包含了用户数据(文件及目录)和 Meta Data。
故(df –h /boot) > (du –h /boot)。
2、mount挂载:建立分区与目录的对应关系
要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为 “挂载点(mount point)”,对应的动作就是 “挂载(mount)”。
mount(命令)实现了将物理Linux磁盘分区细节的屏蔽,用户只需有统一的文件目录的逻辑概念。即所有的东西都是文件。
每次系统启动会根据该文件(/etc/fstab)定义自动挂载。若没有被自动挂载,分区将不能使用。如下是我的 /etc/fstab 的定义:
文件格式:
# <file system> <mount point> <type><options> <dump> <pass>
第1列是需要挂载的文件系统或存储设备,还可以label(e2label创建卷标,警告: 请不要在您的Linux系统/分区实践修改卷标,会导致您的Linux系统崩溃。)或UUID(全局唯一标识符)来表示;
第2列是挂载点;
第3列指定文件系统或分区的类型;
第4列为挂载选项,下面列出一些常用的选项:
auto: 系统自动挂载,fstab默认就是这个选项
ro: read-only
rw: read-write
defaults(包括参数rw、suid、dev、exec、auto、nouser、async)
defaults参数含义:
参数 | 含义 | 参数 | 含义 |
rw | 可读可写 | ro | 只读 |
suid | suid功能 | nosuid | 没有suid功能 |
dev | 可挂载设备文件 | nodev | 不可以挂载设备文件 |
exec | 允许执行分区中的可执行二进制文件 | exec | 不可以执行 |
dev | 可挂载设备文件 | nodev | 不可以挂载设备文件 |
nouser | 只有root可以挂载 | user | 任何用户都可以挂载 |
sync | 同步完成,对该设备的读写都不经过缓冲区 | async | 异步,对该设备的写会经过buffer,并不是立即写入物理设备中 |
auto | 开机自动挂载 |
|
|
第5列为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份。
第6列为fsck选项,告诉fsck程序以什么顺序检查文件系统(0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2,因为系统启动的时候,根分区是肯定要起来的)。
本例参数说明:
LBAEL=/ 是指用卷标的方式来表示,也可以用设备名,如/dev/sda2。
/ 这个是指挂载点。
ext3,swap 这些都是文件系统的类型。
default 这个是最重要,这个default里面包含五个参数。
1 1 后面的1代表最先扫描,最先起来。
1 2 后面的2代表优先级低一点,最后起来。
0 0 后面的0代表忽略启动,启动时不读这个文件系统。
Mount命令使用:
技巧:
①如果我要把第二个IDE插槽主硬盘上的windows C 区挂到文件系统中,那么数据项是:
/dev/hdc1 /c vfat defaults 0 0
②光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto,那么数据项是:
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
3、磁盘分区与目录挂载综合用例
①读取U盘文件,但是不可执行文件:
插入U盘,检测到U盘设备
#fdisk –l //U盘设备文件/dev/sdb4
挂载U盘设备,ls查看U盘中所有文件
查看文件
②挂载一个iso文件系统:
③新建FAT32文件系统500M分区,指定一个拥有人和拥有组的挂载
分区
格式化
挂载,指定用户ID
④新增500M 的swap空间,dd工具来创建一个swap文件
⑤挂载一个NFS的网络文件系统
查看对方计算机被共享文件夹
[root@localhost ~]# showmount-e 192.168.1.7
Export list for 192.168.1.7:
/var/ftp/pub 192.168.1.0/24
[root@localhost ~]# mount -tnfs 192.168.1.7:/var/ftp/pub/ /mnt/
[root@localhost ~]# df
每次启动的时候都要生效,就写在/etc/fstab文件
[root@localhost ~]# vi/etc/fstab
192.168.1.7:/var/ftp/pub /mnt nfs defaults 0 0
[root@localhost ~]#mount –oremount /mnt //操作立即生效