多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Linux系统中的文件和目录名称是严格区分大小写的。 linux系统的文件存储结构如下图: ![Image](https://box.kancloud.cn/f9d4e8c7079c18ae05102f43a5824ae8_672x296.png) Linux系统中常见的目录名称及相应内容 目录名称 应放置文件的内容 /boot 开机所需文件——内核、开机菜单及所需配置文件等 /dev 以文件形式存放任何设备与接口 /etc 配置文件 /home 用户家目录 /bin 存放单用户模式下还可以操作的命令 /lib 开机时用到的函数库,及/bin与/sbin下面的命令要调用的函数 /sbin 开机过程中需要的命令 /media 用于挂载设备文件的目录 /opt 设置第三方的软件 /root 系统管理员的家目录 /srv 一些网络服务的数据文件目录 /tmp 任何人均可使用的“共享”临时目录 /proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 /usr/local 用户自行安装的软件 /usr/sbin Linux系统开机时不会使用到的软件/命令/脚本 /usr/share 帮助与说明文件,也可放置共享文件 /var 主要存放经常变化的文件,如日志 /lost+found 当文件系统发生错误时,将一些丢失的文件片段存放这里 #### 物理设备的命名规则 udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件 **常见的硬件设备及其文件名称** 硬件设备 文件名称 IDE设备 /dev/hd\[a-d\] SCSI/SATA/U盘 /dev/sd\[a-p\] 软驱 /dev/fd\[0-1\] 打印机 /dev/lp\[0-15\] 光驱 /dev/cdrom 鼠标 /dev/mouse 磁带机 /dev/st0 或 /dev/ht0 目前IDE设备很少,所以一般都是以“/dev/sd”开头,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配)。 **硬盘分区编号:** - 主分区或扩展分区的编号从1开始,到4结束 - 逻辑分区从编号5开始 注意: 设备名称的误解:*/*dev目录中的sda设备之所是a,是由系统内核的识别顺序来决定的,只是恰巧很多主板插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/ada。 分区名称的误解:如sda3,认为是设备上的第三个分区(这是错误的)。因为分区的数字编码不一定是强制顺延下来的,也可能是手工指定的。因此sda3只能表示编号为3的分区,而不能判断sda设备上已经存在了3个分区。 ![Image](https://box.kancloud.cn/e05cafe934a72a11f608e4f4cb7c6494_462x226.png) “/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。 硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,里面保存着主引导记录与分区表信息。 主引导记录占446字节,分区表为64字节,结束符占用2字节;其中分区表每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。 ![Image](https://box.kancloud.cn/f9ddce4403a2af1cd79bddea24d78dd5_547x277.png) 这样如果需要超出4个分区,就需要将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。即,扩展分区其实并不是一个真正的分区,像一个占用16字节分区表空间的指针——一个指向另外一个分区的指针。因此,用户一般选3个主分区加1个扩展分区的方法,然后在扩展分区中创建多个逻辑分区。 注意:所谓扩展分区,严格地说它不是一个实际意义的分区,仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。 ![Image](https://box.kancloud.cn/cac03cdade89039af37d88ba5cf5f70e_724x254.png) #### 文件系统与数据资料 最常见的文件系统: - Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而当硬盘容量较大时,所需的修复时间也很长,而且也不是百分之百的保证资料不丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。 - Ext4:Ext3的改进版本,作为RHEL6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1073741824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高读写效率。 - XFS:是一种高性能的日志文件系统,而且是RHEL7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,既可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB。 VFS架构示意图: ![Image](https://box.kancloud.cn/1fd328161f142b8c48a220443cd94ec6_599x579.png) 从中可见,实际文件系统在VFS下隐藏了自己的特性和细节,这样用户在日常使用时会觉得“文件系统都是一样的”,也就可以随意使用各种命令在任何文件系统中进行各种操作了。 #### mount命令 mount命令用于挂载文件系统,格式为“mount 文件系统 挂载目录”。 mount命令中的参数及作用 参数 作用 -a 挂载所有在/etc/fstab中定义的文件系统 -t 指定文件系统的类型 “挂载”就是当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联。 其中-a,它会在执行后自动检测/etc/fstab文件中有无疏漏被挂载的设备文件,如有,则进行自动挂载操作。 如:把设备/dev/sdb2挂载到/backup目录。mount /dev/sdb2 /backup 但是这样不是永久挂载重启之后又要重新挂载。那么就要按照指定的格式 “**设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检**”写入到/etc/fstab文件中。 **用于挂载信息的指定填写格式中,各字段所表示的意义** 字段 意义 设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier) 挂载目录 指定要挂载到的目录,需在挂载前创建好 格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等 权限选项 若设置为defaults,则默认权限为:rw,suid,dev,exec,auto,nouser,async 是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份 是否自检 若为1则开机后自动进行磁盘自检,为0则不自检 如:将文件系统为ext4设备/dev/sdb2开机后自动挂载到/backup上,且默认权限无需开机自检。修改/etc/fstab /dev/sdb2 /backup ext4 defaults 0 0 #### umount命令 umount命令用于撤销已经挂载的设备文件,格式为“umount \[挂载点/设备文件\]” 如:手动卸载/dev/sdb2设备文件, umount /dev/sdb2 #### fdisk命令 fdisk命令用于管理磁盘分区,格式为“fdisk \[磁盘名称\]”。 它提供了添加、删除、转换分区等功能于一身的“一站式服务”。 fdisk命令中的参数及作用 参数 作用 m 查看全部可用的参数 n 添加新的分区 d 删除某个分区信息 l 列出所有可用的分区类型 t 改变某个分区的类型 p 查看分区信息 w 保存并退出 q 不保存直接退出 如:fdisk尝试管理/dev/sdb硬盘设备。提示信息后输入参数p查看硬盘设备内已有的分区信息,其中包括硬盘的容量大小、扇区个数等信息,**fdisk /dev/sdb p****(查看信息)** n (新建分区) p(创建主分区) 还是e(创建扩展分区) 1(默认一个分区编号) 回车确定起始扇区位置,结束扇区位置不管,输入+2G(创建出一个容量为2GB的硬盘分区)。 如果file /dev/sdb1查不到,是系统有时候并没有自动把分区信息同步到Linux内核,我们输入两次partprobe手动将分区信息同步到内核,还不行就重启。 #### mkfs格式化操作命令 在shell终端中输入mkfs后再敲两下补齐命令tab。会把常用的文件系统名称用后缀的方式保存成了多个命令文件,——mkfs.文件类型名称。如:要格式分区XFS文件系统,则为mkfs.xfs /dev/sdb1。 **分区和格式化结束之后,就是挂载并使用存储设备。** - 首先创建一个挂载设备的挂载点目录(mkdir /newFS) - 然后使用mount命令将存储设备与挂载点进行关联(mount /dev/sdb1 /newFS) - 最后使用df -h命令来查看挂载状态和硬盘使用量信息(df -h) #### du命令 du命令用于查看文件数据占用量,格式为“du \[选项\] \[文件\]”。 意思就是查看一个或多个文件占用了多大的硬盘空间。我们还可以使用du -sh /\*命令 来查看在Linux系统根目录下所有一级目录分别占用的空间大小。 如:先复制文件在查看占用多大容量,cp -rf /etc/\* /newFS; ls /newFS; du -sh /newFS #### swap交换分区 SWAP交换分区是一种通过在硬盘中预先划分一定的空间,然后把内存中暂时不常用的数据临时存放到硬盘中。在生产环境中,交换分区大小一般为真实物理内存的1.5~2倍。 - 先通过fdisk /dev/sdb建立一个5G的分区。 - 然后通过SWAP分区专用的格式化命令**mkswap**,对新建的分区进行格式化。 - 其后,使用**swapon**把准备好的SWAP分区设备正式挂载到系统中(可以先用 free -m 查看下变化,没有挂载前的,挂载后的)。 - 最后,为了重启依然生效,修改/etc/fstab。 注意查看swap是通过free命令来看 #### quota命令 quota命令进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。 quota命令还有软限制和硬限制功能: - 软限制:当达到软限制时会提示用户,但仍运行用户在限定的额度内继续使用。 - 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。 quota已安装在RHEL7中,但存储设备却默认没有开启对quota支持,需要手动编辑配置文件,让系统中的/boot目录能够支持quota磁盘配额技术。 \# vim /etc/fstab (就是对目录/boot那行,添加一个uquota) UUID=812b1f7c-8b5b-43da-8c06d-b9999e0f48b /boot xfs defaults,**uquota** 1 2 \# reboot (重启系统) \# mount | grep boot (使用mount命令查看) /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,**usrquota**) \# useradd tom (创建一个用于检测quota磁盘容量配额效果的用户tom) \# chmod -Rf o+w /boot (对/boot目录加其他人的写权限,保证用户能正常写入数据) #### xfs\_quota命令 xfs\_quota命令是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的。 格式为“xfs\_quota \[参数\] 配额 文件系统”。其中-c参数用于以参数形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。 举例:用xfs\_quota来设置用户tom对/boot目录的quota磁盘容量配额。软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个。 \# xfs\_quota -x -c ‘limit bsofg=3m bhard=6m isoft=3 ihard=6 tom’ /boot \# xfs\_quota -x -c report /boot 尝试切换到tom,创建一个体积为5MB和8MB的文件,发现8MB时受限制。 \# su – tom \# dd if=/dev/zero of=/boo/tom bs=5M count=1 (命令成功) \# dd if=/dev/zero of=/boot/tom bs=8M count=1(命令出现错误提示,配额限制) #### edquota命令 edquota命令用于编辑用户的quota配额限制,格式为“edquota \[参数\] \[用户\]” 其中-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置。 举例:把tom用户的硬盘使用量硬限制从5MB提升到8MB \# edquota -u tom (进入vim或vi编辑里面,修改对应hard下行的数字即可) \# su – tom (切换到tom用户) \# dd if=/dev/zero of=/boot/tom bs=8M count=1 (成功) \# dd if=/dev/zero of=/boot/tom bs=10M count=1 (超出配额,失败) #### 软硬方式链接 - 硬链接(hard link):可以将它理解为一个“指向原始文件inode的指针”,系统 不为它分配独立的inode和文件。所以硬链接与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当改文件的inode连接数为0,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。 - 软链接(也称为符号链接\[symbolic link\]):仅仅包含所有链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但,当原始文件被删除后,链接文件也将失效,这一点类似于windows系统中的“快捷方式“。 #### ln 命令 ln命令用于创建链接文件,格式为“ln \[选项\] 目标” ln命令中可用的参数及作用 参数 作用 -s 创建“符号链接”(如果不带-s参数,则默认创建硬链接) -f 强制创建文件或目录的链接 -i 覆盖前先询问 -v 显示创建链接的过程 举例:创建一个类似于windows的快捷方式的软链接。 \# echo “Welcome to linuxprobe.com” > readme.txt (创建readme.txt) \# ln -s readme.txt readit.txt (创建软链接readit.txt) \# cat readme.txt (查看readme.txt) \# cat readit.txt (查看readit.txt) \# ls -l readme.txt (查看readme.txt的属性) \# rm -f readme.txt (删除readme.txt) \# cat readit.txt (原文件删除了,所以软链接也失效了) 下面创建一个硬链接,即相当于针对原始文件的硬盘存储位置创建一个指针。原始文件删除,还是可以读取。 \# echo “welcome to linuxprobe.com” > readme.txt (创建readme.txt) \# ln readme.txt readit.txt (创建硬链接readit.txt) \# cat readme.txt (查看readme.txt内容) \# cat readit.txt (查看readit.txt内容) \# ls -l readme.txt (这个结果可以看到硬盘链接数量增加到了2) \# rm -f readme.txt (删除掉原始文件readme.txt) \# cat readit.txt (硬链接readit.txt还可以看到)