0
点赞
收藏
分享

微信扫一扫

磁盘管理(二)

吴陆奇 2023-11-24 阅读 18

一.mount挂载补充

mount -l 显示挂载情况

mount -a 读取/etc/fstab所有的挂载设置

mount -o  ro 用唯读模式挂上

参数

解释

-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


参数

含义

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

读写

只读模式

[root@localhost ~]# mkdir yiyuan
[root@localhost ~]# mount -o ro /dev/sdc ./yiyuan
[root@localhost ~]# mount -l |grep yiyuan
/dev/sdc on /root/yiyuan type xfs (ro,relatime,attr2,inode64,noquota)

不允许执行程序,noexec

[root@localhost ~]# mount -o noexec,rw /dev/sdc ./yiyuan
[root@localhost ~]# mount -l |grep yiyuan
/dev/sdc on /root/yiyuan type xfs (rw,noexec,relatime,attr2,inode64,noquota)

二.退出光盘的命令

作用和umount一样

Eject弹出设备命令
eject # 弹出光驱
eject -r /dev/sr0 # 指定设备弹出
[root@localhost ~]# eject

三.inode、block、硬链接

ll -h

磁盘管理(二)_数据

ll -hi /opt  查看   /opt

磁盘管理(二)_硬链接_02

元数据,也就是文件的属性信息,可以通过stat命令查看到
一个新的磁盘,格式化文件系统后,就有了2个存储空间,一个叫做
inode存储空间,存储设备上,所有文件名,对应的元数据信息(文件的属性信息)
一个叫做block存储空间(存储设备上,所有的文件的内容,数据都在这)
存储元数据信息的空间,被称之为Inode
存储文件数据的空间,被称之为block
linux读取文件内容,其实是 以  文件名 > inode编号 > block 的顺序来读取
在你创建文件前必须先要分区、格式化(创建文件系统)
创建文件系统后inode和block的数量就会固定下来。
mkfs.xfs /dev/sdc 格式化xfs文件系统后,inode和block的数量就固定下来了
可以通过xfs_info查看
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
[root@localhost test1]# ls -l -i  /tmp/c* 
16777294 -rw-r--r-- 1 root root 0 Apr  7 11:01 /tmp/c1
16777702 -rw-r--r-- 1 root root 0 Apr  7 11:01 /tmp/c2
通过ls -i参数,查看文件,文件夹的inode号码
/opt/t1.log
/opt/t2.log 
这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

使用如下命令,查看文件的inode号

[root@localhost ~]# cd /opt/yiyuan
[root@localhost yiyuan]# touch 5G.txt
[root@localhost yiyuan]# ls -i 5G.txt
872181 5G.txt

为什么linux要设计inode

理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode存储的内容

* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置

可以用stat命令,查看某个文件的具体inode信息

[root@localhost yiyuan]# stat /opt/yiyuan
  File: ‘/opt/yiyuan’
  Size: 20        	Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d	Inode: 872174      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-11-24 21:01:11.160210027 +0800
Modify: 2023-11-24 21:00:56.299211112 +0800
Change: 2023-11-24 21:00:56.299211112 +0800
 Birth: -

四.软、硬链接

1.软连接

软连接就是windows下的快捷方式

软连接文件存储的是源文件的路径

创建软连接 ln -s参数去创建软连接
↓
当你访问软连接文件,其实是
↓
访问到源文件的路径,源文件的文件名
↓
访问源文件的inode编号  ls -i filename
↓
inode找到block,访问到数据

软连接特点
1.软连接文件的inode号和源文件不同,作用是存储源文件的路径
2.命令ln -s创建
3.删除普通软连接,不影响源文件
4.删除源文件,软连接找不到目标,报错提示。

2.硬链接

硬链接就是一个数据(block)被多个相同inode号的文件指向。

就好比超市有好多个大门,但是都能进入到这个超市。。。

注意硬链接不得跨分区设置(inode号,是基于分区来创建)

  • 创建语法
  • ln 源文件 目标文件
  • 创建硬链接

[root@localhost opt]# touch ./yiyuan.log
[root@localhost opt]# ls -l yiyuan.log
-rw-r--r-- 1 root root 0 Nov 24 23:56 yiyuan.log
[root@localhost opt]# ln ./yiyuan.log /tmp/c1
[root@localhost opt]# ln ./yiyuan.log /tmp/c2
[root@localhost opt]# ls -l yiyuan.log
-rw-r--r-- 3 root root 0 Nov 24 23:56 yiyuan.log

检查多个硬链接的inode号,都是同一个,表示是指向同一个区域的数据

[root@localhost opt]# ls -i yiyuan.log
16777622 yiyuan.log
[root@localhost opt]# ls -i /tmp/c1
16777622 /tmp/c1
[root@localhost opt]# ls -i /tmp/c2
16777622 /tmp/c2

硬链接特点
1.可以对已存在的文件做硬链接,该文件的硬链接数,至少是1,为0就表示文件不存在
2.硬链接的文件,inode相同,属性一致
3.只能在同一个磁盘分区下,同一个文件系统下创建硬链接
4.不能对文件夹创建硬链接,只有文件可以
5.删除一个硬链接,不影响其他相同inode号的文件
6.文件夹的硬链接,默认是2个,以及是2+(第一层子目录总数)=文件夹的硬链接数量
7.可以用任意一个硬链接作为入口,操作文件(修改的其实是block中的数据)
8.当文件的硬链接数为0时,文件真的被删除

3.文件夹的硬连接

文件夹是一个特殊的文件,默认的连接数就是2

由于文件夹中存在两个特殊子目录,一个是
. 当前目录,表示其本身
.. 上级目录,也能通过它,找到当前目录
因此硬连接数是2
如果修改文件的硬链接数,要在它,第一层文件夹中,创建子文件夹,即可增加硬链接数量

 五.inode和block

inode和block的数量,是在你mkfs创建文件系统的时候,就已经确定好了

ext4的文件系统,查看文件系统信息的命令,dumpe2fs

xfs文件系统,查看文件系统信息的命令,xfs_info

查看某分区,有多少block让你用,(查看这个磁盘,分区还有多少容量)

df -h  # -h参数,是友好的显示容量单位,如kb ,mb,gb

[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   12M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.4G   15G  14% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    378M     0  378M   0% /run/user/0
/dev/sdc                  20G   33M   20G   1% /root/yiyuan

查看某分区,一共有多少inode容量编号给我们用

[root@localhost ~]# df -i
Filesystem                Inodes IUsed    IFree IUse% Mounted on
devtmpfs                  479652   420   479232    1% /dev
tmpfs                     482661     1   482660    1% /dev/shm
tmpfs                     482661  1300   481361    1% /run
tmpfs                     482661    16   482645    1% /sys/fs/cgroup
/dev/mapper/centos-root  8910848 33619  8877229    1% /
/dev/sda1                 524288   327   523961    1% /boot
tmpfs                     482661     1   482660    1% /run/user/0
/dev/sdc                10485760     3 10485757    1% /root/yiyuan

查看磁盘可用的block容量

[root@localhost ~]# df -h /dev/sdc
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc         20G   33M   20G   1% /root/yiyuan

查看磁盘可用的inode容量

[root@localhost ~]# df -ih /dev/sdc
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdc          10M     3   10M    1% /root/yiyuan

inode的作用

df -h
查看磁盘block空间的使用情况,如果看到分区快满了,可以去删除大容量的文件

df -i 
inode存储文件属性的
当你机器上有大量的无用的小文件,空文件,白白消耗inode数量

查看磁盘分区inode空间的使用情况,如果可用的不多的,删除大量的4kb小文件即可,因为它们真用了太多的无效inode编号,应该留给别人用。

明明 df -h看到磁盘还是有空间,但是写入数据,系统提示你
no space for disk,你虽然还有block空间可以存数据
但是你的inode数量肯定是没了

touch 创建新文件,想分配inode编号,发现不够用了

六.raid磁盘阵列

1.生产环境下的raid选择

raid 0

raid 1

raid 1 + raid 0 = raid 10

可能用,只会是硬件的磁盘阵列卡
可能不用,现在的存储技术,都发展到了分布式该年,比如主流的共有云服务器,都不用raid技术了,即使人家用了,基本你也完全管不着
只有当你需要拿到一堆服务器,进行服务器从零初始化
对磁盘,做raid技术,4块硬盘,将其采用raid技术搭建
只能是用硬件的raid卡
只能用linux软raid技术,查看它的效果
物理服务器、使用物理raid卡来实现
云服务器、完全不用关心raid搭建,云厂商会给你提供靠谱的高性能、高安全性的磁盘底层技术。

现在的磁盘,读写速度都很快,阿里的云盘,可以不考虑这些
1.本地高性能硬盘,nvme技术
如https://search.jd.com/Search?keyword=nvme&enc=utf-8

2.分布式存储技术,具体看阿里云文档
https://help.aliyun.com/document_detail/25383.html?source=5176.11533457&userCode=r3yteowb&type=copy

2.硬raid、软raid选择、

  • 硬件购买硬件raid卡即可
  • 软件raid,没人用,知道即可,可以用于感受raid方案的效果

3.体验raid10 的玩法

1.准备4块硬盘,新的四块硬盘,没有任何分区的,你可以用parted命令清除原有的分区

[root@localhost ~]# 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.4G  0 rom  

2.安装raid命令,创建raid10

yum install mdadm -y

3.通过命令把这4个硬盘创建为raid 10 组即可 ,创建raid10这个硬盘组,这个硬盘组的名字 /dev/md0

mdadm -Cv /dev/md0  -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

4.此时正确情况下,你的机器就生成了 md0硬盘设备

[root@localhost ~]# fdisk -l /dev/md0

Disk /dev/md0: 42.9 GB, 42914021376 bytes, 83816448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

5.格式化文件系统可以用了

[root@localhost ~]# mkfs.xfs /dev/md0
刷新
[root@localhost ~]# partprobe
挂载
[root@localhost ~]# mkdir /md0_disk
[root@localhost ~]# mount /dev/md0 /md0_disk/
[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   12M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  6.6G   11G  39% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    378M     0  378M   0% /run/user/0
/dev/md0                  40G   33M   40G   1% /md0_disk

6.查看raid10 状态的命令

[root@localhost ~]# mdadm -D /dev/md0

7.移除一块硬盘,查看磁盘组是否还可用模拟的一块硬盘损坏了,你还得重新加入一个新的硬盘,继续恢复raid 10的状态 ,因此你得买硬盘,重启机器,重新修复raid10

mdadm /dev/md0 -f /dev/sdd

8.重启

reboot

9.添加硬盘到阵列组中

mdadm /dev/md0 -a /dev/sdd

举报

相关推荐

0 条评论