欢迎来我的博客
文件系统层次化标准(FHS)
目录名称 | 应放置的文件内容 |
---|---|
/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 | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
物理设备命名规则
在Linux 系统中一切皆文件,硬件设备也不例外。udev设备管理器的服务于会一直以守护进程的形式运行并真挺内核发出来的信号来管理/dev 目录下的设备文件
系统采用a~p来代表16块不同的硬盘,分区编号的规则如下:
- 主分区或扩展分区的编号从1开始,到4结束
- 逻辑分区从编号5开始
硬件设备 | 文件名称 |
---|---|
IDE 设备 | /dev/hd[a-d] |
SCSI/STAT/U 盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0或/dev/ht0 |
文件系统
Ext3: 日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误
Ext4: Ext3的改进版本,提供支持1EB的存储容量
XFS: 高性能的日志文件系统,意外宕机可以快速恢复可能被破坏的文件,最大支持存储容量为18EB
挂载硬件设备
mount
用于挂载文件系统
参数 | 作用 |
---|---|
-a | 挂载所有在/etc/fstab中定义的文件系统 |
-t | 指定文件系统的类型 |
将设备/dev/sdb2 挂载到/backup 目录
# mount /dev/sdb2 /backup
上诉代码在重启后,我们需要重新手动配置,永久配置需要修改/etc/fstab 文件
字段 | 意义 |
---|---|
设备文件 | 一般为设备的路径+设备名称,也可以写唯一识别码 |
挂载目录 | 指定要挂载到的目录,需在挂载前创建好 |
格式类型 | 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660 |
权限选项 | 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async |
是否备份 | 若为1则开机后使用dnmp进行磁盘备份,为0则不备份 |
是否自检 | 若为1则开机后进行磁盘自检,为0则不自检 |
将文件系统为ext4的硬件设备/dev/sdb2 开机后自动挂载到/backup目录,并保持默认权限无需开机自检,在/etc/fstab 文件中输入以下信息
# vim /etc/fstab
etc...
/dev/sdb2 /backup ext4 defaults 0 0
umount
撤销已挂载的设备文件
# umount /dev/sdb2
添加硬盘设备
fdisk
管理磁盘分区
参数 | 作用 |
---|---|
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区信息 |
w | 保存并退出 |
q | 不保存直接退出 |
创建操作略
du
查看文件数据占有量
# du -sh /someDic/
33M /someDic/
添加交换分区
SWAP分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,一边腾出物理空间让更活跃的程序服务来使用的技术
在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍
这里对Swap增加5G,并永久生效
# mkswap /dev/sdb2
# swapon /dev/sdb2
# free -m
etc...
Swap: 7167 0 7167
# vim /etc/fstab
etc...
/dev/sdb2 swap swap defaults 0 0
磁盘容量配额
管理员使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件格式,一旦达到这个最大值就不再允许继续使用
- 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用
- 应显示:当达到硬限制时会提示用户,且强制终止用户的操作
查看/boot 设置,并针对/boot目录增加其他人的写权限,保证用户能够正常写入数据
# vim /etccc/fstab
etc...
UID /boot xfs defaults,uquota 1 2
# reboot
# mount | grep boot
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)
# chmod -Rf o+w /boot
xfs_quota
专门针对XFS文件系统来管理quota从磁盘容量配额服务
硬盘使用量的软限制和硬限制分别为3MB和6MB,从创建文件数量的软限制和硬限制分别为3个和6个
# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 linux' /boot
# xfs_quota -x -c report /boot
User quota on /boot (/dev/sda1) Blocks
User ID Used Soft Hard Warn/Garce
----------------------------------------
root 95084 0 0 00 [-------]
linux 0 3072 6144 00 [-------]
做好上述限制后,分别创建一个体积为5MB和8MB的文件,可以发现8MB的文件收到了系统限制
# su - linux
$ dd if=/dev/zero of=/boot/linux bs=5M count=1
1+0 records in
1+0 records out
5242880 bytes (5.2MB) copied, 0.12 s, 42.3MB/s
$ dd if=/dev/zero of=/boot/linux bs=8M count=1
dd: error writing '/boot/tom': Disk quota exceeded
1+0 records in
0+0 records out
etc...
edquota
编辑用户的quota配额限制
把用户linux的硬盘使用量的限额从5MB提升到8MB
# edquota -u linux
Disk quotas for user linux:
FileSystem blocks soft hard inodes soft hard
/dev/sda 6144 3072 8192 1 3 6
# su - linux
$ dd if=/dev/zero of=/boot/linux bs=8M count=1
etc...
软硬方式链接
硬链接
可以理解为:指向原文件inode的指针,硬链接文件与原始文件其实就是同一个文件。我们每添加一个硬链接,该文件的inode连接数就会增加1,由于此特性,即便原始文件被删除,依然可以通过硬链接文件来访问。
需要注意的是,因技术限制,我们不能跨分区对目录文件进行链接
软连接
也成为符号链接,仅包含所链接文件的路径名,可以链接目录文件,也可以跨文件系统进行链接。但是,如果源文件删除后,链接文件也将失效
ln
创建链接文件
参数 | 作用 |
---|---|
-s | 创建符号链接(如果不带-s参数,则默认创建硬链接) |
-f | 强制创建文件或目录链接 |
-i | 覆盖前先询问 |
-v | 显示从创建链接的过程 |
创建一个软链接,这样当原始文件被删除后,便无法读取里面的内容了
# ehoo "test" > test.txt
# ln -s test.txt readit.txt
# cat test.txt
test
# cat readit.txt
test
# ls -l test.txt
-rw-r--r-- 1 root root etc...
# rm -f test.txt
# cat readit.txt
cat: readit.txt: No such file of directory
创建一个硬链接,这样不会因为原始文件被删除而无法访问,而且文件的硬盘链接数量增加到了2
# ehoo "test" > test.txt
# ln test.txt readit.txt
# cat test.txt
test
# cat readit.txt
test
# ls -l test.txt
-rw-r--r-- 2 root root etc...
# rm -f test.txt
# cat readit.txt
test