相关概念
在这里有时候并不严格区分目录和文件。
物理磁盘:/dev/sd–
虚拟磁盘:/dev/vd–
文件系统:一个可以被挂载的东西就行
超级区块:记录文件系统整体信息。包括统计信息和挂载信息
inode:用于记录文件的属性,权限信息,涉及的数据区块号码等,一个文件或目录唯一对应一个inode。。注意,这货是可以间接分级来扩大的(当文件使用的数据区块非常多)。
数据区块(block):记录实际文件内容,也是可以分级的(当目录的子目录非常多)
ext2
- inode与block的规划在格式化的时候就固定,无法更改
- 多个区块群组
- 最前面有一个启动扇区,可以放引导程序
- 最大文件系统总容量和最大单一文件限制
- 一个区块(就是数据块)只能存在一个文件的数据。就是只能属于一个文件。
- 区块群组的超级块保存了文件系统超级快的部分副本。
文件系统同步
可以使用sync把内存的脏数据写入磁盘。一般执行reboot等正常关机操作之前都会执行。
日志式文件系统
提高了文件系统状态检查的效率
简单操作
df -h
df -ah
du -h
du -sh ./ 查看目录下文件占用总大小
dumpe2fs
/proc
挂载在内存里面,磁盘占用是0
/dev/shm
利用内存虚拟出来的空间,读写贼快,但是不能持久保存
硬链接和软连接
文件名只和目录有关,文件内容则与inode有关。
硬链接
硬链接只是在目录下新增一个链接到某个inode的文件名而已。
注意
ln a.txt b.txt
这里要求b.txt不能已经存在
软连接
软连接就是一个快捷方式,类似windows上的
ln使用-s选项就是软链接。
ln -s a.txt as.txt
注意
-
修改软连接文件的内容就是修改指向文件的内容,就是说,软连接和硬链接在使用上是一样的。只是删除的时候不一样
-
删除a.txt会导致as.txt无法访问
lsblk 查看磁盘分区状态
- loop分区是一种特殊放分区格式。允许将文件看做分区
blkid 列出设备的UUID等参数
parted 查看设备分区信息
- sudo parted /dev/nvme0n1 print
gdisk(GPT)/fdisk(MBR) 磁盘分区
-
进入设备sudo gdisk /dev/nvme0n1
-
输入p查看分区信息
-
输入d进行删除,这个时候会提示选择哪个分区,输入对应的数字即可
-
(退出程序)输入w使用更改,q放弃更改
-
sudo partprobe更新分区表信息
增加一个分区
第3步输入n根据提示进行即可,需要注意+容量的表达方式,
在选择起始扇区的时候。+10G,+15M这些。
就是在调整结束扇区的地方调整容量的,别的默认就行。grep 命令加个-v就是相反的
mkfs磁盘格式化
通过设备名称进行
直接输入mkfs.然后两个TAB键查看备用选项即可
sudo mkfs.ext4 /dev/nvme0n1p4
可以使用-f强制格式化
挂载-mount命令
-
挂载点的目录应该为空,文件系统和挂载点应该一一对应
-
通过设备名挂载(例如NTFS文件系统找不到UUID) sudo mount /dev/nvme0n1p4 ~/wk
-
通过UUID挂载,假设设备的UUID是abc,那就是sudo mount UUID=‘abc’ ~/wk
-
文件互相挂载,把a目录挂载到b目录下, sudo mount --bind a/ b
-
重新挂载根目录(用于维护目的), sudo mount -o remount,rw,auto ./c
-
-o用于指定挂载选项,后面挂载loop的时候就是加了-o loop
-
-t用于指定文件系统类型
卸载-umount
-
直接使用挂载点卸载(设备可能被挂载在多个目录下)挂载点为b,sudo umount ./b
-
使用设备名卸载,sudo umount /dev/nvme0n1p4
-
文件系统的检查需要在卸载的情况下进行
磁盘、文件系统参数自定义 -自己查,不重要
启动挂载/etc/fstab和/etc/mtab
系统挂载的限制
-
根目录必须而且最先挂载
-
别的挂载点必须是已经建立的目录
-
所有挂载点、所有分区同一时间只能挂载一次
-
如果进行卸载,必须把工作目录挪到别的地方
/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p6 during installation
UUID=540359f1-3ed7-487b-8063-30005f43cde7 / ext4 errors=remount-ro 0 1
# /boot was on /dev/nvme0n1p5 during installation
UUID=fd155910-6436-4c47-942d-85c8856ec3ac /boot ext4 defaults 0 2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=0425-3BC4 /boot/efi vfat umask=0077 0 1
/swapfile swap swap default 0 0
第一列 设备标识
特殊设备文件loop挂载
知道这个玩意可以把一个文件当分区玩就好了
使用dd命令建立一定尺寸的空文件
sudo dd if=/dev/zero of=/dev/shm/ddout.txt bs=1M count=512
在这里if是输入文件,of是输出文件
bs是block size
count就是总的块数
所以ddout.txt的文件的大小是bs*count
内存交换分区的创建
-
获得文件系统,可以使用物理分区或者dd命令创建文件,或者fallocate -l 2G swapfile
这里执行sudo dd if=/dev/zero of=/dev/shm/ddout.txt bs=1M count=512 -
修改文件的权限。
sudo chmod 0600 ddout.txt
sudo chown 0:0 ddout.txt -
创建分区格式
sudo mkswap ddout.txt -
启动交换分区和观察
free -h sudo swapon ./ddout.txt swapon -s sudo swapon -a #启动所有交换分区 sudo swapoff ./ddout.txt
设置自启动挂载。注意,使用物理分区的时候可以使用UUID,
但是在使用交换文件的时候,只能使用设备名(交换文件的路径)删除交换分区
先swapoff,然后删除自动挂载配置,然后删除分区或者文件