一键优雅为Ubuntu20.04服务器挂载新磁盘

itopen组织

1、提供OpenHarmony优雅实用的小工具

2、手把手适配riscv + qemu + linux的三方库移植

3、未来计划riscv + qemu + ohos的三方库移植 + 小程序开发

4、一切拥抱开源,拥抱国产化

一、小于2T磁盘挂载方式

1.1 安装磁盘到电脑后启动系统

1.2 查找未分区的磁盘

  • 打开终端输入sudo fdisk -l查找到没有分区的磁盘
  • 已经分区的磁盘会有对应的Device Start End Sectors Size Type信息,而未分区的磁盘没有对应的信息,通过查看当前/dev/nvme0n1是新增加的未分区磁盘
javascript 复制代码
$ sudo fdisk -l
[sudo] password for wen_fei:
Disk /dev/nvme0n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors # 未分区的磁盘
Disk model: Samsung SSD 980 PRO 2TB
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 /dev/nvme1n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors # 已分区的磁盘
Disk model: Samsung SSD 980 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6F0C9477-25AA-45D6-A027-C7186A2C5918

Device             Start        End    Sectors  Size Type
/dev/nvme1n1p1      2048    5859327    5857280  2.8G EFI System
/dev/nvme1n1p2   5859328  162109439  156250112 74.5G Linux filesystem
/dev/nvme1n1p3 162109440  220702719   58593280   28G Linux filesystem
/dev/nvme1n1p4 220702720  298827775   78125056 37.3G Linux filesystem
/dev/nvme1n1p5 298827776  376952831   78125056 37.3G Linux filesystem
/dev/nvme1n1p6 376952832  416014335   39061504 18.6G Linux filesystem
/dev/nvme1n1p7 416014336 3907028991 3491014656  1.6T Linux filesystem


Disk /dev/nvme2n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors # 已分区的磁盘
Disk model: Samsung SSD 980 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B6155B74-845D-4234-B637-4308B3F0C56D

Device         Start        End    Sectors  Size Type
/dev/nvme2n1p1  2048 3907028991 3907026944  1.8T Linux filesystem

1.3 磁盘分区

  • 对未分区的磁盘执行命令sudo fdisk /dev/xxx
  • 根据提示输入m查看指令信息
  • 根据提示输入n开始创建分区
  • 根据提示输入p表示创建主分区,或者输入区e表示创建逻辑分区:一块硬盘最多只能创建4个主分区,逻辑分区可以创建若干个
  • 根据提示输入x表示创建x个分区说明: 我们挂载磁盘一般只创建一个分区即可,直接输入1即可
  • 根据提示直接回车设置分区开始位置是从第2048个扇区开始: 由于EFI的兴起,要给EFI代码留磁盘最开始的1M空间,即2048521/(10241024)=1M,因此分区默认第2048个扇区开始
  • 根据提示直接回车设置分区结束位置为磁盘末尾
  • 根据提示输入w保存分区设置
bash 复制代码
$ sudo fdisk /dev/nvme0n1

Welcome to fdisk (util-linux 2.34).
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 0x20e2fdf1.

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  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


Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-3907029167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, default 3907029167):

Created a new partition 1 of type 'Linux' and of size 1.8 TiB.

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

1.4 格式化分区

  • 输入命令sudo mkfs -t ext4 /dev/xxx进行格式化磁盘
  • 记住生成磁盘的UUID为挂载磁盘使用
bash 复制代码
$ sudo mkfs -t ext4 /dev/nvme0n1
mke2fs 1.45.5 (07-Jan-2020)
Found a dos partition table in /dev/nvme0n1
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 488378646 4k blocks and 122101760 inodes
Filesystem UUID: 330fdef4-df72-47ab-afa0-0ff08ae4999f
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 (262144 blocks): done
Writing superblocks and filesystem accounting information: done

1.5 设置开机自动挂载

  • 打开文件/etc/fstab添加新分区挂载到/data目录
bash 复制代码
$ sudo vim /etc/fstab
# /datb was on /dev/nvme3n1p1 during installation
UUID=330fdef4-df72-47ab-afa0-0ff08ae4999f /data           ext4    defaults        0       2

1.6 重启系统

  • 系统重启后查看已经有目录/data表示挂载新磁盘成功

    1.7 删除分区

  • 卸载分区:使用sudo umount xxx

  • 对已分区的磁盘执行命令sudo fdisk /dev/xxx

  • 根据提示输入m查看指令信息

  • 根据提示输入d开始删除最后一个分区,如果想删除更多的分区,则不停的输入d即可

  • 根据提示输入p表示打印分区表

  • 根据提示输入w表示保存分区设置

  • 删除/etc/fstab中原UUID挂载的磁盘

bash 复制代码
$ sudo fdisk /dev/nvme0n1

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  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


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p
Disk /dev/nvme0n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 980 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcd706ecb

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

二、大于2T磁盘挂载方式

2.1 安装磁盘到电脑后启动系统

2.2 查找未分区的磁盘

  • 打开终端输入sudo fdisk -l查找到没有分区的磁盘
  • 已经分区的磁盘会有对应的Device Start End Sectors Size Type信息,而未分区的磁盘没有对应的信息,通过查看当前/dev/nvme0n1是新增加的未分区磁盘
bash 复制代码
$ sudo fdisk -l
[sudo] password for wen_fei:
Disk /dev/nvme0n1: 3.74 TiB, 4096805658624 bytes, 8001573552 sectors
Disk model: Lexar SSD ARES 4TB
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 /dev/nvme1n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors # 已分区的磁盘
Disk model: Samsung SSD 980 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6F0C9477-25AA-45D6-A027-C7186A2C5918

Device             Start        End    Sectors  Size Type
/dev/nvme1n1p1      2048    5859327    5857280  2.8G EFI System
/dev/nvme1n1p2   5859328  162109439  156250112 74.5G Linux filesystem
/dev/nvme1n1p3 162109440  220702719   58593280   28G Linux filesystem
/dev/nvme1n1p4 220702720  298827775   78125056 37.3G Linux filesystem
/dev/nvme1n1p5 298827776  376952831   78125056 37.3G Linux filesystem
/dev/nvme1n1p6 376952832  416014335   39061504 18.6G Linux filesystem
/dev/nvme1n1p7 416014336 3907028991 3491014656  1.6T Linux filesystem


Disk /dev/nvme2n1: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors # 已分区的磁盘
Disk model: Samsung SSD 980 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B6155B74-845D-4234-B637-4308B3F0C56D

Device         Start        End    Sectors  Size Type
/dev/nvme2n1p1  2048 3907028991 3907026944  1.8T Linux filesystem

2.3 磁盘分区

  • 对未分区的磁盘执行命令sudo parted /dev/xxx
  • 根据提示输入mklabel gpt建立GPT分区
  • 根据提示输入Yes开始创建分区
  • 根据提示输入mkpart primary ext4 0% 100%创建主分区
  • 根据提示输入print查看详细信息
  • 根据提示输入quit退出
bash 复制代码
$ sudo parted /dev/nvme0n1
GNU Parted 3.3
Using /dev/nvme0n1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/nvme0n1 will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? Yes
(parted) mkpart primary ext4 0% 100%
(parted) print
Model: Lexar SSD ARES 4TB (nvme)
Disk /dev/nvme0n1: 4097GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4097GB  4097GB  ext4         primary

(parted) quit
Information: You may need to update /etc/fstab.

2.4 格式化分区

  • 输入命令sudo mkfs -t ext4 /dev/xxx进行格式化磁盘
  • 记住生成磁盘的UUID为挂载磁盘使用
bash 复制代码
$ sudo mkfs -t ext4 /dev/nvme0n1
mke2fs 1.45.5 (07-Jan-2020)
/dev/nvme0n1 contains a ext4 file system
        created on Wed Jul  3 17:44:09 2024
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 1000196694 4k blocks and 250052608 inodes
Filesystem UUID: 7918bc9f-458c-442f-b586-53fa657b4ad2
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

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

2.5 设置开机自动挂载

  • 打开文件/etc/fstab添加新分区挂载到/data目录
bash 复制代码
$ sudo vim /etc/fstab
# /datb was on /dev/nvme3n1p1 during installation
UUID=7918bc9f-458c-442f-b586-53fa657b4ad2 /data           ext4    defaults        0       2

2.6 重启系统

  • 系统重启后查看已经有目录/data表示挂载新磁盘成功