手把手教你——linux磁盘分区

初始化磁盘步骤

命令

先了解一下我们要使用到的 Linux 命名:

  • df:用于显示目前 Linux 系统上的文件系统的磁盘使用情况统计
  • fdisk:用于管理磁盘分区表
  • mount:用于挂载 Linux 系统外的文件
  • partprobe:用于重读分区表,当出现删除文件后,出现仍然占用空间。可以在不重启的情况下重读分区。
  • mkfs :用于在设备上创建Linux文件系统

磁盘分区

使用fdisk命令进行磁盘分区

  • 执行 fdisk -l 命令查看磁盘信息
    假设新增磁盘为/dev/sda
  • 执行 fdisk /dev/sda 进入对该磁盘的操作
  • 按照指引依次设置分区类型、分区编号、起始扇区、终止扇区,最后w写入分区表
  • 执行 partprobe 将新的分区表同步到操作系统
    #查看系统磁盘信息,获取新增加的磁盘设备信息。
    [root@192-168-101-78 ~]# fdisk -l
    #回显
    
    Disk /dev/vda: 214.7 GB, 214748364800 bytes, 419430400 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x00007489
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048     2099199     1048576   83  Linux
    /dev/vda2         2099200   419430399   208665600   83  Linux
    
    Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    #可以看到,当前的服务器上有两个磁盘,一个/dev/vda,一个/dev/sda,/dev/vda 的是服务器自带的系统盘,/dev/sda的就是新购买的数据盘,还没有进行过分区操作。
    
    #对新增的数据盘进行分区操作
    #执行 fdisk /dev/sda 进入对该磁盘的操作
    #按照指引依次设置分区类型、分区编号、起始扇区、终止扇区,最后w写入分区表
    [root@192-168-101-78 ~]# fdisk /dev/sda
    Welcome to fdisk (util-linux 2.23.2).
    
    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
    Building a new DOS disklabel with disk identifier 0xde262ecd.
    
    #输入m查看命令使用说明:
    Command (m for help): m
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
    
    #输入 n,回车新建分区
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    
    #这里我们可以看到有两种分区类型:primary(主分区)和 extended(扩展分区),这里选择创建主分区,输入 p 回车,会提示输入一些信息
    Select (default p): p
    
    #由于这个磁盘是全新的,没有任何分区,所以设置分区编号为 1,其他的为默认值,即可创建新的分区。
    Partition number (1-4, default 1): 1
    
    #其他的为默认值,回车即可
    First sector (2048-2147483647, default 2048):
    Using default value 2048
    
    #其他的为默认值,回车即可
    Last sector, +sectors or +size{K,M,G} (2048-2147483647, default 2147483647):
    Using default value 2147483647
    Partition 1 of type Linux and of size 1024 GiB is set
    
    
    #创建完分区后,输入 p 即可查看新创建的分区信息
    Command (m for help): p
    
    Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0xde262ecd
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048  2147483647  1073740800   83  Linux
    
    
    #将分区结果写入分区表中,确认分区信息后,输入 w 回车即可将分区结果写入分区表中。如果之前分区操作有误,请输入 q,则会退出 fdisk 分区工具,之前的分区结果将不会被保留。
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    
    
    #将新的分区表变更同步至操作系统,partprobe 命令可以在不重启系统的情况下重读分区表
    [root@192-168-101-78 ~]# partprobe /dev/sda

     

磁盘格式化

使用mkfs(make file system)命令进行磁盘的格式化
假设上一步设置的分区编号为1
执行 mkfs -t ext4 /dev/sda1进行格式化

[root@192-168-101-78 ~]# fdisk -l

Disk /dev/vda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00007489

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200   419430399   208665600   83  Linux

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xde262ecd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  2147483647  1073740800   83  Linux


#设置文件系统格式,执行以下命令,将新建分区文件系统设为系统所需格式。格式:mkfs-t文件系统格式 分区
#执行 mkfs -t ext4 /dev/sda1进行格式化
[root@192-168-101-78 ~]# mkfs -t ext4 /dev/sda1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
67108864 inodes, 268435200 blocks
13421760 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2415919104
8192 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

#格式化需要等待一段时间,请观察系统运行状态,不要退出。不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
[root@192-168-101-78 ~]#

挂载磁盘

  • 如果挂载到新的挂载点,直接 mkdir /mnt/data 新建目录,然后 mount /dev/sda1 /mnt/data  即可
  • 如果挂载到已有的挂载点,需要先 mount /dev/sda1 /mnt/data 将磁盘挂载到/mnt/data上,然后将原有路径下的内容mv到/mnt下,最后再mount回原路径
  • 执行 df -hT 查看磁盘挂载信息
[root@192-168-101-78 ~]# ll /mnt/
total 0

#新建挂载目录
[root@192-168-101-78 ~]# mkdir /mnt/oss_data_0
[root@192-168-101-78 ~]# ll /mnt/
total 0
drwxr-xr-x 2 root root 6 Jan 14 10:41 oss_data_0
[root@192-168-101-78 ~]# ll /mnt/oss_data_0/
total 0
[root@192-168-101-78 ~]#

#挂载磁盘分区
[root@192-168-101-78 ~]# mount /dev/sda1 /mnt/oss_data_0
[root@192-168-101-78 ~]# ll /mnt/oss_data_0/
total 16
drwx------ 2 root root 16384 Jan 14 10:54 lost+found


#使用 df -h 查看挂载结果
[root@192-168-101-78 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2       199G  2.0G  197G   1% /
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  8.7M  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/vda1      1014M  179M  836M  18% /boot
tmpfs           1.6G     0  1.6G   0% /run/user/0
/dev/sda1      1008G   77M  957G   1% /mnt/oss_data_0
#表示新建分区 /dev/sda1  已挂载至 /mnt/oss_data_0,此时已经可以使用新增加的数据盘了。但是一旦重启云服务器,挂载就会失效,所以我们需要设置自动挂载磁盘。
[root@192-168-101-78 ~]#


#获取磁盘分区的 UUID 信息;执行如下命令,查询磁盘分区的 UUID。
[root@192-168-101-58 ~]# blkid /dev/sda1
/dev/sda1: UUID="cf8b577c-85c8-4302-89b4-7c73f4f6ebb3" TYPE="ext4"
[root@192-168-101-58 ~]# blkid /dev/vda2
/dev/vda2: UUID="17bd346d-03ac-4cd6-aa5b-4e52bc67a85c" TYPE="xfs"
[root@192-168-101-58 ~]# blkid /dev/vda1
/dev/vda1: UUID="31fb3061-d387-48b1-a9ff-09d5230e88cf" TYPE="xfs"
[root@192-168-101-58 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jul 21 00:00:25 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=17bd346d-03ac-4cd6-aa5b-4e52bc67a85c /                       xfs     defaults        0 0
UUID=31fb3061-d387-48b1-a9ff-09d5230e88cf /boot                   xfs     defaults        0 0

#这里我们需要编辑 fstab 文件,fstab 文件包含了 Linux 系统可以挂载使用的文件系统的信息。
[root@192-168-101-58 ~]# vi /etc/fstab
[root@192-168-101-78 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jul 21 00:00:25 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=17bd346d-03ac-4cd6-aa5b-4e52bc67a85c /                       xfs     defaults        0 0
UUID=31fb3061-d387-48b1-a9ff-09d5230e88cf /boot                   xfs     defaults        0 0
UUID=cf8b577c-85c8-4302-89b4-7c73f4f6ebb3 /mnt/oss_data_0         ext4    defaults        0 2

#以内容上仅为示例,具体请以实际情况为准,参数说明如下: - 第一列为 UUID,此处填写上面查询到的磁盘分区的 UUID。 - 第二列为磁盘分区的挂载目录,可以通过 df -TH 命令查询。 - 第三列为磁盘分区的文件系统格式, 可以通过 df -TH 命令查询。 - 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。 - 第五列为 Linux dump 备份选项。 - 0 表示不使用 Linux dump 备份。现在通常不使用 dump 备份,此处设置为 0 即可。 - 1 表示使用 Linux dump 备份。 - 第六列为 fsck 选项,即开机时是否使用 fsck 检查磁盘。 - 0表示不检验。 - 挂载点为(/)根目录的分区,此处必须填写 1。根分区设置为 1,其他分区只能从 2 开始,系统会按照数字从小到大依次检查下去。





#验证挂载信息,执行如下命令,卸载已挂载的分区
# umount 磁盘分区
[root@192-168-101-58 ~]# umount /dev/sda1

#执行如下命令,将 /etc/fstab 文件所有内容重新加载。
[root@192-168-101-58 ~]# mount -a

#执行如下命令,查询文件系统挂载信息。
[root@192-168-101-58 ~]# mount | grep /mnt
/dev/sda1 on /mnt/oss_data_0 type ext4 (rw,relatime,data=ordered)
[root@192-168-101-58 ~]#

自此,初始化一个新的 Linux 磁盘的工作已经完成。

上一篇:群晖FTP 外网访问 200 Type set to A 227 Entering passive Mode(XX).


下一篇:AtCoder Beginner Contest 192 略解