文件系统讲解

硬盘:  机械硬盘   固态硬盘比磁盘快

个人主机:西部数据  希捷  东芝  三星(固态)

服务器:dell比较贵,浪潮便宜但质量不好, 华为

性能:  容量 磁头 速度 品牌 接口            亚马逊  aws


接口():

硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优劣直接影响着程序运行快慢和系统性能好坏。


分类:

IDE古老

SCSI   SCSI(小型计算机设备接口),接SCSI硬盘,一般用于服务器上。虚拟机一般推荐选这个

SATA   SATA接口, SATA3.0   600MB/S

SAS    串行SCSI(SAS:Serial Attached SCSI)是一种电脑集线的技术,其功能主要是做周边零件的数据传输  集成SATA + SCSI优点

光纤通道   光纤通道能支持的最高速率是8Gbit/s以上,1000MB/s左右  isp主流运营商


#传输速度:异地多活(数据完整性)  杭州萧山   北京亦庄 兆维   长沙麓谷


机械硬盘:硬盘的术语

l 磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头;

l 磁道(track)数:磁道是从盘片外圈往内圈编号0磁道,1磁道...,靠近主轴的同心圆用于停靠磁头,不存储数据;

l 柱面(cylinder)数:同磁道数量;

l 扇区(sector)数:每个磁道切分成很多扇形区域,每道扇区数量相同;磁盘管理最小单位

l 圆盘(platter)数:就是盘片的数量。


磁盘的基本参数

容量   转速   7200  5400  14000 rpm   Revolutions per minute

缓存  传输速率   平均寻道时间


#固态硬盘

固态硬盘的原理是,SSD固态硬盘就是把磁存储改为集成电路存储。

磁存储需要扫描磁头的动作和旋转磁盘的配合。

电路存储即固态存储靠的是电路的扫描和开关作用将信息读出和写入,不存在机械动作。

固态硬盘内主体其实就是一块PCB板,而这块PCB板上最基本的配件就是控制芯片,缓存芯片和用于存储数据的闪存芯片


1、机械硬盘本质是电磁存储,固态硬盘则是半导体存储。

2、机械硬盘很怕摔,固态硬盘比较抗震。

3、固态硬盘读写速度比机械硬盘快。

在vmware上给虚拟机新加一个磁盘 重启后在xshell上cd /dev 可查看所有设备文件 然后fdisk -l (管理磁盘设备命令 看当前磁盘大概磁盘)看磁盘sda和sdb 即两个磁盘


SATA、mSATA 、PCIe和M.2——SSD硬盘的接口

https://blog.csdn.net/xuheng8600/article/details/98469562

分区:主分区(c盘,d盘)   1-4个主分区

扩展分区  主分区(p)之外都可以作为扩展分区(e) 会占用一个主分区 会重新划分成逻辑分区   能存储文件的是主和逻辑分区

/dev/sda  -- 分区-- /dev/sda1  /dev/sda2  第一个磁盘的第二个分区  sd表示SCSI设备


新添加盘没识别到可用命令  或者  重启主机reboot

echo "scsi add-single-device 2 0 1 0">/proc/scsi/scsi


fdisk  -l  [设备名]    #不接设备名 就查看所有设备的信息

[root@localhost boot]# fdisk -l /dev/sda

Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

设备       启动    起点     末尾     扇区 大小 Id 类型

/dev/sda1  *       2048  2099199  2097152   1G 83 Linux

/dev/sda2       2099200 41943039 39843840  19G 8e Linux LVM

fdisk命令建立分区(最大支持2T分区

用途:在交互式的操作环境中管理磁盘分区

格式:fdisk  [磁盘设备]    交互模式中的常用指令 根据提示操作就行

m:查看操作指令的帮助信息      p:列表查看分区信息  print

n:新建分区   new              d:删除分区    delete

t:变更分区类型                 q:放弃分区设置并退出

w:保存分区设置并退出 (更改将停留在内存中,直到您决定将更改写入磁盘。)

fdisk /dev/sdb 给磁盘分区        fdisk  -l /dev/sdb 看分区结果

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table.  The new table will be used at the next reboot.

Syncing disks.            写入的时候分区表没写进去

此时使用fdisk命令看不到新建的分区信息,可以使用partprobe命令解决这个问题而不用重启系统,因为partprobe可以使kernel重新读取分区信息,从而避免重启系统

parted分区命令:

https://blog.csdn.net/linuxnews/article/details/51093815

命令行:parted -s /dev/sdb mklabe gpt mkpart primary 0 100%在非交互式环境通过命令分为一个区

du看文件大小 df看磁盘情况

开机运行级别:systemctl get-default 一般都是3

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆  忘记密码可以进入这个模式修改  忘记root用户密码

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

systemd 是7 和8 的1号进程  以前是init进程  centos6 是init进程

systemd除了干以前init的活,还集成了其他功能 比如说开机自启服务的管理

#MBR分区表 (存放分区信息)放在第一个扇区

Master Boot Record:主引导记录

硬盘的0柱面、0磁头、1扇区称为主引导扇区(ssd逻辑上的第一个扇区)

MBR大小512字节,分为三个部分

主引导程序:446字节  (grub)引导开机启动

硬盘分区表DPT:64字节         分区结束标记:2字节

DPT:磁盘分区表       DPT大小64字节

每个主分区要用16个字节描述 所以最多四个主分区

扩展分区也要占用16个字节的主分区空间


rom 只读存储器     ram 随机读写存储器

bios -- basic input  output system 汇编


GPT分区:全称为Globally Unique Identifier Partition Table,也叫做GUID分区表,它是UEFI 规范的一部分。由于硬盘容量的急速增长,MBR的2.2T容量难以满足要求,而UEFI BIOS的推广也为GPT的实现打下了坚实的技术基础,GPT应运而生   也有引导程序 

GPT VS MBR 磁盘标签类型

1、GPT 理论上来说可以对无限大的磁盘进行分区, MBR对2T以下磁盘进行分区

2、MBR最多支持4个分区  GPT  1-128

GPT不会受到硬盘容量大小、分区数量的限制,不过在Windows系统上由于系统的限制,支持最多128个GPT磁盘分区  g可以进行gpt分区

fdisk与parted的区别

fdisk在交互式的操作环境中管理磁盘分区

Parted 可以在交互式操作环境中管理磁盘,可以在命令行管理磁盘

fdisk默认使用dos磁盘标签,要想分2T以上的磁盘 必须指明使用gpt分区表

parted使用gpt磁盘标签

dos 标签:  mbr          gpt 标签:  gpt

#linux内核  5大子系统

#进程调度 #内存管理 #文件系统 #网络接口 #进程通信

#文件系统   windows(NTFS)    LINUX-  ext2  ext3  ext4   xfs  btrfs(趋势)

分区步骤

加盘  分区fdisk 格式化mkfs blkid(看是否格式化成功) 挂载mount 才可以运行 umount  lsof  /dev/sdb1看这个文件被哪个程序占用   df -Th 查看

mkfs.ext4 /dev/sdb1      挂载前先建 mount /dev/sdb1 /mnt1 

物理磁盘挂上 --  分区 --  格式化文件系统mkfs  -- 挂载 (mount)  -- 写入fstab

[root@localhost ~]# mkfs.ext4  /dev/sdb1

mke2fs 1.44.6 (5-Mar-2019)

创建含有 5242619 个块(每块 4k)和 1310720 个inode的文件系统

文件系统UUID:ba953c04-86ab-413e-a35c-2512ff52b7f4

超级块的备份存储于下列块:32768, 98304, 163840, 229376, 294912, 819200, 884736,

写入超级块和文件系统账户统计信息:已完成

[root@localhost ~]# mkfs.xfs /dev/sdb1

mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (ext4).

mkfs.xfs: Use the -f option to force overwrite.

[root@localhost ~]# mkfs.xfs -f /dev/sdb1 强制格式化

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310655 blks

         =                       sectsz=512   attr=2, projid32bit=1

[root@localhost ~]# vim /etc/fstab永久写入文件 下次开机还在 不然都是临时的

[root@localhost ~]# mount /dev/sdb1 /mount 挂载

[root@localhost ~]# df    -Th

文件系统               1K-块    已用     可用 已用% 挂载点

/dev/sda1             999320  138320   792188   15% /boot

/dev/sdb1           20960236  179264 20780972    1% /mount     

作业#有一块20G的盘, 分为4个区

#2G  -- 》 /mnt1  -- > ext4

#3G  -->  /mnt1/log  --> xfs

#6G  -->  /mnt2   --> xfs

#9G  --> /mnt2/text  --> ext4

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

命令(输入 m 获取帮助):n

分区号 (2-128, 默认  2): 2

第一个扇区 (4196352-41943006, 默认 4196352):

上个扇区,+sectors 或 +size{K,M,G,T,P} (4196352-41943006, 默认 41943006): +3G

创建了一个新分区 2,类型为“Linux filesystem”,大小为 3 GiB。

命令(输入 m 获取帮助):p

Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区

磁盘标签类型:gpt

磁盘标识符:D01AC728-0EC3-B345-88D0-6DFEAFD8B17A

设备          起点     末尾    扇区 大小 类型

/dev/sdb1     2048  4196351 4194304   2G Linux 文件系统

/dev/sdb2  4196352 10487807 6291456   3G Linux 文件系统

[root@localhost ~]# fdisk -l

Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x765378c0

设备       启动    起点     末尾     扇区 大小 Id 类型

/dev/sda1  *       2048  2099199  2097152   1G 83 Linux

/dev/sda2       2099200 41943039 39843840  19G 8e Linux LVM

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkfs.xfs /dev/sdb2

[root@localhost ~]# mkfs -t xfs /dev/sdb3

[root@localhost ~]# mkfs.ext4 /dev/sdb4

[root@localhost ~]# mkdir /mount1

[root@localhost ~]# mkdir /mount1/log

[root@localhost ~]# mount /dev/sdb1 /mount1

[root@localhost ~]# ls /mount1

lost+found(当磁盘出现问题 可以供后面的磁盘使用它 里面不能有数据)

[root@localhost ~]# umount /mount1

[root@localhost ~]# ls /mount1

log

[root@localhost ~]# mount /dev/sdb1 /mount1

[root@localhost ~]# mkdir /mount1/log

[root@localhost ~]# ls /mount1

log  lost+found

[root@localhost mount1]# mount /dev/sdb2 /mount1/log

[root@localhost mount1]# df

文件系统               1K-块    已用     可用 已用% 挂载点

devtmpfs              907160       0   907160    0% /dev

tmpfs                 924780       0   924780    0% /dev/shm

tmpfs                 924780    8904   915876    1% /run

tmpfs                 924780       0   924780    0% /sys/fs/cgroup

/dev/mapper/cl-root 17811456 3149720 14661736   18% /

/dev/sda1             999320  138320   792188   15% /boot

tmpfs                 184956       0   184956    0% /run/user/0

/dev/sdb1            1998672    6148  1871284    1% /mount1

/dev/sdb2            3135488   54976  3080512    2% /mount1/log

#fstab文件  开机自动挂载

#  vim /etc/fstab

# Created by anaconda on Sun Mar 14 19:21:04 2021

# Accessible filesystems, by reference, are maintained under '/dev/disk/'.

/dev/mapper/cl-root     /                       xfs     defaults        0 0

UUID=bc8b38c6-f63e-48f9-8af3-3482db543356 /boot                   ext4    defaults        1 2

/dev/mapper/cl-swap   swap      swap            defaults        0   0

#设备文件或设备uuid  挂载点    文件系统类型    挂载选项      要不要被dump备份  要不要被fsck开机检查

只读,读写等

UUID=7c61824e-e5e6-4e6f-b8de-93c78ed23fbd   /mount1/log        xfs            defaults        0                    0

[root@localhost mount1]# blkid /dev/sdb2   #显示UUID

/dev/sdb2: UUID="7c61824e-e5e6-4e6f-b8de-93c78ed23fbd" TYPE="xfs" PARTUUID="fd484c33-9263-154f-9316-562bf28ae840"

[root@localhost mount1]# vim /etc/fstab

#磁盘在使用过程中不能取消挂载的

[root@localhost log]# cd /mount1/log

[root@localhost log]# umount /dev/sdb2 在文件里面挂载了 先把里面的取消挂载 在把外面的挂载 不然会显示忙

umount: /mount1/log: target is busy.

[root@localhost log]# pwd

/mount1/log

[root@localhost log]# cd ..

[root@localhost mount1]# umount /dev/sdb2

#lsof    list open file

lsof  /mount1   #查看某个文件 被哪些进程占用

lsof -i:80      #查看端口被哪些进程占用

lsof -p 913     #查看进程占用了哪些文件

lsof|grep del   #查看哪些文件已经被人为的删除了,但是进程还在使用,导致空间无法释放  找出进程后重启服务就可以释放空间。

lost+found   ext家族文件系统初始化都会有的一个文件夹, 它是当文件系统异常的时候,提供一些片段数据来恢复   文件系统异常这下面才会有数据  所以不能有数据

打开文件数限制修改:用户资源限制

[root@ansible proc]# ulimit -a

core file size          (blocks, -c) unlimited

data seg size           (kbytes, -d) unlimited

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

cpu time               (seconds, -t) unlimited

max user processes              (-u) 3021

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

[root@ansible proc]# ulimit -n 65535    #命令行修改都是临时的,写入文件才是永久的

[root@ansible proc]# ulimit -a

max memory size         (kbytes, -m) unlimited

open files                      (-n) 65535

[root@ansible proc]# cd /etc/security/

[root@ansible security]# less limits.conf   #修改这个文件可以永久生效了

#查看系统日志

#dmesg  --硬件 内核

#/var/log/messages 

#/var/log   ---系统的日志文件 --  rsyslogd  进程管理

经典分区方案:

/boot   linux启动文件

/swap   交换分区  当物理内存不足的时候,启动磁盘上的交换分区来做内存使用

        #一般不建议开启,因为会导致程序速度变慢

        #设置swap,什么时候触发swap分区的使用

       # cat swappiness   #当物理内存还剩30%的时候启动交换分区  30

        [root@localhost vm]# pwd      /proc/sys/vm

/proc  目录 存放进程或者系统运行时候的数据

/proc/cpuinfo  存放了cpu的信息

/proc/meminfo  存放内存信息

        [root@localhost vm]# echo 0 > swappiness

        [root@localhost vm]# cat swappiness      0#当物理内存用尽的时候启动交换分区

        [root@ansible vm]# cat /etc/sysctl.conf

        # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.

        # Vendors settings live in /usr/lib/sysctl.d/.  

系统调优

1内核参数  /proc/sys/下面内核参数临时修改    永久修改 /etc/sysctl.conf

2.用户资源限制  ulimit -a

                            永久修改 /etc/security/limits.conf

                            root soft nofile 65000

                            root hard nofile 65535

https://www.cnblogs.com/huangjiabobk/p/18128336

iptables  -nvl  看防火墙

vm.swappiness=10  系统内核参数调优

 [root@ansible vm]# sysctl -p  #生效参数           vm.swappiness = 10

 [root@ansible vm]# cat swappiness      10

 [root@ansible vm]# swapoff -a临时关闭

  [root@ansible vm]# free -m  看swap已经永久关闭

 total        used        free      shared  buff/cache   available

 Mem:         794         238         252           5         303         428

 Swap:             0           0           0

 [root@localhost vm]# swapon -a    

永久关闭,可以修改/etc/fstab文件,注释掉swap的行

 注释掉/dev/mapper/cl-swap     none             swap    defaults

#VFS(虚拟文件系统)

#在文件系统挂载之后,将文件系统的一些元数据加载到内存中,虚拟文件系统只存在于内存中 开机启动后自动加载用户和虚拟打交道 虚拟再和真实文件系统打交道

 #VFS作用就是屏蔽给各类文件系统的差异, 给用户、应用程序一个统一的接口

 VFS描述文件系统使用的是超级块和inode的方式

 VFS主要定义了四种对象类型:

 超级块对象  super block 虚拟和真实文件系统都有

      记录文件系统的总体信息

      inode数量、 block数量  

      使用了多少  还剩余多少   

      属于哪个文件系统 调用方式

 索引节点    inode

      里面包含文件的元信息

      字节数  所属主和组  权限   修改、创建时间等

      block的位置(存放数据的地方)

 文件对象  file

 目录项对象  dentry                 文件夹本质是文件  里面存放的是目录项

     filename文件夹名字  和  inode(文件的元信息)号     的映射关系

一个文件最少4k(bsize)

 磁盘文件系统格式化之初,就会将磁盘大体分为两个部分, 一个存放inode索引的,一个存放数据的   inode是在文件系统初始化之初就已经存在的

ext4文件系统:256  看超级块信息

[root@ansible ~]# dumpe2fs /dev/sdb1|less

xfs文件系统 512

[root@ansible ~]# xfs_info /data

inode的数量比例和block数量比例不一致  一般inode的数量会少一点

如果你的系统里面小文件过多,会造成你的inode耗尽  你的block还有

明明磁盘还有空间 但是创建不了文件了

查看inode的信息

 [root@localhost python-test]# stat class_test.py

  文件:class_test.py

  大小:412          块:8          IO 块:4096   普通文件

设备:fd00h/64768d   Inode:1279533     硬链接:1

权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)

最近访问:2021-08-21 11:45:16.069680954 +0800

最近更改:2021-08-21 11:45:13.008680784 +0800

创建时间:-

文件系统如何读到文件

1、根据文件名通过目录项知道它的inode号

2、通过inode号找到inode table里的inode

3、通过inode里的block指针,找到对应的数据块

#查看文件系统的元信息

[root@localhost python-test]# dumpe2fs  /dev/sdb1

#查看文件系统用了多少inode 还剩多少inode

[root@localhost python-test]# df -i

文件系统              Inode 已用(I) 可用(I) 已用(I)% 挂载点

devtmpfs             226790     416  226374       1% /dev

tmpfs                231195       1  231194       1% /dev/shm

/dev/sdb2           1572864       5 1572859       1% /mount1/log

/dev/sdb3           3145728       4 3145724       1% /mount2

#查看文件的inode号

[root@localhost python-test]# ls

api_flask.py  a.txt  class_test.py  lock_process.py  manager-process.py  os-fork.py  pool_test.py

[root@localhost python-test]# ls -i a.txt

1272310 a.txt

删除文件 标注block和inode 为未使用 再删除目录项

移动 相同的文件系统inode不变只改目录项  跨文件系统inode会变

rm 删除目录项

i_nlink 目录项引用 记录文件的硬链接数

i_count j进程fd进程引用  记录程序打开这个文件的数量

 这两个引用计数都为0  才会释放磁盘空间 删干净

文件描述符表 1024非负整数 第一次打开文件 拿到一个值 以后会存到表里 以后进程就不用路径查找了    文件指针会打开文件表(系统级别)放到这里就每个进程都可以去这里找  不然每个进程都进一个文件 都会放到各自的文件描述符表(各自隔离)  这样就可以只搞一次 文件描述符:进程打开后会返回一个非负整数 下次可以根据这个数找到文件位置

标准输入0 标准错误输出2 标准输出1

在计算机操作系统中,每个进程都有一个文件描述符表(File Descriptor Table),它是一个数组,用于跟踪进程打开的所有文件和其它I/O资源。文件描述符是操作系统分配给进程的一个非负整数,用来标识这个进程所打开的文件或设备。通常,文件描述符0、1和2分别预留给标准输入、标准输出和标准错误输出。

文件描述符表中的每一项(也称为槽位)包含指向文件表项(file table entry)的指针,而文件表项包含了文件的状态信息,如文件的当前位置、打开模式、文件的类型(如常规文件、目录、管道、套接字等)以及指向实际文件结构体的指针。

文件描述符的特点:

  • 稀疏性:文件描述符表中的位置并不是连续使用的,而是按需分配,因此文件描述符表可能是稀疏的。
  • 唯一性:在一个进程中,每个文件描述符都是唯一的,用于标识特定的打开文件。
  • 可重用性:当一个文件描述符关闭后,其对应的槽位可被重用分配给新打开文件。
  • 可复制性:通过fork()系统调用,子进程会继承父进程的文件描述符表,但每个文件描述符都指向各自独立的文件表项。

磁盘百分百用完了 怎么排查  lsof |grep delete  找到进程重启服务目录项删了 但程序仍然在使用 杀死进程 才会释放空间 (删除文件的时候某个进程还在使用它)

不能创建文件 磁盘满了 没有权限 或者block满了 

less access.log清空日志文件 进程还在运行时 不能直接删除 重新加载服务

>access.log重定向覆盖清空 然后删除

reload重新加载master不变和restart重启区别:主进程会创建进程池 会维护子进程

  • 定义:Restart(重启)通常是指完全停止服务,然后重新启动服务。这意味着服务会经历一个短暂的中断期,在这个期间服务是不可用的。
  • 过程:首先会停止所有的worker进程,清理资源,然后重新启动服务,创建新的worker进程。
  • 影响:在重启的过程中,所有正在进行的请求都会被中断,直到服务完全重新启动并准备好接收新请求为止。
  • 定义:Reload(重新加载)是在不中断服务的情况下更新服务的配置或者状态。这意味着服务会持续运行,而不会对客户端产生明显的中断。
  • 过程:在reload过程中,主进程会读取新的配置文件,然后逐步替换旧的worker进程。新worker进程在接收到新配置后开始工作,而旧worker进程则在处理完当前请求后优雅地退出。
  • 影响:在reload期间,服务仍然接受和处理新的请求,只是旧worker进程在处理完最后的请求后才会退出,从而保证了服务的连续性。
  • Restart适合需要彻底清理资源或者当服务因某种原因进入不稳定状态使用。
  • Reload更适合于更新配置文件而不希望服务中断的情况,特别是在生产环境中,为了用户体验和高可用性,通常更倾向于使用reload。

软链接 vs  硬链接    创建命令  ln

#软链接  -- 最好使用绝对路径创建软链接  独立的Inode和block 全新的文件 保存路径

[root@web-1 opt]# ln -s ln_test  soft_ln

[root@web-1 opt]# ls

   soft_ln  a.py         html             ln_test           nginx-1.21.6.tar.gz

[root@web-1 opt]# ls -al soft_ln

lrwxrwxrwx 1 root root 7 9月  14 16:32 soft_ln -> ln_test

#硬链接 修改源文件或硬链接 两个都会变

[root@web-1 opt]# ln ln_test hard_ln

[root@web-1 opt]# ls

a.py           hard_ln          kafka_2.12-2.8.1  nginx    soft_ln

#创建一个硬链接就是多创建一个目录项指向  防止不小心删了 即索引(目录项)备份

[root@web-1 opt]# ln ln_test hard_ln 删原文件也可以访问  但是对软链接有影响

[root@web-1 opt]# ls -al |grep ln

-rw-r--r--   2 root    root          15 9月  14 16:37 hard_ln

[root@web-1 opt]# ln ln_test hard_ln_2

[root@web-1 opt]# ls -al |grep ln

-rw-r--r--   3 (i_nlink目录项指向inode的次数 )root  root  15 9月  14 16:37 hard_ln

软链接删除原文件,不能访问      硬链接删除原文件,正常访问

硬链接不能跨文件系统,不能对目录进行链接 每个文件系统的inode独立的 不互通

[root@web-1 opt]# ln ln_test /mnt2/hard_ln

ln: 无法创建硬链接"/mnt2/hard_ln" => "ln_test": 无效的跨设备连接

[root@web-1 opt]# ln conf hard_conf

ln: "conf": 不允许将硬链接指向目录

底层会自动硬链接到上一级 ..  硬链接里面创建新文件 inlink会加一


Logical Volume Manager,逻辑卷管理 了解

屏蔽了底层磁盘布局,便于动态调整磁盘容量

相对传统分区方式的有下列优点:

空间利用率高  可以在线扩展容量

数据备份方便  可随意定义逻辑卷卷标

/boot分区用于存放引导文件,不能应用LVM机制

        普通分区pe      一或多个PV组合  从卷组分割一块空间 用于建立文件按系统

功能        物理卷管理    卷组管理        逻辑卷管理

Scan    扫描  pvscan      vgscan          lvscan

Create   建立  pvcreate    vgcreate         lvcreate

Display  显示  pvdisplay    vgdisplay        lvdisplay

Remove  删除  pvremove   vgremove       lvremove

Extend   扩展                     vgextend       lvextend

Reduce   减少                   vgreduce        lvresize

   

建立命令的用法

pvcreate  设备名/dev/sdb1

vgcreate  卷组名(sc)  物理卷名1(/dev/sdb1)  物理卷名2

lvcreate   -L  大小  -n  逻辑卷名  卷组名lvcreate -L 3G -n lvm-test sc

格式化 挂载  df -Th查看

  pvcreate /dev/sdc1     pvcreate /dev/sdc2

  vgcreate sc /dev/sdc1  /dev/sdc2

  vgdisplay

  lvcreate -L 2G -n cali sc

  lvdisplay

  mkfs.ext4  /dev/mapper/sc-cali

  blkid /dev/mapper/sc-cali

  mount /dev/mapper/sc-cali /mnt1

  df -Th

  dumpe2fs /dev/mapper/sc-cali

lvextend -L +2G /dev/mapper/sc-cali

  echo "scsi add-single-device 2 0 1 0">/proc/scsi/#scsi

  resize2fs /dev/mapper/sc-cali (ext4)

xfs_growfs /dev/mail_store/mail (xfs)

[root@web-3 ~]# lvextend -r -L +1G  /dev/mapper/sc-sanchuang

ext 文件系统修复检测 --  fsck        ---- 超级块查看  --  dumpe2fs

xfs                 --  xfs_repair                          xfs_info

RAID廉价冗余磁盘阵列   硬件RAID

速度快,性能好,支持热插拔

需专门的RAID磁盘阵列卡,价格昂贵,还需配合相应的驱动

           条带           镜像  条带+分布校验   两分布校验   校验(在一台上)

级别       RAID0     RAID1    RAID5        RAID6        RAID4

磁盘数       >=2       2            >=3            >=4

容错功能     无        有             有           较强           有

读写速度    最快      写入慢     较快        较快

磁盘空间利用 100%     50%      n-1/n        n-2/n

                       备份     可坏一台   可坏两盘(空间利用率小于5)

xfs和ext4的区别:

区别一:单个文件的大小

EXT4可以是16GB到16TB,而XFS可以是16TB到16EB。

区别二:最大文件系统大小   EXT4可以是1EB,而XFS可以是8EB。

区别三:EXT4受限制于磁盘结构和兼容问题,可扩展性和scalability不如XFS。

说明:由于历史磁盘结构原因Ext4 的inode 个数限制(32位数)最多只能有大概40多亿文件。而且Ext4的单个文件大小最大只能支持到16T(4K block size) ,目前来说已经是瓶颈。XFS使用64位管理空间,文件系统规模可以达到EB级别。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统的文件系统是一个层次化的目录结构,用于存储和管理应用程序及系统数据。 根目录是/,它包含了系统中全部的应用程序和系统文件。在根目录下有多个重要的目录,如/data、/system和/cache等。 /data目录是应用程序和用户数据的主要存储位置。每个应用程序都有一个私有目录,位于/data/data/<package_name>/目录下,用于存储该应用程序的私有文件和数据。这些文件只对该应用程序可见,其他应用程序无法访问。此外,/data目录还包含了各种系统配置文件、缓存文件等。 /system目录包含了Android系统的核心文件和系统配置文件。这个目录对于普通用户来说是只读的,只有系统级用户才有权限修改其中的文件。 /cache目录用于存储临时文件和缓存文件。这些文件可以被系统自动清理,因此开发人员应当注意,不要在/cache目录下存放重要的数据。 除了这些重要的目录之外,Android还有一些特殊的目录,如/sdcard目录用于存放外部SD卡中的文件,/mnt目录用于挂载外部存储设备等。 Android优化了文件系统的组织结构,使得文件的访问更加高效和安全。同时,应用程序可以通过特定的权限来控制对文件系统的访问,以保护用户的隐私和系统的安全性。 总的来说,Android文件系统是一个用于存储和管理应用程序及系统数据的层次化目录结构,它提供了用于访问和操作文件的API,并通过文件权限控制来保护用户的隐私和系统的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值