Linux磁盘管理(命令行)

2022-09-02 14:16:12 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

文章目录

  • 查看磁盘设备
  • 文件系统格式简介
  • 磁盘管理命令
  • 磁盘分区
  • 磁盘格式化
  • 挂载/卸载磁盘

查看磁盘设备

使用df或者ls命令查看Linux系统的磁盘设备,下图的sdb1就是我接入Ubuntu的一个SD卡,sda是系统硬盘(虚拟机的虚拟磁盘)。

文件系统格式简介

我们可以在Ubuntu下使用下面的方式查看各磁盘的文件系统类型,

上图显示,linux系统分区的文件系统类型为ext4,SD卡的文件系统为ntfs,下面是常见文件系统的简介:

EXT

EXT是延伸文件系统(英语:Extended file system,缩写为 ext或 ext1),也译为扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在linux上,第一个利用虚拟文件系统实现出的文件系统,在linux核心0.96c版中首次加入支持,最大可支持2GB的文件系统。目前的最新版本为5.0,于2014年6月22日发布。 EXT它是专门为Linux设计的,拥有最快的速度和最小的CPU占用率。 Linux作为自由软件,赢得了许多用户,其磁盘分区格式一种是Linux Native主分区,另一种是Linux Swap交换分区,并且主分区和交换分区都采用同一种格式,既Native和Swap格式。 这两种分区格式的安全和稳定性相当好,使用Linux操作系统死机的机会将大大减少。但是,目前支持这类分区格式的操作系统也有Linux和Android。 ——百度百科

FAT

FAT是文件配置表(英语:File Allocation Table,首字母缩略字:FAT),是一种由微软发明并拥有部分专利的文件系统,供MS-DOS使用,也是所有非NT核心的微软窗口使用的文件系统。 FAT文件系统考虑当时电脑性能有限,所以未被复杂化,因此几乎所有个人电脑的操作系统都支持。这特性使它成为理想的软盘和存储卡文件系统,也适合用作不同操作系统中的数据交流。现在,一般所讲的FAT专指FAT32。 但FAT有一个严重的缺点:当文件删除后写入新数据,FAT不会将文件整理成完整片段再写入,长期使用后会使文件数据变得逐渐分散,而减慢了读写速度。碎片整理是一种解决方法,但必须经常重组来保持FAT文件系统的效率。 ——百度百科

FAT16

FAT(File Allocation Table)是“文件分配表”的意思。顾名思义,就是用来记录文件所在位置的表格,它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,MS-DOS 6.x及以下版本使用FAT16。操作系统根据表现整个磁盘空间所需要的簇数量来确定使用多大的FAT。所谓簇就是磁盘空间的配置单位,就象图书馆内一格一格的书架一样。FAT16使用了16位的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT16。 ——百度百科

FAT32

FAT32指的是文件分配表是采用32位二进制数记录管理的磁盘文件管理方式,因FAT类文件系统的核心是文件分配表,命名由此得来。FAT32是从FAT和FAT16发展而来的,优点是稳定性和兼容性好,能充分兼容Win 9X及以前版本,且维护方便。缺点是安全性差,且最大只能支持32GB分区,单个文件也只能支持最大4GB。 ——百度百科

exFAT

exFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。对于磁盘则不太适用。 ——百度百科

NTFS

NTFS(New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。 ——百度百科

磁盘管理命令

fdisk是一个磁盘管理命令,使用起来比较简单,它可用来查看/修改磁盘分区信息。

如果只是看磁盘信息,可以使用sudo fdisk -l

在终端上输入sudo fdisk /dev/sdb可以进入sdb的磁盘管理,同时终端会打印如下信息,提示所有可用操作。

代码语言:javascript复制
  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

比较常用的命令如下:

  • p 显示现有的分区
  • n 建立新的分区
  • t 更改分区类型
  • d 删除现有的分区
  • w 保存分区更改并退出
  • q 不保存退出

磁盘分区

接下来我们来对SD卡进行分区操作,我打算把SD卡(/dev/sdb)分成两个分区,并设置不同的文件系统。

首先,在sudo fdisk /dev/sdb进入磁盘管理的情况下输入p,查看磁盘分区情况,磁盘分区是以扇区为单位,一个扇区512字节,该SD卡总共有15603712个扇区。

输入d将分区/dev/sdb1删除,然后输入n新建一个分区,

按照提示分别输入分区选项,选择主分区,分区号为1,起始扇区为2048,由于我想把SD卡平分成两个分区,所以我的截止扇区=(最大扇区-起始扇区)/ 2,

再用同样的步骤,创建第二个分区,将SD卡剩余空间分配完,

最后记得一定要保存后再退出,虽然此时分区制作完成,但这两个分区还不能使用,因为还没进行格式化(没有文件系统)。

磁盘格式化

Linux下的格式化命令是mkfs,它能格式化的系统包括:

sudo mkfs.ntfs /dev/sdb1可以把/dev/sdb1分区格式化为 NTFS 文件系统(竟然用了十几分钟,太慢了。。。)

此时SD卡的1分区已经是NTFS文件系统了。

同样的步骤,我将第二分区改为FAT32(VFAT)文件系统,这次很快,格式化前,(如果分区已经有文件系统且被挂载)一定要先取消挂载。

继续用sudo fdisk -l,发现二号分区并没有变化(但其实已经是FAT32系统了)

使用parted命令也可以查看文件系统类型。

挂载/卸载磁盘

磁盘分区只有挂载后才能使用,一般的发行版Linux都会有自动挂载功能,比如Ubuntu将外部磁盘挂载到了/media目录下,

我们也可以使用mount命令进行手动挂载,挂载之前,如果目标分区已经被其他目录挂载,需要使用umonut进行卸载,下图我使用sudo mount -t ntfs /dev/sdb1 /mnt/将/dev/sd1分区挂载到了/mnt目录下(个人习惯不加-t参数,但是不知道有什么后果)。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140404.html原文链接:https://javaforall.cn

0 人点赞