存储结构与磁盘划分

文件系统层次化标准(FHS,file system hierarchy standard)
        在windows操作系统中,要找到一个文件需要先进入该文件所在的磁盘分区(如C:\等   C:\ZSX\zsx.txt),然后在进入该分区下的一个具体目录,最终找到这个文件。在Linux操作系统中,一切文件都是从根目录(/)开始的(根目录/为第一级),然后按照FHS文件系统层次化标准采用树形结构来存放文件,以及定义了常用目录的用途。/root:root管理员的家目录(超级用户),系统用户是不需要有家目录的,因为系统用户的默认终端为/sbin/nologin,其不需要登陆到系统,只是负责Linux系统的一些服务配置。 /dev:以文件形式存放任何设备与接口,设备文件。   /etc:配置文件(passwd、shadow。Linux系统的一切都是文件,配置一个服务就是在修改该服务所对应的配置文件)      /home:用户家目录(普通用户)   /tmp:任何人都可以使用的共享临时目录   /boot:开机时需要的文件(驱动程序、引导文件等)   /var:经常发生变化的文件,如:数据库、日志文件等    /lib:系统的函数库文件   /usr:用户自己安装的程序文件     /mnt 与 /media :设备文件的挂载目录,自动挂载为/media  手动挂载一般为/mnt /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin:各种命令文件(二进制文件),bin目录内部都是开机时候不需要的命令(文件),sbin目录内部为开机时候需要的命令(文件)。 绝度路径与相对路径。路径指的是如何定位到某个文件。绝对路径指的是从根目录/开始写起的文件或目录名称,而相对路径指的是相对于当前路径的写法。

物理设备的命令规则
        系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。 SCSI/SATA/U盘:/dev/sd[a-p]   软驱:/dev/fd[0-1]   打印机:/dev/lp[0-15]  光驱:/dev/cdrom   鼠标:/dev/mouse   磁带机:/dev/st0 或 /dev/ht0  
        硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也很有讲究:主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。(扩展分区最多只能有一个) 注意:sda3只能表示是编号为3的分区,而不能判断sda设备上已经存在了3个分区。 即,扩展分区与主分区的编号只要符合为1-4之间的任意一个就可以了。
        /dev/sda并不一定就表示主板上第一个插槽上的存储设备, /dev目录中sda设备之所以是a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用iSCSI网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb这个设备就是这个道理。
        /dev/sda5的含义:/dev/目录中保存的应当是设备文件;其次,sd表示是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备,最后,5表示这个设备是一个逻辑分区。一言以蔽之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。
        主分区、扩展分区和逻辑分区的概念。硬盘设备是由大量的扇区(sectors)组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。如果一个物理磁盘需要划分为大于4个的逻辑磁盘(分区或卷),则需要抽出其中的一个主分区(16个字节)来作为扩展分分区,扩展分区里面都是包含指向逻辑分区的指针。扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针(一个指向另外一个分区的指针)。因此,扩展分区实际上并不能储存文件,能够储存文件(写入实际内容)的是主分区和逻辑分区。扩展分区本质上为指针,指向另一个扇区。另一个扇区则为逻辑分区(16x32=512,一个扇区最多可以记录32个逻辑分区的信息)。可以自己指定分区的大小,即格式化后形成的文件系统的大小。

磁盘的格式化和文件系统
        磁盘的格式化分为低级格式化和高级格式化。低级格式化完成将一个磁盘划分为多个扇区的操作,每个扇区能够储存512个字节的信息。在磁盘低级格式化完成后,一般要对磁盘进行分区(分区就是卷)。在逻辑上,每个分区就是一个独立的逻辑磁盘。每个分区的起始扇区和大小都记录在磁盘0扇区的的分区表中。在这个分区表中必须有一个分区被标记成活动的(即引导块),以保证能够从硬盘引导系统。在真正可以使用磁盘前,还需要对磁盘进行一次高级格式化,即设置一个引导块、空闲存储管理、根目录和一个空文件系统,同时在分区表中标记该分区所使用的文件系统。
        对于一块新的硬盘存储设备,需要先分区,然后再格式化文件系统,最后才能挂载并正常使用。格式化形成的文件系统格式有Ext2、Ext3、Ext4与XFS等。如果硬件储存设备(即每一个分区)没有进行格式化,则Linux系统无法得知怎么在其上写入数据,因此在对存储设备进行分区后还必须进行格式化处理。(在windows中,硬盘被划分为4个逻辑分区,每一个分区都格式化为NTFS文件系统,并挂载到C:\ D:\ E:\ F:\目录上,因此系统在读取硬盘上的数据时,先根据0扇区的分区表,找到相关分区的信息和位置,然后进入该分区,进一步寻找相关文件的FCB,从而找到具体的文件)。例如对硬盘sda分区后形成的sda1进行格式化后,才能对其进行写入数据,至于文件系统的概念,则详见操作系统的学习笔记(FAT、NTFS等文件系统)。

虚拟文件系统VFS
        计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构(用户不用管该文件系统具体是什么格式的文件系统),Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
        硬件设备的挂载。只有在分区、格式化后,对硬件设备(文件系统)进行挂载后,才能通过进入与其挂载的目录对硬盘进行读写等操作,即进入该目录,就可以读取该硬盘的数据了。

磁盘的分区与挂载
        当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”,其目的是让用户可以通过该目录来使用该硬件设备。                                                                                                                                              mount命令  用于挂载文件系统,其格式:mount [参数]  文件系统路径名称(分区)  挂载目录  
       -t 指定该分区文件系统的格式(可以不指定,linux系统自己能识别)  -a 挂载所有在/etc/fstab中定义的文件系统
       mount –a   //挂载所有在/etc/fstab中定义的文件系统,执行后自动检查/etc/fstab文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。  mount  /dev/sdb2  /backup  将分区/dev/sdb2挂载到目录/backup上  注意:系统在重启后该挂载就会失效,需要每次开机后都手动挂载一下。如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填
写格式(“设备文件 挂载目录 格式类型 权限选项 是否备份  是否自检”)写入到/etc/fstab文件中。如下:  
                    /dev/sdb2   /backup    ext4    defaults  0   0
权限选项: 若设置为defaults,则默认权限为:rw,suid,dev,exec,auto,nouser,async
是否备份:若为1,则开机后使用dump进行磁盘备份,为0则不备份
是否自检:若为1,则开机后进行磁盘自检,为0不自检。
umount命令  用于撤销已经挂载的设备文件,格式:umount  设备路径名称/挂载目录名称    两者只需要选一个
即可。   如  umount /dev/sdb2
        对于如何在luniux系统中添加一块新的硬盘、对硬盘进行分区(fdisk命令)和对分区格式化为文件系统(mkfs命令)的详细操作可以参考有关教材。
         df -h 命令   用于查看挂载状态和硬盘使用量等信息。
         du -sh 命令 用来查看一个或多个文件占用了多大的硬盘空间。可以使用du -sh /*命令来查看在Linux系统根目录下所有一级目录分别占用的空间大小。du -sh /tmp/zsx1/*  //查看zsx1目录内所有文件的占用大小信息     du -sh /tmp/zsx1   //查看zsx1目录的占用大小信息

改变系统对换区的大小(SWAP交换分区)
        对换区在操作系统进行中级调度(中程调度)时、缺段缺页等情况时会使用到对换区,对换区仍然是硬盘中的一个分区,通常内存中不常用的数据临时放到对换区中,实现虚拟存储管理。free -m或-h命令可以查看内存的使用量信息,也可以看到对换区(SWAP)的大小和使用量信息。下面介绍增加交换分区容量的方法,设SWAP原来容量大小为2047MB,为其增加5GB,为7167MB。可以在任意一块硬盘中划出一个容量为5GB的分区,方法跟上面分区方法一样,设分区为/dev/sdb2。使用SWAP分区专用的格式化命令mkswap对该分区进行格式化:mkswap   /dev/sdb2     然后将其挂载: swapon   /dev/sdb2  //这里使用专用的swapon命令    然后可以使用free -m  命令查看SWAP分区大小的变化。  最后将挂载信息写到/etc/fstab文件中:                                              /dev/sdb2   swap    swap    defaults  0    0

软硬方式链接(文件的共享)
        快捷方式就是指向原始文件的一个链接文件,可以让用户从不同的位置来访问原始的文件;原文件一旦被删除或剪切到其他地方后,会导致链接文件失效。在Linux系统中,存在硬链接和软链接两种文件。无论是硬链接还是软链接方式共享文件,文件本身只有一份,这与文件复制有着本质的区别。
        硬链接。共享该文件的每个文件有自己的FCB,其包含自己的文件名和指向索引结点的指针,它们的指针都指向同一个索引结点,即共享文件的索引结点。每添加一个硬链接,该文件的索引结点连接数就会增加1;而且只有当该文件的索引结点连接数为0时,才算彻底将它删除。不能跨分区对文件进行硬链接;也不能对目录文件进行硬链接。
        软链接(符号链接 symbolic link)。仅仅包含链接文件的路径名,因此可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。既可以对目录进行软链接,也可以跨分区(跨文件系统)对文件进行软链接。
        ln命令   ln 目标文件 链接文件    硬链接
                      ln -s 目标文件 链接文件    软链接(符号链接)
ls -s /home/etc/zsx /tmp/zsx1   则zsx1链接文件其实就是一个路径名:/home/etc/zsx,其大小为13bytes,因为/home/etc/zsx只有13个字符。如下:
# ls -l guess.sh 
-rw-rwxr--+ 1 root root 558 Mar  4 23:19 guess.sh  //该文件设置有ACL,且指向该索引结点的指针只有一个,即硬链接只有自己
# ln -s guess.sh zhang.sh
# ls -l zhang.sh 
lrwxrwxrwx. 1 root root 8 Mar  8 02:16 zhang.sh -> guess.sh //该文件是软链接文件,且实际内容为/root/work/guess.h 即只是一个路径名,文件符号位l,且指向索引结点的指针为1,如果是硬链接文件,一定大于1.  但是执行bash zhang.sh的效果跟bash guess.h一样。 且原文件删除,该链接文件无效。字母l一定是软链接文件。                                                                                                            # ln guess.sh  zhang.sh   硬链接
# ls -l zhang.sh 
-rw-rwxr--+ 2 root root 558 Mar  4 23:19 zhang.sh
# ls -l guess.sh 
-rw-rwxr--+ 2 root root 558 Mar  4 23:19 guess.sh
可以看出两个文件的属性是一样的,因此它们的地位都是平等的,其中任意一个文件被删除对其它文件无影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值