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 当文件系统发生错误时,将一些丢失的文件片段存放在这里

表示路径的方式:
绝对路径指的是从根目录(/)开始写起的文件或目录名称
相对路径则指的是相对于当前路径的写法

物理设备的命名规则

常见的硬件设备及其文件名称

硬件设备 文件名称
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

一般的硬盘设备都会是以“/dev/sd”开头,分区编号按照如下规则:
主分区或扩展分区的编号从1开始,到4结束;
逻辑分区从编号5开始。
设备文件名称

PM]GFRIK0)KKM2ALK(}A(3H.png

文件系统与数据资料

文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最 常见的文件系统如下所示。

文件系统 解释
Ext3 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据 的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分 之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便 在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
Ext4 Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批 量分配block块,从而极大地提高了读写效率。
XFS 是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意 外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费 极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需 求。

格式化后会发生如下事情
Linux创建一个硬盘地图’superblock’,记录此filesystem 的整体信息,包括inode/block的总量、 使用量、剩余量, 以及文件系统的格式与相关信息等;

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block 号码,默 认一个inode表格128字节,一个block记录消耗4B,记录满了后会新建inode用于扩展。
该文件的访问权限(read、write、execute);
该文件的所有者与所属组(owner、group);
该文件的大小(size);
该文件的创建或内容修改时间(ctime);
该文件的最后一次访问时间(atime);
该文件的修改时间(mtime);
文件的特殊权限(SUID、SGID、SBIT);
该文件的真实数据地址(point)。
block:用于存储数据
W23{`4JJJ85Z9R1FZ6C]2%G.png
计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘 结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口, 这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
A@WFF~VZ7~FB]ODR]F279SX.png

挂在硬件设备

mount

挂载文件系统 mount 文件系统 挂载目录
mount命令中的参数以及作用

参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型

临时挂载文件系统
系统在重启后挂载就会失效

  1. [root@node-1 ~]# mkdir backup
  2. [root@node-1 ~]# mount /dev/sda2 /root/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则不自检

umount

撤销已经挂载的设备文件 umount [挂载点/设备文件]

  1. [root@node-1 ~]# umount /dev/sda2

添加硬盘设备

fdisk

管理磁盘分区
fdisk [磁盘名称]
fdisk命令中的参数以及作用

参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区信息
w 保存并退出
q 不保存直接退出
  1. [root@localhost ~]# vim /etc/fstab
  2. #
  3. # /etc/fstab
  4. # Created by anaconda on Fri Apr 12 04:20:38 2019
  5. #
  6. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8. #
  9. /dev/mapper/centos-root / xfs defaults 0 0
  10. UUID=ff13d896-a59e-430d-8d14-3997d19f5de9 /boot xfs
  11. defaults 0 0
  12. /dev/mapper/centos-swap swap swap defaults 0 0
  13. /dev/sdb1 /data1 ext4 defaults 0 0
  14. /dev/sdb2 /data2 ext4 defaults 0 0

du

查看文件数据占用量
du [选项] [文件]

  1. [root@localhost ~]# du -sh /*
  2. 0 /bin
  3. 113M /boot
  4. 33M /data1
  5. 20K /data2
  6. 0 /dev
  7. 31M /etc
  8. 12K /home
  9. 0 /lib
  10. 0 /lib64
  11. 0 /media
  12. 0 /mnt
  13. 0 /opt
  14. du: cannot access ‘/proc/18479/task/18479/fd/4’: No such file or directory
  15. du: cannot access ‘/proc/18479/task/18479/fdinfo/4’: No such file or
  16. directory
  17. du: cannot access ‘/proc/18479/fd/4’: No such file or directory
  18. du: cannot access ‘/proc/18479/fdinfo/4’: No such file or directory
  19. 0 /proc
  20. 32K /root
  21. 9.6M /run
  22. 0 /sbin
  23. 0 /srv
  24. 0 /sys
  25. 4.0K /tmp
  26. 943M /usr
  27. 199M /var

添加交换分区

SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时 存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术

在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍

  1. [root@localhost ~]# umount /dev/sdb2
  2. [root@localhost ~]# mkswap /dev/sdb2
  3. mkswap: /dev/sdb2: warning: wiping old ext4 signature.
  4. Setting up swapspace version 1, size = 5241852 KiB
  5. no label, UUID=6707cde0-c7df-4557-b99b-45fbf5b36dcd
  6. [root@localhost ~]# free -h
  7. total used free shared buff/cache
  8. available
  9. Mem: 1.8G 149M 1.0G 9.5M 601M
  10. 1.4G
  11. Swap: 2.0G 0B 2.0G
  12. [root@localhost ~]# swapon /dev/sdb2
  13. [root@localhost ~]# free -h
  14. total used free shared buff/cache
  15. available
  16. Mem: 1.8G 153M 1.0G 9.5M 601M
  17. 1.4G
  18. Swap: 7.0G 0B 7.0G
  19. [root@localhost ~]# vim /etc/fstab
  20. #
  21. # /etc/fstab
  22. # Created by anaconda on Fri Apr 12 04:20:38 2019
  23. #
  24. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  25. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  26. #
  27. /dev/mapper/centos-root / xfs defaults 0 0
  28. UUID=ff13d896-a59e-430d-8d14-3997d19f5de9 /boot xfs
  29. defaults 0 0
  30. /dev/mapper/centos-swap swap swap defaults 0 0
  31. /dev/sdb1 /data1 ext4 defaults 0 0
  32. /dev/sdb2 swap swap defaults 0 0

磁盘容量配额

案例

案例描述

创建5个用户user1,user2,user3,user4,user5,密码和用户名相同,初始组为usergrp组。
5个用户都可以取得300M的磁盘使用空间,文件数量不限。超过250M,给于提示。
usergrp这个组内成员最大使用空间1GB。
如果有用户超过soft限制,给14天的宽限时间。

准备磁盘

创建分区

  1. [root@server ~]# fdisk /dev/sdb
  2. 欢迎使用 fdisk (util-linux 2.23.2)。
  3. 更改将停留在内存中,直到您决定将更改写入磁盘。
  4. 使用写入命令前请三思。
  5. Device does not contain a recognized partition table
  6. 使用磁盘标识符 0x5d679c57 创建新的 DOS 磁盘标签。
  7. 命令(输入 m 获取帮助):n
  8. Partition type:
  9. p primary (0 primary, 0 extended, 4 free)
  10. e extended
  11. Select (default p):
  12. Using default response p
  13. 分区号 (1-4,默认 1):
  14. 起始 扇区 (2048-10485759,默认为 2048):
  15. 将使用默认值 2048
  16. Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
  17. 分区 1 已设置为 Linux 类型,大小设为 2 GiB
  18. 命令(输入 m 获取帮助):w
  19. The partition table has been altered!
  20. Calling ioctl() to re-read partition table.
  21. 正在同步磁盘。
  22. [root@server ~]# partprobe
  23. Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
  24. [root@server ~]# lsblk
  25. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  26. sda 8:0 0 20G 0 disk
  27. ├─sda1 8:1 0 1G 0 part /boot
  28. └─sda2 8:2 0 19G 0 part
  29. ├─centos-root 253:0 0 17G 0 lvm /
  30. └─centos-swap 253:1 0 2G 0 lvm [SWAP]
  31. sdb 8:16 0 5G 0 disk
  32. └─sdb1 8:17 0 2G 0 part
  33. sr0 11:0 1 792M 0 rom
  1. 格式化文件系统
  1. [root@server ~]# mkfs.ext4 /dev/sdb1
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=
  4. OS type: Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 131072 inodes, 524288 blocks
  9. 26214 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=536870912
  12. 16 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (16384 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成
  1. 创建目录并挂载
  1. [root@server ~]# mkdir /mnt/mountpoint1
  2. [root@server ~]# mount /dev/sdb1 /mnt/mountpoint1/
  3. [root@server ~]# df -TH
  4. 文件系统 类型 容量 已用 可用 已用% 挂载点
  5. /dev/mapper/centos-root xfs 19G 1.2G 18G 7% /
  6. devtmpfs devtmpfs 945M 0 945M 0% /dev
  7. tmpfs tmpfs 956M 0 956M 0% /dev/shm
  8. tmpfs tmpfs 956M 9.1M 947M 1% /run
  9. tmpfs tmpfs 956M 0 956M 0% /sys/fs/cgroup
  10. /dev/sda1 xfs 1.1G 150M 915M 15% /boot
  11. tmpfs tmpfs 192M 0 192M 0% /run/user/0
  12. /dev/sdb1 ext4 2.1G 6.3M 2.0G 1% /mnt/mountpoint1

准备用户

  1. [root@server ~]# groupadd usergrp
  2. [root@server ~]# useradd -g usergrp -b /mnt/mountpoint1/ user1
  3. [root@server ~]# useradd -g usergrp -b /mnt/mountpoint1/ user2
  4. [root@server ~]# useradd -g usergrp -b /mnt/mountpoint1/ user3
  5. [root@server ~]# useradd -g usergrp -b /mnt/mountpoint1/ user4
  6. [root@server ~]# useradd -g usergrp -b /mnt/mountpoint1/ user5

确保文件系统支持

检查挂载点是否支持quota配置

  1. [root@server ~]# mount | grep mountpoint1
  2. /dev/sdb1 on /mnt/mountpoint1 type ext4 (rw,relatime,data=ordered)
  1. 重新挂在,让文件系统支持quota配置
  1. [root@server ~]# mount -o remount,usrquota,grpquota /mnt/mountpoint1/
  2. [root@server ~]# mount | grep mountpoint1
  3. /dev/sdb1 on /mnt/mountpoint1 type ext4
  4. (rw,relatime,quota,usrquota,grpquota,data=ordered)
  1. 确保开机自动支持quota配置
  1. [root@server ~]# tail -n 1 /etc/mtab >> /etc/fstab

安装quota

quotacheck主要参数
-a:扫描所有在/etc/mtab内含有quota参数的文件系统
-u:针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
-g:针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
-v:显示扫描过程的信息

  1. [root@server ~]# yum install quota -y

开启quota

  1. [root@server mountpoint1]# quotacheck -avug
  2. [root@server mountpoint1]# quotaon -avug
  3. /dev/sdb1 [/mnt/mountpoint1]: group quotas turned on
  4. /dev/sdb1 [/mnt/mountpoint1]: user quotas turned on

编辑限额配置

  1. [root@server mountpoint1]# edquota -u user1

JT)K3M0GN`42$99YDSHZ4_8.png
可以将针对user1的设置复制到user2

  1. [root@server mountpoint1]# edquota -p user1 -u user2

修改宽限时间

  1. [root@server mountpoint1]# edquota -t

查看限制情况

  1. [root@server mountpoint1]# repquota -as
  2. *** Report for user quotas on device /dev/sdb1
  3. Block grace time: 7days; Inode grace time: 7days
  4. Space limits File limits
  5. User used soft hard grace used soft hard grace
  6. ----------------------------------------------------------------------
  7. root -- 20K 0K 0K 2 0 0
  8. user1 -- 16K 245M 293M 4 0 0
  9. user2 -- 16K 245M 293M 4 0 0
  10. user3 -- 16K 0K 0K 4 0 0
  11. user4 -- 16K 0K 0K 4 0 0
  12. user5 -- 16K 0K 0K 4 0 0

测试

  1. [user1@server ~]$ dd if=/dev/zero of=bigfile bs=10M count=50
  2. sdb1: warning, user block quota exceeded.
  3. sdb1: write failed, user block limit reached.
  4. dd: 写入"bigfile" 出错: 超出磁盘限额
  5. 记录了30+0 的读入
  6. 记录了29+0 的写出
  7. 307183616字节(307 MB)已复制,1.96853 秒,156 MB/秒
  8. [user1@server ~]$ du -sh *
  9. 293M bigfile
  10. [user1@server ~]$

参考博客: https://www.cnblogs.com/sddai/p/11111895.html
Linux quota命令用于显示磁盘已使用的空间与限制。
执行quota指令,可查询磁盘空间的限制,并得知已使用多少空间。
参数说明:
-g 列出群组的磁盘空间限制。
-q 简明列表,只列出超过限制的部分。
-u 列出用户的磁盘空间限制。
-v 显示该用户或群组,在所有挂入系统的存储设备的空间限制。
-V 显示版本信息
quota命令还有软限制和硬限制的功能
软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

软硬方式连接

在Linux系统中存在硬链接和软连接两种文件
硬连接(hard link):
可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。所 以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文 件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。 换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以 通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行 链接。 JL~0E_E)_~JHX7AQ`A5D_X1.png
软连接(也称为符号连接[symbolic link]):
仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是, 当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具 有一样的性质。
FKLFSKXA@4J`RQ$D(0X(M%S.png
硬连接特点:
不论是修改源文件(test 文件),还是修改硬链接文件(test-hard 文件),另一个文件中的 数据都会发生改 变。
不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问。
硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的 硬 链接不能连接目录
软连接的特点:
不论是修改源文件(check),还是修改硬链接文件(check-soft),另一个文件中的数据都会 发生改变。
删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显 示文件不存在。
软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是 源文件的文件 名及 inode 号。
软链接可以链接目录。 软链接可以跨分区

ln

用于创建链接文件
ln [选项] 目标
ln命令中可用的参数以及作用

参数 作用
-s 创建“符号链接”(如果不带-s参数,则默认创建硬链接)
-f 强制创建文件或目录的链接
-i 覆盖前先询问
-v 显示创建链接的过程

软连接演示

  1. [root@localhost ~]# echo "hello" > test
  2. [root@localhost ~]# ln -s test test123
  3. [root@localhost ~]# cat test123
  4. hello
  5. [root@localhost ~]# ls -l test
  6. -rw-r--r--. 1 root root 6 Apr 12 06:10 test
  7. [root@localhost ~]# rm -f test
  8. [root@localhost ~]# cat test123
  9. cat: test123: No such file or directory

硬链接演示

  1. [root@localhost ~]# echo "hello" > test
  2. [root@localhost ~]# ln test test123
  3. [root@localhost ~]# cat test123
  4. hello
  5. [root@localhost ~]# ls -l test
  6. -rw-r--r--. 2 root root 6 Apr 12 06:12 test
  7. [root@localhost ~]# rm -f test
  8. [root@localhost ~]# cat test123
  9. hello