linux磁盘管理

相关概念

在这里有时候并不严格区分目录和文件。
物理磁盘:/dev/sd–
虚拟磁盘:/dev/vd–
文件系统:一个可以被挂载的东西就行
超级区块:记录文件系统整体信息。包括统计信息和挂载信息
inode:用于记录文件的属性,权限信息,涉及的数据区块号码等,一个文件或目录唯一对应一个inode。。注意,这货是可以间接分级来扩大的(当文件使用的数据区块非常多)。
数据区块(block):记录实际文件内容,也是可以分级的(当目录的子目录非常多)

ext2

  1. inode与block的规划在格式化的时候就固定,无法更改
  2. 多个区块群组
  3. 最前面有一个启动扇区,可以放引导程序
  4. 最大文件系统总容量和最大单一文件限制
  5. 一个区块(就是数据块)只能存在一个文件的数据。就是只能属于一个文件。
  6. 区块群组的超级块保存了文件系统超级快的部分副本。

文件系统同步

可以使用sync把内存的脏数据写入磁盘。一般执行reboot等正常关机操作之前都会执行。

日志式文件系统

提高了文件系统状态检查的效率

简单操作

df -h
df -ah
du -h
du -sh ./ 查看目录下文件占用总大小
dumpe2fs

/proc

挂载在内存里面,磁盘占用是0

/dev/shm

利用内存虚拟出来的空间,读写贼快,但是不能持久保存

硬链接和软连接

文件名只和目录有关,文件内容则与inode有关。

硬链接

硬链接只是在目录下新增一个链接到某个inode的文件名而已。

注意

  • 硬链接只能用于文件,不能用于目录,而且不能跨文件系统

  • 链接到一起的文件,他们是等价的

  • 删除一个硬链接,并不会删除文件。只有当硬链接数是0的时候,文件才会被删除

    把a.txt链接到b.txt

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 partprobe更新分区表信息

    删除一个分区

  1. 进入设备sudo gdisk /dev/nvme0n1

  2. 输入p查看分区信息

  3. 输入d进行删除,这个时候会提示选择哪个分区,输入对应的数字即可

  4. (退出程序)输入w使用更改,q放弃更改

  5. 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

第一列 设备标识

  • 设备文件名 /dev/sda

  • UUID,如UUID=XXXX

  • LABEL,LABEL=XXXX

    第二列 挂载点

    第三列 磁盘分区的文件系统,例如xfs,ext4等

    第四列 文件系统参数

    • async/sync

    • auto/noauto

    • rw/ro

    • exec/noexec

    • user/nouser

    • defaults 同时具有这些权限,一般设置为这个就可以

      第五列 一般是0

    • 能否被dump备份命令作用,dump现在一般不用了

      第六列 是否以fsck检验扇区,现在一般是0

      实际文件系统的挂载是记录到/etc/mtab和/proc/mounts下,修改文件系统挂载的时候会同时修改这个两个文件

特殊设备文件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

内存交换分区的创建

  1. 获得文件系统,可以使用物理分区或者dd命令创建文件,或者fallocate -l 2G swapfile
    这里执行sudo dd if=/dev/zero of=/dev/shm/ddout.txt bs=1M count=512

  2. 修改文件的权限。
    sudo chmod 0600 ddout.txt
    sudo chown 0:0 ddout.txt

  3. 创建分区格式
    sudo mkswap ddout.txt

  4. 启动交换分区和观察

    free -h
    sudo swapon ./ddout.txt
    swapon -s
    sudo swapon -a #启动所有交换分区
    sudo swapoff ./ddout.txt 
    

    设置自启动挂载。注意,使用物理分区的时候可以使用UUID,
    但是在使用交换文件的时候,只能使用设备名(交换文件的路径)

    删除交换分区

    先swapoff,然后删除自动挂载配置,然后删除分区或者文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值