总结mount命令用法,参数、挂载选项
mount命令可以将指定的文件系统,挂载到指定的目录(挂载点),再linux系统下必须先挂载后才能访问设备资料
mount /dev/sdb /mnt #把sdb这个磁盘挂载到/mnt这个目录
mount -l 显示挂载情况
mount -a 读取/etc/fstab所有的挂载设置
mount -o 选项
mount -o ro 只读
mount -o rw 读写
mount -o rw,exec 允许执行
mount -o noexec,rw 不允许执行
-l 显示系统以挂载的设备信息
-a 加载文件/etc/fstab中设置的所有设备
-t t<文件系统类型> 指定设备的文件系统类型。如果不设置,mount自行选择挂载的文件类型 minix Linux最早使用的文件系统。 ext2 Linux目前的常用文件系统。 msdos MS-DOS 的 FAT。 vfat Win85/98 的 VFAT。 nfs 网络文件系统。 iso9660 CD-ROM光盘的标准文件系统。 ntfs Windows NT的文件系统。 hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。 auto 自动检测文件系统。
-o 添加挂载选项,是安全、性能优化重要参数
-r 只读,等于-o ro
-w 读写,等-o rw
mount -o选项详解
参数 含义
async 以异步方式处理文件系统I/O操作,数据不会同步写入磁盘,而是写到缓冲区,提高系统性能,但损失数据安全性
sync 所有I/O操作同步处理,数据同步写入磁盘,性能较弱,数据安全性高
atime/noatime 文件被访问时是否修改时间戳,不更改时间,可以提高磁盘I/O速度
auto/noauto 通过-a参数可以自动被挂载/不自动挂载
defaults 默认值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多默认值
exec/noexec 是否允许执行二进制程序,取消提供安全性
suid/nosuid 是否允许suid(特殊权限)生效
user/nouser 是否允许普通用户挂载
remount 重新挂载
ro 只读
rw 读写
退出光盘的命令
Eject弹出设备命令
eject # 弹出光驱
eject -r /dev/sr0 # 指定设备弹出
inode、block、硬链接
文件属性查看
[root@bogon ~]# ll -h tet.log
-rw-r--r--. 1 root root 5 Apr 7 16:34 tet.log
文件权限, 硬链接数量,属主,属组,文件大小,文件修改时间,文件名
查看文件、文件夹的inode信息
可以用stat命令,查看某个文件的具体inode信息
[root@bogon ~]# stat tet.log
File: ‘tet.log’
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 36771844 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-04-07 16:33:41.488885493 +0800
Modify: 2022-04-07 16:34:01.878883907 +0800
Change: 2022-04-07 16:34:01.878883907 +0800
Birth: -
[root@bogon ~]# ll -hi tet.log
36771844 -rw-r--r--. 1 root root 5 Apr 7 16:34 tet.log
[root@bogon ~]# ll -hi /opt
total 0
279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt
36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2
[root@bogon ~]# stat /opt
File: ‘/opt’
Size: 30 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 83 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:usr_t:s0
Access: 2022-04-07 17:18:12.363677726 +0800
Modify: 2022-04-07 16:58:09.023771334 +0800
Change: 2022-04-07 16:58:09.023771334 +0800
Birth: -
什么是inode
linux的文件名,其实是分为了【元数据】+【文件内容】,两部分
元数据,也就是文件的属性信息,可以通过stat命令查看到
一个新的磁盘,格式化文件系统后,就有了2个存储空间,一个叫做
inode存储空间,存储设备上,所有文件名,对应的元数据信息(文件的属性信息)
一个叫做block存储空间(存储设备上,所有的文件的内容,数据都在这)
存储元数据信息的空间,被称之为Inode
存储文件数据的空间,被称之为block
linux读取文件内容,其实是 以 文件名 > inode编号 > block 的顺序来读取
在你创建文件前必须先要分区、格式化(创建文件系统)
创建文件系统后inode和block的数量就会固定下来。
mkfs.xfs /dev/sdc 格式化xfs文件系统后,inode和block的数量就固定下来了
可以通过xfs_info查看
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
[root@bogon ~]# ls -l -i /opt
total 0
3635430 -rw-r--r--. 1 root root 0 Apr 7 18:14 666.log
279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt
36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2
通过ls -i参数,查看文件,文件夹的inode号码
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
使用如下命令,查看文件的inode号
ls -i
为什么linux要设计inode
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
对inode和block的理解
一个新的磁盘,格式化文件系统后,就有了两个储存空间,
一个叫做inode存储空间,存储设备上,所有文件名,对应的元数据信息(文件的属性信息)
linux系统内部不使用文件名,而是使用inode号码来识别文件,对于系统来说,文件名只是inode号码便于识别的别称或者绰号
一个叫做block存储空间,(存储设备上所有的文件的内容,数据都在这里)
block是linux实际存储数据的空间,是8个连续的扇区,(8*512bytes=4KB)
单个大文件需要用多个block来储存
特别小的文件即使不满足4KB,也只能浪费其空间
1 block = 4KB
存储元数据信息的空间,被称为inode
存储文件数据的空间,被称为block
linux读取文件内容,其实是以文件名 > inode编号 > block 的顺序来读取的
用户通过文件名,打开文件。实际上系统内部这个过程分为了三步:
首先,系统找到这个文件名对应的inode号码;
其次:通过inode号码,获取inode信息;
最后:根据indoe信息,找到文件数据所在的block,读取数据
inode存储哪些内容
inode 包含很多的文件元信息,但不包含文件名
每一个inode都有一个号码,操作系统用inode号码来识别不同的文件
文件的字节数
文件的拥有者的User ID
文件的Group ID
文件的读写执行权限
文件的时间戳,总共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间
文件数据block的位置
linux的文件名、和inode、block的关系
在创建文件前必须要先分区,格式化创建文件系统,在创建文件系统后inode和block的数量就会固定下来,
inode存储空间,存储设备上,所有文件名,对应的元数据信息(文件的属性信息)
block存储空间,(存储设备上所有的文件的内容,数据都在这里)
linux读取文件内容,其实是以文件名 > inode编号 > block 的顺序来读取的
用户通过文件名,打开文件。实际上系统内部这个过程分为了三步:
首先,系统找到这个文件名对应的inode号码;
其次:通过inode号码,获取inode信息;
最后:根据indoe信息,找到文件数据所在的block,读取数据
文件夹和文件的关系、从inode的角度理解
目录是个特殊文件,目录保存的时当前目录的文件名字
文件夹就是方便人类记忆文件存在哪里,然后通过这个文件名,找到对应的文件inode号
inode号里记录了文件数据所处的block位置,最终访问到数据
每个inod都有一个号码,操作系统用indoe号码来识别不同的文件
可以通过ls -i参数来查看文件,文件夹的indoe号码
[root@bogon ~]# ls -lh -i /opt
total 0
279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt
36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2
删除文件和inode、block的关系
硬链接、软连接的区别,以及用法
软连接,文件储存的时源文件的路径
1,创建软连接 ln -s
2,访问软连接文件
3,其实时访问到源文件的路径,源文件的文件名
4,访问源文件的indoe号 ls -i
5,indoe找到block,访问到数据
软连接文件的inode号和源文件不同,作用时存储源文件的路径
删除普通软连接,不影响源文件
删除源文件,软连接找不到目标,报错提示
硬链接就是一个数据(block)被多个相同的indoe号的文件指向
注意:不得跨分区设置(indoe号,是基于分区来创建的)
表示文件,属性完全一致,数据也是同一个block区域
称之为硬链接
由于文件夹中存在两个特殊的子目录,
一个是 . 当前目录,表示其本身
一个是 .. 上一级目录,也可以通过它,找到当前目录
如果修改文件的硬链接数,要在它的第一层文件夹中,创建子文件夹,即可增加硬链接的数量
硬链接创建语法
ln 源文件 目标文件
硬链接特点
1.可以对已存在的文件做硬链接,该文件的硬链接数,至少是1,为0就表示文件不存在
2.硬链接的文件,inode相同,属性一致
3.只能在同一个磁盘分区下,同一个文件系统下创建硬链接
4.不能对文件夹创建硬链接,只有文件可以
5.删除一个硬链接,不影响其他相同inode号的文件
6.文件夹的硬链接,默认是2个,以及是2+(第一层子目录总数)=文件夹的硬链接数量
7.可以用任意一个硬链接作为入口,操作文件(修改的其实是block中的数据)
8.当文件的硬链接数为0时,文件真的被删除
查看分区的inode和block数量(xfs_info)
inode和block的数量,是在你mkfs创建文件系统的时候,就已经确定好了
ext4的文件系统,查看文件系统信息的命令,dumpe2fs
xfs文件系统,查看文件系统信息的命令,xfs_info
查看xfs文件系统的信息
isize表示inode的容量=512bytes(字节)
sectsz表示扇区=512bytes
bsize表示block容量:是4096bytes = 4KB
blocks = 4096*5242624 =21473787904
可见/dev/sdc1分区的总容量是 20G左右
查看某分区,有多少block让你用,(查看这个磁盘,分区还有多少容量)
df -h # -h参数,是友好的显示容量单位,如kb ,mb,gb
查看某分区,一共有多少inode容量编号给我们用
[root@bogon ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 8910848 132280 8778568 2% /
devtmpfs 500499 429 500070 1% /dev
tmpfs 503553 1 503552 1% /dev/shm
tmpfs 503553 1280 502273 1% /run
tmpfs 503553 16 503537 1% /sys/fs/cgroup
/dev/sda1 524288 326 523962 1% /boot
tmpfs 503553 1 503552 1% /run/user/0
/dev/sdc1 10485248 3 10485245 1% /mnt
[root@bogon ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 8.5M 130K 8.4M 2% /
devtmpfs 489K 429 489K 1% /dev
tmpfs 492K 1 492K 1% /dev/shm
tmpfs 492K 1.3K 491K 1% /run
tmpfs 492K 16 492K 1% /sys/fs/cgroup
/dev/sda1 512K 326 512K 1% /boot
tmpfs 492K 1 492K 1% /run/user/0
/dev/sdc1 10M 3 10M 1% /mnt
inode的作用
df -h
查看磁盘block空间的使用情况,如果看到分区快满了,可以去删除大容量的文件
df -i
inode存储文件属性的
当你机器上有大量的无用的小文件,空文件,白白消耗inode数量
查看磁盘分区inode空间的使用情况,如果可用的不多的,删除大量的4kb小文件即可,因为它们真用了太多的无效inode编号,应该留给别人用。
明明 df -h看到磁盘还是有空间,但是写入数据,系统提示你
no space for disk,你虽然还有block空间可以存数据
但是你的inode数量肯定是没了
touch 创建新文件,想分配inode编号,发现不够用了
raid技术的作用
raid磁盘列阵组能够提升数据冗余性,当然也增加了硬盘的价格成本,需要更多的硬盘,只不过数据本身的价值是超过硬盘购买的价格的,raid除了能够保障数据丢失造成的严重损失,还能提升硬盘的读写效率,被应用在广泛的企业中
raid0
是将两个或者两个以上相同的型号,容量的硬盘组合,磁盘阵列的总和便是多个硬盘的总和
paid的特点
至少需要两块磁盘
数据==条带化==分布到磁盘==,高的读写性能==100%==高储存的空间利用率
数据==没有冗余策略==一块磁盘故障,数据将无法恢复
应用场景:对性能要求不高但对数据安全性,和可靠性要求不高的场景,比如音频,视频储存等
由于raid 0的特性,数据一次写入到各个物理硬盘中,数据是分开放的,因此损坏任意一个磁盘都会对完整的数据破坏,对于企业来说,是不允许的
raid1
paid 1技术,是将两块以上的硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,也有数据备份
但是这种方式,会极大降低磁盘的利用率,假设两块磁盘一共4T,真实数据只有2T,利用率只有2T,利用率50%,如果是三块硬盘组成raid 1,利用率只有33%,也是不可取的
至少需要两块磁盘
数据==镜像备份==写到磁盘上(工作盘和镜像盘)==可靠性高,==磁盘利用率为50%
读性能可以,但是写性能不佳,写入数据要同步,因此速度很慢
一块磁盘故障,不会影响数据的读写,因为是镜像磁盘,冗余性好,只要有一块是好的,数据还是会转的
raid 1 应用场景:
对数据安全可靠要求较高的场景,比如邮件系统,交易系统等
Raid5
至少需要3块磁盘,
数据==条带化==存储在磁盘==读写性能好==磁盘利用率为(n-1)/n
一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
校验算法是计算机二进制的异或运算
只能允许坏掉一块硬盘
是目前综合==性能最佳的数据保护解决方案
兼顾了存储性能,数据安全和存储成本等各方面因素(性价比高)
适用于大部分的应用场景
Raid6
比raid5提供的数据校验,又多了一层校验,双层校验
至少需要4块磁盘
数据==条带化==储存在磁盘,读取性能好,容错能力强
采用==双重校验==方式保证数据的安全性
如果2快磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
成本要比其他等级高,平且更复杂
一般用于对数据安全性要求非常高的场合
raid10
raid10是raid1+raid0的组合
至少需要4快磁盘
两块硬盘为一个组,先做raid1,再将做好的raid1的两组做raid0
兼顾数据的冗余,(raid1镜像)和读写性能(raid0数据条带化)
磁盘利用率50% ,成本高
只要坏的不是同一个组中所有的硬盘,就算坏掉一半的硬盘都不会丢数据
因此raid10是最实用的方案
硬raid、软raid区别
软件控制的raid磁盘冗余阵列
由于cpu去控制硬盘驱动器进行数据转换,计算的过程就是软件raid
软raid运行==操作系统底层==将SCSI或者IDE的控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理
占用内存空间
占用cpu资源
如果程序或者操作系统故障就无法运行
基于以上的缺陷,所以现在企业很少用软raid
硬件控制
由专门的raid卡上的主控芯片操控,就是硬件raid
通过用硬件来实现raid功能的就是硬raid,独立的raid卡,主板集成的raid芯片都是硬raid
raid卡就是用来实现raid功能的板卡,通常是由I/O处理器,硬盘控制器,硬盘连接器的缓存等一系列零组件构成的
不同的raid卡支持的raid功能不同,支持raid0,raid1,raid4,raid5,raid10不等
软件raid额外消耗cpu资源,性能弱
硬件raid更加稳固,软件raid可能造成磁盘发热过量,造成威胁
兼容性问题,软件raid依赖操作系统,硬件raid胜出
可见,硬件raid,比软件raid强
创建raid10
[root@bogon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
[root@bogon ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@bogon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sdd 8:48 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sde 8:64 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sr0 11:0 1 4.2G 0 rom