如何在 Linux 分区或逻辑卷上创建文件系统

学习如何在您的系统中创建文件系统并永久或非永久地挂载它。
185 位读者喜欢这篇文章。
Filing papers and documents

在计算中,文件系统控制数据的存储和检索方式,并帮助组织存储介质上的文件。如果没有文件系统,存储中的信息将是一个大的数据块,你无法分辨一条信息的结束位置和下一条信息的开始位置。文件系统通过为存储数据的文件提供名称并维护文件和目录的表(包括它们在文件系统磁盘上的起始/结束位置、总大小等)来帮助管理所有这些。

在 Linux 中,当您创建硬盘分区或逻辑卷时,下一步通常是通过格式化分区或逻辑卷来创建文件系统。本教程假设您知道如何创建分区或逻辑卷,并且您只想格式化它以包含文件系统并挂载它。

创建文件系统

假设您刚刚向系统添加了一个新磁盘,并在其上创建了一个名为 /dev/sda1 的分区。

  1. 要验证 Linux 内核是否可以看到该分区,您可以 cat 输出 /proc/partitions,如下所示
    [root@localhost ~]# cat /proc/partitions
    major minor  #blocks  name
    
     253    	0   10485760 vda
     253    	1	8192000 vda1
      11    	0	1048575 sr0
      11    	1    	374 sr1
       8    	0   10485760 sda
       8    	1   10484736 sda1
     252    	0	3145728 dm-0
     252    	1	2097152 dm-1
     252    	2	1048576 dm-2
       8   	16	1048576 sdb
  1. 确定要创建的文件系统类型,例如 ext4、XFS 或其他任何类型。以下是一些选项
    [root@localhost ~]# mkfs.<tab><tab> 
    mkfs.btrfs   mkfs.cramfs  mkfs.ext2	mkfs.ext3	mkfs.ext4	mkfs.minix   mkfs.xfs 
  1. 出于本练习的目的,请选择 ext4。(我喜欢 ext4,因为它允许您在需要时缩小文件系统,这对于 XFS 来说并不那么直接。)以下是如何完成的(输出可能因设备名称/大小而异)
    [root@localhost ~]# mkfs.ext4  /dev/sda1
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=8191 blocks
    194688 inodes, 778241 blocks
    38912 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=799014912
    24 block groups
    32768 blocks per group, 32768 fragments per group
    8112 inodes per group
    Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
    
    Allocating group tables: done                       	 
    Writing inode tables: done                       	 
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
  1. 在上一步中,如果要创建不同类型的文件系统,请使用不同的 mkfs 命令变体。

挂载文件系统

创建文件系统后,您可以将其挂载到您的操作系统中。

  1. 首先,识别新文件系统的 UUID。发出 blkid 命令以列出所有已知的块存储设备,并在输出中查找 sda1
    [root@localhost ~]# blkid
    /dev/vda1: UUID="716e713d-4e91-4186-81fd-c6cfa1b0974d" TYPE="xfs"
    /dev/sr1: UUID="2019-03-08-16-17-02-00" LABEL="config-2" TYPE="iso9660"
    /dev/sda1: UUID="wow9N8-dX2d-ETN4-zK09-Gr1k-qCVF-eCerbF" TYPE="LVM2_member"
    /dev/mapper/test-test1: PTTYPE="dos"
    /dev/sda1: UUID="ac96b366-0cdd-4e4c-9493-bb93531be644" TYPE="ext4"
    [root@localhost ~]#
  1. 运行以下命令以挂载 /dev/sd1 设备
    [root@localhost ~]# mkdir /mnt/mount_point_for_dev_sda1
    [root@localhost ~]# ls /mnt/
    mount_point_for_dev_sda1
    [root@localhost ~]# mount -t ext4 /dev/sda1  /mnt/mount_point_for_dev_sda1/
    [root@localhost ~]# df -h
    Filesystem  	Size  Used Avail Use% Mounted on
    /dev/vda1   	7.9G  920M  7.0G  12% /
    devtmpfs    	443M 	0  443M   0% /dev
    tmpfs       	463M 	0  463M   0% /dev/shm
    tmpfs       	463M   30M  434M   7% /run
    tmpfs       	463M 	0  463M   0% /sys/fs/cgroup
    tmpfs        	93M 	0   93M   0% /run/user/0
    /dev/sda1   	2.9G  9.0M  2.7G   1% /mnt/mount_point_for_dev_sda1
    [root@localhost ~]#

    df -h 命令显示哪个文件系统挂载在哪个挂载点上。查找 /dev/sd1。上面的挂载命令使用了设备名称 /dev/sda1。将其替换为 blkid 命令中标识的 UUID。另请注意,创建了一个新目录以将 /dev/sda1 挂载在 /mnt 下。

  1. 直接在命令行上使用 mount 命令的问题(如上一步所示)是,挂载不会在重启后持续存在。要永久挂载文件系统,请编辑 /etc/fstab 文件以包含您的挂载信息
    UUID=ac96b366-0cdd-4e4c-9493-bb93531be644 /mnt/mount_point_for_dev_sda1/ ext4  defaults   0 0
  1. 编辑 /etc/fstab 后,您可以 umount /mnt/mount_point_for_dev_sda1 并运行命令 mount -a 以挂载 /etc/fstab 中列出的所有内容。如果一切顺利,您仍然可以列出 df -h 并看到您的文件系统已挂载
    root@localhost ~]# umount /mnt/mount_point_for_dev_sda1/
    [root@localhost ~]# mount -a
    [root@localhost ~]# df -h
    Filesystem  	Size  Used Avail Use% Mounted on
    /dev/vda1   	7.9G  920M  7.0G  12% /
    devtmpfs    	443M 	0  443M   0% /dev
    tmpfs       	463M 	0  463M   0% /dev/shm
    tmpfs       	463M   30M  434M   7% /run
    tmpfs       	463M 	0  463M   0% /sys/fs/cgroup
    tmpfs        	93M 	0   93M   0% /run/user/0
    /dev/sda1   	2.9G  9.0M  2.7G   1% /mnt/mount_point_for_dev_sda1
  1. 您还可以检查文件系统是否已挂载
    [root@localhost ~]# mount | grep ^/dev/sd
    /dev/sda1 on /mnt/mount_point_for_dev_sda1 type ext4 (rw,relatime,seclabel,stripe=8191,data=ordered)

现在您知道如何创建文件系统并在您的系统中永久或非永久地挂载它了。

标签
User profile image.
Kedar 是 Red Hat 的软件质量工程师,从事 CloudForms (上游 ManageIQ) 项目的工作,主要负责内部基础设施的部署/管理。对 Jenkins Pipeline 和 Ansible 用于自动化部署感兴趣。还在编写用于监控和警报的 Shinken 模块。

2 条评论

好文章。您没有提到 lsblk,它已成为我的标准
用于处理驱动器和分区的工具。

lsblk 的输出显示了每个块设备、每个分区,甚至
lvm 信息。此外,它还显示了大小和挂载点,这可以防止
当您有多个 USB 闪存驱动器时造成的混淆。

这就是输出的样子。

[carl@sonny vid]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 477G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 476.5G 0 part
└─luks-aa3ee689... 253:0 0 476.5G 0 crypt
├─centos_sonny-root 253:1 0 50G 0 lvm /
├─centos_sonny-swap 253:2 0 7.8G 0 lvm [SWAP]
└─centos_sonny-home 253:3 0 418.7G 0 lvm /home
sdb 8:16 1 1.9G 0 disk
└─sdb1 8:17 1 1.9G 0 part /run/media/carl/carltm
sdc 8:32 1 1.8G 0 disk
└─sdc1 8:33 1 1.8G 0 part /run/media/carl/carltm1
sr0 11:0 1 1024M 0 rom
[carl@sonny vid]$

好文章,谢谢

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.