OpenHarmony开发者论坛

标题: 一键优雅给Ubuntu20.04服务器挂载新磁盘 [打印本页]

作者: 润开鸿_闻飞    时间: 2024-7-11 14:14
标题: 一键优雅给Ubuntu20.04服务器挂载新磁盘
[md][itopen组织](https://gitee.com/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`是新增加的未分区磁盘

```bash
$ 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`表示创建逻辑分区![](../img/icon/icon-note.gif#id=FBhmg&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none)**说明:** 一块硬盘最多只能创建4个主分区,逻辑分区可以创建若干个
- 根据提示输入 `x`表示创建x个分区![](../img/icon/icon-note.gif#id=WvsoC&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none)**说明:** 我们挂载磁盘一般只创建一个分区即可,直接输入 `1`即可
- 根据提示直接回车设置分区开始位置是从第2048个扇区开始![](../img/icon/icon-note.gif#id=aVZeO&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none)**说明:** 由于 `EFI`的兴起,要给 `EFI`代码留磁盘最开始的 `1M`空间,即 `2048*521/(1024*1024)=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`表示挂载新磁盘成功
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5