文件系统

1、stat命令

Linux stat 命令用于显示 inode 内容。 stat 以文字的格式来显示 inode 的内容。

stat [文件或目录]

1-1、inode 的内容

inode 包含文件的元信息,具体来说有以下内容:

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

Linux中stat是査看文件详细信息的命令。 -f:査看文件所在文件系统信息,而不是査看文件信息。

stat - display file or file system status

 -f, --file-system
              display file system status instead of file status

root@ubuntu180001:~# stat -f test
  文件:"test"
    ID:35a7aa1aca3111c9 文件名长度:255     类型:ext2/ext3
块大小:4096       基本块大小:4096
    块:总计:20510822   空闲:18184711   可用:17132065
Inodes: 总计:5242880    空闲:5092294
root@ubuntu180001:~# stat test
  文件:test
  大小:1110            块:8          IO 块:4096   普通文件
设备:fc01h/64513d      Inode:659105      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2022-01-13 19:47:29.308000000 +0800
最近更改:2022-01-13 19:44:33.500000000 +0800
最近改动:2022-01-13 19:44:33.504000000 +0800
创建时间:-

1-2、文件大小和空间大小

从上面可以看出,该文件大小为1110字节,即bytes,磁盘占用空间大小为8*4096=32768比特,即bit,转换为4096字节。 实验看出,某个东西概念以8块组成,不足以8块计算。

[root@ubuntu0006:/media/hankin/vdb/study/udev] #stat usbredirhost.c -f
  文件:"usbredirhost.c"
    ID:25b5b8e9a2105070 文件名长度:255     类型:ext2/ext3
块大小:4096       基本块大小:4096
    块:总计:25770312   空闲:3774267    可用:2459451
Inodes: 总计:6553600    空闲:5469854
[root@ubuntu0006:/media/hankin/vdb/study/udev] #stat usbredirhost.c
  文件:'usbredirhost.c'
  大小:135269          块:272        IO 块:4096   普通文件
设备:fd10h/64784d      Inode:6441883     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2022-06-06 19:15:11.548000000 +0800
最近更改:2022-06-07 09:56:09.288000000 +0800
最近改动:2022-06-07 09:56:09.288000000 +0800
创建时间:-

1、文件大小指的是该文件实际的文件体积,例如一个文件其本身的大小为6字节,则这6字节称之为该文件的文件大小。 2、占用空间指的是这个文件占用磁盘空间的大小,如下图所示,该文件的大小为“6字节”,但是占用的磁盘空间却为“4096字节”,占用空间比文件体积要大。

同一个文件在不同磁盘分区上所占的空间不一样大小,这是由于不同磁盘簇的大小不一样导致的。 簇的大小主要由磁盘的分区格式和容量大小来决定。 操作系统中的一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

文件大小是文件实际大小 而占用空间是文件所占用的硬盘空间... 因为硬盘存储空间是以簇来存储文件的... 簇的大小从2k到128k不等, 可以比喻为一个个箱子,文件放到一个个簇里,并不是都能装满的... ========================= 脉脉孤独说的,预分配空间... 那是下载东西的时候才有的概念... 不要混淆概念... 至于数据库之类的东西,更是胡邹... 找你那么说还留地方扩充数据,那么就不会有磁盘碎片生成了... “一个实际大小不到1M的文件,占用空间可以超过10M ”鬼信... 一个实际大小不到1M的文件夹,占用空间可以超过10M ,我才行... 是文件夹! 当然如果你一个簇设为10M,那没话说...

1-3、查看操作系统块大小

[root@ubuntu0006:/media] #tune2fs -l /dev/vda1 |grep 'Block size'
Block size:               4096
[root@ubuntu0006:/media] #stat -f
root/    hankin/
[root@ubuntu0006:/media] #stat -f root
  文件:"root"
    ID:5daf1520f1d5f8d 文件名长度:255     类型:ext2/ext3
块大小:4096       基本块大小:4096
    块:总计:20093394   空闲:6324893    可用:5298449
Inodes: 总计:5111808    空闲:3841189

查看os系统页的大小

[root@ubuntu0006:/media] #getconf PAGESIZE
4096

查看某分区的block和inode的数量和大小,通常block比inode多

[root@ubuntu0006:/media] #tune2fs -l /dev/vda1 | grep 'Block count'
Block count:              20446976
[root@ubuntu0006:/media] #tune2fs -l /dev/vda1 | grep 'Inode count'
Inode count:              5111808
[root@ubuntu0006:/media] #tune2fs -l /dev/vda1 | grep 'Block size'
Block size:               4096
[root@ubuntu0006:/media] #tune2fs -l /dev/vda1 | grep 'Inode size'
Inode size:               256

1-4、Linux系统中磁盘block和windos中的簇一个意思

微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”

inode:文件数据都存储在‘块’中,我们还必须找到一个地方存储文件的元信息,比如文件的创建,文件的创建时间,文件的大小等等,这种存储文件元信息的区域就叫做inode,中文译名为‘索引节点’. inode大小:inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域,一个数据区,存放文件数据,另一个是inode区(inode table),存放inode所包含的信息.

总结:每个文件最少有一个inode号,系统用inode号来识别不同的文件。

实例:web服务器中小文件多,导致磁盘有空间,但是无法创建文件。 inode 数被用光了 查看inode是否被用光:df -i block 设置大:效率高,利用率低。 block 设置小:效率低,利用率高。 一般系统默认就行.

[root@ubuntu0006:/media/hankin/vdb/study/udev] #df -i usbredirhost.c
文件系统         Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/vdb       6553600 1083746 5469854      17% /media/hankin/vdb
[root@ubuntu0006:/media/hankin/vdb/study/udev] #df usbredirhost.c
文件系统           1K-块     已用    可用 已用% 挂载点
/dev/vdb       103081248 87984180 9837804   90% /media/hankin/vdb
[root@ubuntu0006:/media/hankin/vdb/study/udev] #stat -f usbredirhost.c
  文件:"usbredirhost.c"
    ID:25b5b8e9a2105070 文件名长度:255     类型:ext2/ext3
块大小:4096       基本块大小:4096
    块:总计:25770312   空闲:3774267    可用:2459451
Inodes: 总计:6553600    空闲:5469854
[root@ubuntu0006:/media/hankin/vdb/study/udev] #ls -i usbredirhost.c
6441883 usbredirhost.c

2、ext2升级到ext4

ext系列的文件系统是我们在linux中最常用的文件系统。当我们有使用老的ext2文件系统的磁盘,希望升级到ext4。应该怎么做呢。

准备工作

在改变文件系统之前,我们需要umount磁盘

umount -l /dev/your_disk

ext2 to ext3

tune2fs –j /dev/your_disk

ext3 to ext4

tune2fs –O dir_index,uninit_bg /dev/your_disk e2fsck –pf /dev/your_disk

如果磁盘还有错误不能修复,就需要手动修复

fsck /dev/your_disk

ext2 to ext4

tune2fs –O dir_index,uninit_bg,has_journal e2fsck –pf /dev/your_disk

ext2 to ext4(完整点)

基本步骤: 1确认内核版本和系统环境支持ext4 (推荐升至2.6.28以上,lsmod |grep ext4) 2卸载要升级的分区(在线卸不掉则需要进单用户) 3 tune2fs -O has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize /dev/your_disk 来给分区加入ext4的特性 4 e2fsck -fDC0 /dev/sdb1 –y修复分区错误(一定要进行修复) 5修改fstab中分区格式为ext4,reboot

3、查看系统支持的文件系统

查看Linux支持的文件系统:ls -l /lib/modules/$(uname -r)/kernel/fs

发现并没有什么卵用,没有ext2,但是支持ext2.

查看Linux支持的文件系统(已载入到内存中):cat /proc/filesystems

4、查看系统各个文件系统的inode使用情况

df -i

5、free -m:看内存占用

6、fdisk命令

fdisk -l

mv能用文件把文件夹给覆盖了??? https://apple.stackexchange.com/questions/280451/erased-usr-local-bin-directory-by-mistake?noredirect=1&lq=1

Linux mkfs命令用于在特定的分区上建立 linux 文件系统

元月本指农历一月(正月),今天也常用于指阳历(公历)一月。

7、磁盘满的处理方式

安装命令:apt install jq出现如下,

E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间。

df -h 发现/dev/vda1磁盘已经100%,挂载在根目录,需要去寻找是哪些文件夹占用磁盘存储空间大。

du -d 1 -h 在根目录执行上面命令,-d参数是指定搜索深度,如果不指定就会无限延伸。 很快就找到占用磁盘高的文件夹,解决。

fdisk命令 fdisk -l 查看当前系统总共的磁盘情况,可以找到未挂载的磁盘,执行df -h可以看是否有未挂载的磁盘

挂载命令 mount /dev/vdb /myroot/

卸载命令 umount /dev/vdb

8、格式化U盘

fdisk -l
umount /dev/sdb
mkfs -V -t ntfs /dev/sdb4

9、mkfs命令

mkfs: mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext3
mkfs.ext4:可以在磁盘分区创建ext4文件系统。该命令是mke2fs命令的符号链接,使用方法和mke2fs命令一样。 mkfs.fat mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat

lrwxrwxrwx  1 root root         8 9月  21  2020 mkdosfs -> mkfs.fat*
-rwxr-xr-x  1 root root    129344 1月  22  2020 mke2fs*
-rwxr-xr-x  1 root root     10312 1月   9  2020 mkfs*
-rwxr-xr-x  1 root root     30800 1月   9  2020 mkfs.bfs*
-rwxr-xr-x  1 root root     34824 1月   9  2020 mkfs.cramfs*
lrwxrwxrwx  1 root root         6 9月  21  2020 mkfs.ext2 -> mke2fs*
lrwxrwxrwx  1 root root         6 9月  21  2020 mkfs.ext3 -> mke2fs*
lrwxrwxrwx  1 root root         6 9月  21  2020 mkfs.ext4 -> mke2fs*
-rwxr-xr-x  1 root root     35328 1月  25  2017 mkfs.fat*
-rwxr-xr-x  1 root root     79960 1月   9  2020 mkfs.minix*
lrwxrwxrwx  1 root root         8 9月  21  2020 mkfs.msdos -> mkfs.fat*
lrwxrwxrwx  1 root root         6 9月  21  2020 mkfs.ntfs -> mkntfs*
lrwxrwxrwx  1 root root         8 9月  21  2020 mkfs.vfat -> mkfs.fat*
-rwxr-xr-x  1 root root     79984 3月  22  2019 mkntfs*
-rwxr-xr-x  1 root root     79952 1月   9  2020 mkswap*

用磁盘映射的方式写入数据,数据都是在系统缓存里,没有写入到U盘。这个是非常危险的,如果在写入过程中,拔掉U盘,就会导致数据丢失,甚至U盘文件系统损坏,

如果一定要进行速度对比测试,磁盘映射在U盘mount的时候需要加上sync参数,这样每次写入U盘时都会把缓存刷新到U盘内。

例如 mount /dev/sdb1 -o sync /mnt

9-1、mkfs.ext4 命令 – 创建ext4文件系统

mkfs.ext4命令可以磁盘分区创建ext4文件系统。该命令是mke2fs命令的符号链接,使用方法和mke2fs命令一样。

-c 格式化前检查分区是否有坏块 -q 执行时不显示任何信息 -b block-size 指定block size大小,默认配置文件在/etc/mke2fs.conf,blocksize = 4096 -F 强制格式化

格式化前检查分区是否有坏块:

[root@linuxcool ~]# mkfs.ext4 -c /dev/sdb 将/dev/sdb分区格式化成ext4文件系统:

[root@linuxcool ~]# mkfs.ext4 /dev/sdb 将硬盘格式化为ext4文件系统,并添加卷标‘root’,块大小为2048,文件系统预留5%给管理员:

[root@linuxcool ~]# mkfs.ext4 -L 'root' -b 2048 /dev/sdb -m 5

10、NTFS不是linux独有的吗

centos报错:Error mounting /dev/sdd1 at /run/media/hankin/大白菜U盘: Filesystem type ntfs not configured in kernel.

安装NTFS相关的包。

results matching ""

    No results matching ""