栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux存储结构

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux存储结构

Linux存储结构 一、系统的文件目录

FHS协议软约束,并没有硬性规定

目录名称对应内容
/boot开机所需文件—内核、开机菜单以及所需配置文件等
/dev以文件形式存放任何设备与接口
/etc配置文件
/home用户主目录(/home/zhangsan 普通用户家目录)
/bin存放单用户模式下还可以操作的命令(所有用户都可执行)
/lib开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin开机过程中需要的命令(root可执行)
/media用于挂载设备文件的目录
/opt放置第三方的软件
/root系统管理员的家目录
/srv一些网络服务的数据文件目录
/tmp任何人均可使用的“共享”临时目录
/proc虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local用户自行安装的软件
/usr/sbinLinux系统开机时不会使用到的软件/命令/脚本
/usr/share帮助与说明文件,也可放置共享文件
/var主要存放经常变化的文件,如日志
/lost+found当文件系统发生错误时,将一些丢失的文件片段存放在这里(ext3格式以上才有)
二、物理设备的命名

系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等

硬件设备文件名称
IDE设备/dev/hd[a-d]
SCSI/SATA/U盘/dev/sd[a-z]
Virtio设备/dev/vd[a-z]
软驱/dev/fd[0-1]
打印机/dev/lp[0-15]
光驱/dev/cdrom
鼠标/dev/mouse
磁带机/dev/st0或/dev/ht0

硬盘设备都是以“/dev/sd”开头。而一台主机上可以有多块硬盘,因此系统采用a~z来代表26块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也很有讲究:

主分区或扩展分区的编号从1开始,到4结束;
逻辑分区从编号5开始。

例:
/dev/sda2
/dev —— 硬件设备文件所在目录
sd —— SCSI/SATA/U盘 设备
a —— 内核识别到的第一块硬盘
2 —— 编号为2的主分区或扩展分区

/dev/sdb5
b —— 内核识别到的第二块硬盘
5 —— 编号为5的逻辑分区

思考:什么是分区?
  硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表占用64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。

思考:通过上面叙述可以看出,硬盘最多只能分4个区。如果想要更多分区该怎么办呢?
  将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区,就会多出512/16=32个逻辑分区。逻辑分区是在扩展分区中创建出来的

文件系统

ext2:不包含日志读写功能,数据丢失的可能性很大
ext3:是一款日志文件系统。能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误
ext4:Ext3的改进版本,作为RHEL 6系统中默认的文件管理系统,提高了读写速率
xfs:是一种高性能的日志文件系统,而且是RHEL 7/8中默认的文件管理系统。容量大

文件的存储方式:
inode:保存文件的属性,以及指向实际存储文件的block块(相当于指针)
block块:文件内容的存储位置,多个block块(block块的大小固定的)链式组合
VFS(虚拟文件系统)
虚拟文件系统,隐藏了底层的硬盘结构

分区、格式化、挂载 分区

  首先要添加一块硬盘,系统会识别硬盘,并根据udev服务命名,/dev/sdb 就是新添加的硬盘

[root@localhost ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

fdisk 命令
fdisk命令用于新建、修改及删除磁盘的分区表信息,语法格式为“fdisk 磁盘名称”

参数作用
m查看全部可用的参数
n添加新的分区
d删除某个分区信息
l列出所有可用的分区类型
t改变某个分区的类型
p查看分区表信息
w保存并退出
q不保存直接退出
[root@localhost ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x2e6b767c.

#参数n,新建一个分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
#新建主分区
Select (default p): p
#选择分区编号
Partition number (1-4, default 1): 2
#扇区起始位置
First sector (2048-41943039, default 2048): 
#扇区结束位置,填入大小自动计算
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +3G

Created a new partition 2 of type 'Linux' and of size 3 GiB.


Command (m for help): n
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
#新建扩展分区
Select (default p): e
Partition number (1,3,4, default 1): 3
First sector (6293504-41943039, default 6293504): 
Last sector, +sectors or +size{K,M,G,T,P} (6293504-41943039, default 41943039): +2G

Created a new partition 3 of type 'Extended' and of size 2 GiB.
#对扩展分区新建;逻辑分区
Command (m for help): n
Partition type
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
#选择逻辑分区   
Select (default p): l

Adding logical partition 5
First sector (6295552-10487807, default 6295552): 
Last sector, +sectors or +size{K,M,G,T,P} (6295552-10487807, default 10487807): +1G

Created a new partition 5 of type 'Linux' and of size 1 GiB.

#通过参数p查看分区表信息
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2e6b767c

Device     Boot Start     End Sectors Size Id Type
/dev/sdb2        2048    2073      26  13K 83 Linux
/dev/sdb3        4096 4198399 4194304   2G  5 Extended
/dev/sdb5        6144 2103295 2097152   1G 83 Linux

#参数w保存退出
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# 

通过上面操作,可以看到,创建了1个主分区,1个扩展分区,1个逻辑分区。扩展分区不能存储数据
删除分区使用参数d

格式化

mkfs 命令
对设备格式化,语法 mkfs.文件格式 设备

[root@localhost ~]# mkfs
mkfs         mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs

#对分区 /dev/sdb2 格式化
[root@localhost ~]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2              isize=512    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# 

mkswap 命令
用于对新设备进行交换分区格式化,语法格式为“mkswap 设备名称”

[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=963450d1-c5b6-4559-90ff-dc892afefc60

可以将分区做标识,标识改分区是用来挂载swap目录

[root@localhost ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): t 
Partition number (2,3,5, default 5): 5
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2e6b767c

Device     Boot   Start      End Sectors Size Id Type
/dev/sdb2          2048  6293503 6291456   3G 83 Linux
/dev/sdb3       6293504 10487807 4194304   2G  5 Extended
/dev/sdb5       6295552  8392703 2097152   1G 82 Linux swap / Solaris

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# 
挂载

1、mount 命令
mount命令用于挂载文件系统,格式为“mount 设备文件 挂载目录”。
将设备文件与-个目录做关联的动作叫做挂载

[root@localhost ~]# mkdir /hehe
[root@localhost ~]# mount /dev/sdb2 /hehe

2、swapon 命令
用于激活新的交换分区,语法格式“ swapon 设备文件”
可以看到挂载后,swap交换分区的容量已变为3G

#挂载前
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.3Gi       1.8Gi        16Mi       662Mi       2.2Gi
Swap:         2.0Gi          0B       2.0Gi
[root@localhost ~]# swapon /dev/sdb5
#挂载后
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.3Gi       1.8Gi        16Mi       662Mi       2.2Gi
Swap:         3.0Gi          0B       3.0Gi

3、df 命令
df命令用于查看已挂载的磁盘空间使用情况,语法格式为“df ”
[-h] 参数 —— 存储容量方便阅读
可以看到/dev/sdb2 已经被挂载到 /hehe 目录

[root@localhost ~]# mkdir /hehe
[root@localhost ~]# mount /dev/sdb2 /hehe
[root@localhost ~]# df -h 
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G     0  1.9G   0% /dev/shm
tmpfs                  1.9G   10M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                  376M   16K  376M   1% /run/user/42
tmpfs                  376M  3.5M  373M   1% /run/user/0
/dev/sr0               6.7G  6.7G     0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/sdb2              3.0G   54M  3.0G   2% /hehe

4、umount 命令
用于卸载设备文件,语法格式“ umount 设备文件/挂载目录 ”

#umount /hehe 与  umount /dev/sdb2 没有区别
[root@localhost ~]# umount /dev/sdb2
[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G     0  1.9G   0% /dev/shm
tmpfs                  1.9G   10M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                  376M   16K  376M   1% /run/user/42
tmpfs                  376M  3.5M  373M   1% /run/user/0
/dev/sr0               6.7G  6.7G     0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64

5、swapoff 命令
用于去激活交换分区设备

[root@localhost ~]# swapoff /dev/sdb5
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.3Gi       1.8Gi        16Mi       662Mi       2.2Gi
Swap:         2.0Gi          0B       2.0Gi

注:挂载当前生效,重启服务器会失效,如果想要重启后生效,需要写入到文件 /etc/fstab中
写入格式:
设备绝对路径 挂载目录 分区文件格式 权限 是否备份(0,1) 是否校验(0,1)

字段意义
设备文件一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录指定要挂载到的目录,需在挂载前创建好
格式类型指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自动校验若为1则开机后自动进行磁盘自检,为0则不自检
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 21 12:13:12 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=6e199477-a06e-4bbe-b79c-6701cf3e9e1a /boot  xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/sdb2 /hehe xfs defaults 0 0
/dev/sdb5 swap swap defaults 0 0

如果要卸载分区,通过卸载命令卸载后,再将 /etc/fstab 中的记录删除便可

三、磁盘容量限额

quota技术进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数

软限制:当达到软限制时会提示用户,但仍允许用户继续使用
硬限制:当达到硬限制时会提示用户,且强制终止用户的操作

首先要编辑 /etc/fstab ,在权限后加uquota,然后重启史目录支持quota技术
/dev/sdb2 /hehe xfs defaults,uquota 0 0

[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 21 12:13:12 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=6e199477-a06e-4bbe-b79c-6701cf3e9e1a /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/sdb2 /hehe xfs defaults,uquota  0 0
/dev/sdb5 swap swap defaults 0 0
~                               

[root@localhost ~]# reboot
[root@localhost ~]# mount | grep hehe
/dev/sdb2 on /hehe type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)

1、xfs_quota 命令
xfs_quota命令用于管理设备的磁盘容量配额,语法格式为“xfs_quota [参数] 配额 文件系统”。只针对 xfs 格式
一个文件有inode和block块组成。isoft、ihard代表对inode数量的软硬限制;bsoft、bhard代表对block块大小的软硬限制。最后一个参数是用户名。该限制对root无效

[root@localhost ~]# xfs_quota -x -c 'limit bsoft=3m bhard=5m isoft=3 ihard=6 
zhangsan' /hehe

通过新建文件来测试一下

[root@localhost ~]# chmod 777 /hehe
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /hehe
[zhangsan@localhost hehe]$ dd if=/dev/zero of=haha bs=4M count=1
1+0 records in
1+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.00542079 s, 774 MB/s
#超出硬限制的大小禁止操作
[zhangsan@localhost hehe]$ dd if=/dev/zero of=haha bs=7M count=1
dd: error writing 'haha': Disk quota exceeded
1+0 records in
0+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0151672 s, 277 MB/s
[zhangsan@localhost hehe]$ touch a b c d e 
[zhangsan@localhost hehe]$ ls
a  b  c  d  e  haha
#超出inode数量硬限制被禁止
[zhangsan@localhost hehe]$ touch f
touch: cannot touch 'f': Disk quota exceeded

2、edquota 命令
edquota命令用于管理系统的磁盘配额,语法格式为“ edquota [参数] 用户名 “

参数作用
-u对某个用户进行设置
-g对某个用户组进行设置
-p复制原有的规则到新的用户/组
-t限制宽限期限
[root@localhost ~]# edquota -u zhangsan
Disk quotas for user zhangsan (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb2                      4096       3072       51200          6        3        6

通过上述操作,将硬限制改为50M,再测试一下

[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /hehe
[zhangsan@localhost hehe]$ dd if=/dev/zero of=haha bs=49M count=1
1+0 records in
1+0 records out
51380224 bytes (51 MB, 49 MiB) copied, 0.657945 s, 78.1 MB/s
#超过50M被限制
[zhangsan@localhost hehe]$ dd if=/dev/zero of=haha bs=51M count=1
dd: error writing 'haha': Disk quota exceeded
1+0 records in
0+0 records out
50135040 bytes (50 MB, 48 MiB) copied, 0.591762 s, 84.7 MB/s
四、VDO(虚拟数据优化)

VDO(Virtual Data Optimize,虚拟数据优化)是一种通过压缩或删除存储设备上的数据来优化存储空间的技术。redhat8已默认启用
作用:压缩数据、去重

1、创建VDO卷

#创建VDO卷
[root@localhost ~]# vdo create --name=vdo0 --device=/dev/sdb --vdoLogicalSize=200G
Creating VDO vdo0
Starting VDO vdo0
Starting compression on VDO vdo0
VDO instance 0 volume is ready at /dev/mapper/vdo0

#查看新建卷的信息
[root@localhost ~]# vdo status --name=vdo0

注:命令比较长,可以通过 man vdo | grep vdo 来查看示例照着写

2、格式化。新建的VDO卷设备存放在/dev/mapper目录下,并以设备名称命名

[root@localhost ~]# mkfs.xfs /dev/mapper/vdo0
meta-data=/dev/mapper/vdo0       isize=512    agcount=4, agsize=13107200 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=52428800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=25600, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# 

3、挂载目录

[root@localhost ~]# mkdir /vdo
[root@localhost ~]# mount /dev/mapper/vdo0 /vdo

通过复制文件测试一下

#vdostats --human-readable 查看设备实际使用情况
[root@localhost vdo]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo0         20.0G      4.0G     16.0G  20%           99%
[root@localhost vdo]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G     0  1.9G   0% /dev/shm
tmpfs                  1.9G   10M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                  376M   16K  376M   1% /run/user/42
tmpfs                  376M  3.5M  373M   1% /run/user/0
/dev/sr0               6.7G  6.7G     0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/vdo0       200G  1.5G  199G   1% /vdo

[root@localhost ~]# cd /vdo
[root@localhost vdo]# dd if=/dev/zero of=haha bs=2G count=1
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.86658 s, 366 MB/s
[root@localhost vdo]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo0         20.0G      4.0G     16.0G  20%           99%
[root@localhost vdo]# cp haha hehe
[root@localhost vdo]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo0         20.0G      4.0G     16.0G  20%           99%
[root@localhost vdo]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G     0  1.9G   0% /dev/shm
tmpfs                  1.9G   10M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                  376M   16K  376M   1% /run/user/42
tmpfs                  376M  3.5M  373M   1% /run/user/0
/dev/sr0               6.7G  6.7G     0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/vdo0       200G  5.5G  195G   3% /vdo

通过上面可以看到,逻辑使用量增加了4G,但是实际的物理占用存储并没有变化,尤其是存储大量重复数据更明显
注:VDO设备卷在创建后会一直存在,但需要手动编辑/etc/fstab文件后才能在下一次重启后自动挂载生效。加上_netdev参数,表示等系统及网络都启动后再挂载VDO设备卷。

五、软硬链接

软链接(soft link):也叫符号链接(symbolic link),仅仅包含所链接文件的名称和路径,很像一个记录地址的标签。当原始文件被删除或移动后,新的链接文件也会随之失效,不能被访问。相当于快捷方式

硬链接(hard link):可以将它理解为一个“指向原始文件block的指针”,系统会创建出一个与原来一模一样的inode信息块。所以,硬链接文件与原始文件其实是一模一样的,只是名字不同。每添加一个硬链接,该文件的inode个数就会增加1;而且只有当该文件的inode个数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件block的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,不能跨分区对目录文件进行硬链接。

软链接只是指向了文件inode信息,硬链接相当于复制了一份inode信息

ln 命令

ln命令用于创建文件的软硬链接,语法格式为“ln [参数]原始文件名 链接文件名”

参数作用
-s创建软连接(如果不带-s参数,则默认创建硬链接)
-f强制创建文件或目录的链接
-i覆盖前先询问
-v显示创建链接的过程
#创建软链接
[root@localhost ~]# ln -s a b
#创建硬链接
[root@localhost ~]# ln a c

#查看文件内容,三份一摸一样
[root@localhost ~]# cat a
welecom to linux
[root@localhost ~]# cat b
welecom to linux
[root@localhost ~]# cat c
welecom to linux

#删除文件a
[root@localhost ~]# rm -r a
rm: remove regular file 'a'? y
#查看文件b与c,发现b已经失效
[root@localhost ~]# cat b
cat: b: No such file or directory
[root@localhost ~]# cat c
welecom to linux
[root@localhost ~]# 

#查看文件c的属性
[root@localhost ~]# ls -l c
-rw-r--r--. 1 root root 17 Apr 23 23:47 c
#创建硬链接后再次查看c的属性,inode的数值增加了
[root@localhost ~]# ln c d
[root@localhost ~]# ls -l c
-rw-r--r--. 2 root root 17 Apr 23 23:47 c
[root@localhost ~]# ln c e
[root@localhost ~]# ls -l c
-rw-r--r--. 3 root root 17 Apr 23 23:47 c

-rw-r–r–. 3 root root 17 Apr 23 23:47 c
- —— 一般文件
rw-r–r-- —— 所有者,所有组,其他用户权限
. —— ACL权限
3 —— inode数量
root root —— 所有者 所有组
17 Apr 23 23:47 —— mtime更新时间

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/838005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号