• 一文教你Linux 磁盘管理


    1.磁盘分区机制

    在Linux中,使用 备名称+分区号 的方式来表示分区,例如:

    • sda1—第一块硬盘的第一个分区
    • sda2—第一块硬盘的第二个分区
    • sdb1—第二块硬盘的第一个分区

    使用lsblk命令,可以查看所有设备挂载情况:

    # lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   80G  0 disk 
    ├─sda1   8:1    0   79G  0 part /
    ├─sda2   8:2    0    1K  0 part 
    └─sda5   8:5    0  975M  0 part [SWAP]
    sr0     11:0    1 1024M  0 rom 
    

    查看更加详细的挂载情况,加入-f参数:

    ┌──(root💀kali)-[~]
    └─# lsblk -f
    NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    sda                                                                           
    ├─sda1 ext4   1.0         bb71bd36-b961-41e3-8202-84c2f0bcbdfa   63.2G    13% /
    ├─sda2                                                                        
    └─sda5 swap   1           4c5a131c-d68c-4ab1-bba2-3e5d00afc269                [SWAP]
    sr0  
    

    2.实用案例:增加一块硬盘并进行分区挂载

    虚拟机中添加一块硬盘

    右键虚拟机列表中的虚拟机,选择设置:

    在这里插入图片描述

    点击添加,选择硬盘:

    在这里插入图片描述

    一路向下,可以在这里指定新硬盘的容量,最后添加成功:

    在这里插入图片描述

    可以看到,新硬盘已经添加完毕啦:

    在这里插入图片描述

    重启虚拟机,再次查看设备挂载情况,发现多了一块硬盘sdb

    ┌──(root💀kali)-[~/Desktop]
    └─# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   80G  0 disk 
    ├─sda1   8:1    0   79G  0 part /
    ├─sda2   8:2    0    1K  0 part 
    └─sda5   8:5    0  975M  0 part [SWAP]
    sdb      8:16   0    1G  0 disk 
    sr0     11:0    1 1024M  0 rom  
    

    进行磁盘分区

    fdisk 是 Linux 的磁盘分区表操作工具

    语法:

    fdisk [-l] 装置名称
    

    选项与参数:

    • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

    指定sdb硬盘进行分区:

    ┌──(root💀kali)-[~/Desktop]
    └─# fdisk /dev/sdb
    
    Welcome to fdisk (util-linux 2.36.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0xbd52867c.
    

    输入n添加一个分区:

    Command (m for help): n
    

    输入p添加一个主分区:(e表示扩展分区)

    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p
    

    选择分区号,默认为1:

    Partition number (1-4, default 1): 1
    

    接着输入两次回车,完成分区:

    First sector (2048-2097151, default 2048): 
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151, default 2097151): 
    
    Created a new partition 1 of type 'Linux' and of size 1023 MiB.
    
    Command (m for help): 
    

    最后,切记输入w保存分区的修改内容:

    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    分区加入成功:

    ┌──(root💀kali)-[~/Desktop]
    └─# lsblk         
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   80G  0 disk 
    ├─sda1   8:1    0   79G  0 part /
    ├─sda2   8:2    0    1K  0 part 
    └─sda5   8:5    0  975M  0 part [SWAP]
    sdb      8:16   0    1G  0 disk 
    └─sdb1   8:17   0 1023M  0 part 
    sr0     11:0    1 1024M  0 rom 
    

    格式化磁盘

    分区加入成功之后,还不能进行挂载,需要先格式化一下磁盘,使用mkfs命令进行磁盘格式化:

    其中ext4代表文件格式:

    ┌──(root💀kali)-[~/Desktop]
    └─# mkfs -t ext4 /dev/sdb1
    mke2fs 1.46.2 (28-Feb-2021)
    Creating filesystem with 261888 4k blocks and 65536 inodes
    Filesystem UUID: fa29dd9d-8062-4e8a-bee9-8f121e592e95
    Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
                                                                                                             
    ┌──(root💀kali)-[~/Desktop]
    └─# lsblk -f
    NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    sda                                                                           
    ├─sda1 ext4   1.0         bb71bd36-b961-41e3-8202-84c2f0bcbdfa   63.2G    13% /
    ├─sda2                                                                        
    └─sda5 swap   1           4c5a131c-d68c-4ab1-bba2-3e5d00afc269                [SWAP]
    sdb                                                                           
    └─sdb1 ext4   1.0         fa29dd9d-8062-4e8a-bee9-8f121e592e95                
    sr0    
    

    进行分区挂载

    分区的挂载,使用mount指令:

    注意:使用mount进行指令挂载,在系统重启之后挂载关系将会失效!🍅

    ┌──(root💀kali)-[~]
    └─# mount /dev/sdb1 newdir                                                                                                               1 ⚙
                                                                                                                                                 
    ┌──(root💀kali)-[~]
    └─# lsblk -f                                                                                                                             1 ⚙
    NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    sda                                                                           
    ├─sda1 ext4   1.0         bb71bd36-b961-41e3-8202-84c2f0bcbdfa   63.2G    13% /
    ├─sda2                                                                        
    └─sda5 swap   1           4c5a131c-d68c-4ab1-bba2-3e5d00afc269                [SWAP]
    sdb                                                                           
    └─sdb1 ext4   1.0         fa29dd9d-8062-4e8a-bee9-8f121e592e95  921.2M     0% /root/newdir
    sr0 
    

    进行分区卸载

    如果我们想取消方才进行的分区挂载,使用umount命令即可:

    ┌──(root💀kali)-[~]
    └─# umount /dev/sdb1                                                                                                                     1 ⚙
                                                                                                                                                 
    ┌──(root💀kali)-[~]
    └─# lsblk -f                                                                                                                             1 ⚙
    NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    sda                                                                           
    ├─sda1 ext4   1.0         bb71bd36-b961-41e3-8202-84c2f0bcbdfa   63.2G    13% /
    ├─sda2                                                                        
    └─sda5 swap   1           4c5a131c-d68c-4ab1-bba2-3e5d00afc269                [SWAP]
    sdb                                                                           
    └─sdb1 ext4   1.0         fa29dd9d-8062-4e8a-bee9-8f121e592e95                
    sr0   
    

    进行永久分区挂载

    永久分区挂载,需要修改linux的配置文件内容:

    vim /etc/fstab
    

    加入新的挂载关系:

    /dev/sdb1  /newdir  ext4  defaults  0  0
    

    重启之后,挂载关系将会一直存在:

    ┌──(root💀kali)-[~/Desktop]
    └─# lsblk -f      
    NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    sda                                                                         
    ├─sda1
    │    ext4   1.0         bb71bd36-b961-41e3-8202-84c2f0bcbdfa   63.2G    13% /
    ├─sda2
    │                                                                           
    └─sda5
         swap   1           4c5a131c-d68c-4ab1-bba2-3e5d00afc269                [SWAP]
    sdb                                                                         
    └─sdb1
         ext4   1.0         fa29dd9d-8062-4e8a-bee9-8f121e592e95  921.2M     0% /newdir
    sr0  
    

    3.磁盘使用情况查询

    df

    df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    语法:

    df [-ahikHTm] [目录或文件名]
    

    选项与参数:

    • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
    • -k :以 KBytes 的容量显示各文件系统;
    • -m :以 MBytes 的容量显示各文件系统;
    • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
    • -H :以 M=1000K 取代 M=1024K 的进位方式;
    • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
    • -i :不用硬盘容量,而以 inode 的数量来显示

    查看磁盘使用情况:

    ┌──(root💀kali)-[~/Desktop]
    └─# df -h        
    Filesystem      Size  Used Avail Use% Mounted on
    udev            954M     0  954M   0% /dev
    tmpfs           198M  1.2M  197M   1% /run
    /dev/sda1        78G   11G   64G  14% /
    tmpfs           988M     0  988M   0% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    /dev/sdb1       989M   24K  922M   1% /newdir
    tmpfs           198M   64K  198M   1% /run/user/0
    

    du

    Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看

    语法:

    du [-ahskm] 文件或目录名称
    

    选项与参数:

    • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
    • -h :以人们较易读的容量格式 (G/M) 显示;
    • -s :列出总量而已,而不列出每个各别的目录占用容量;
    • -S :不包括子目录下的总计,与 -s 有点差别。
    • -k :以 KBytes 列出容量显示;
    • -m :以 MBytes 列出容量显示

    查询etc目录的使用情况,深度为1:

    ┌──(root💀kali)-[/opt]
    └─# du -h --max-depth=1 /etc
    8.0K    /etc/vpnc
    4.0K    /etc/rc2.d
    12K     /etc/gtk-2.0
    8.0K    /etc/python3.9
    52K     /etc/NetworkManager
    8.0K    /etc/ipp-usb
    4.0K    /etc/rc4.d
    ...
    

    4.磁盘情况实用命令

    统计etc目录下面有多少个文件:

    ┌──(root💀kali)-[/opt]
    └─# ls -l /etc | grep "^-" | wc -l
    108
    

    统计etc目录下面有多少目录:

    ┌──(root💀kali)-[/opt]
    └─# ls -l /etc | grep "^d" | wc -l
    156
    

    统计etc目录下面有多少个文件(包括子目录里面的):

    ┌──(root💀kali)-[/opt]
    └─# ls -lR /etc | grep "^-" | wc -l
    1381
    

    统计etc目录下面有多少个文件夹(包括子目录里面的):

    ┌──(root💀kali)-[/opt]
    └─# ls -lR /etc | grep "^d" | wc -l
    382
    

    以树状显示目录结构:

    ┌──(root💀kali)-[/opt]
    └─# tree /home
    /home
    └── kali
        ├── Desktop
        ├── Documents
        ├── Downloads
        ├── Music
        ├── Pictures
        ├── Public
        ├── Templates
        └── Videos
    
    9 directories, 0 files
    
  • 相关阅读:
    【进阶版】 机器学习分类算法之XGBoost(集成学习算法)、LightGBM(梯度提升框架)(13)
    抖音关键词搜索商品-API工具
    【区块链 | 智能合约】Ethereum源代码(9)- 以太坊P2P协议接收广播的处理和Fetcher源码分析
    React笔记:useState
    【ARM 裸机】C 语言 led 驱动
    【Rust日报】2023-09-22 微软支持使用 Rust 开发 Windows 驱动程序
    8、学习 Java 中的方法(方法的定义、可变参数、参数的传递问题、方法重载、方法签名)通过官方教程
    [工具推荐]截图工具 -- snipaste
    机器学习——特征工程
    JAVA 面试大全系列-基础篇(持续跟新)
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/126977741