Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

前提条件: 已挂载数据盘至云服务器,且该数据盘未初始化。REF

linux硬盘初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 1.查看新增数据盘
fdisk -l

# 2.执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作.以新挂载的数据盘“/dev/vdb”为例:
fdisk /dev/vdb

# 3.输入“n”,按“Enter”,开始新建分区

# 4.以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区

# 5.以分区编号选择“1”为例,输入主分区编号“1”,按“Enter”

# 6.以选择默认起始磁柱值2048为例,按“Enter”

# 7.以选择默认截止磁柱值209715199为例,按“Enter”

# 8.输入“p”,按“Enter”,查看新建分区的详细信息

# 9.输入“w”,按“Enter”,将分区结果写入分区表中,分区创建完成!!!

# 10.执行以下命令,将新的分区表变更同步至操作系统
partprobe

# 11.将新建分区文件系统设为系统所需格式
# 以设置文件系统为“ext4”为例:
mkfs -t ext4 /dev/vdb1

# 12.执行以下命令,新建挂载目录,以新建挂载目录“/mnt/sdc”为例:
mkdir /mnt/sdc

# 13.执行以下命令,将新建分区挂载到12中创建的目录下,
# 以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:
mount /dev/vdb1 /mnt/sdc

# 14.查看挂载结果。
df -TH

磁盘挂载问题:Fdisk 最大只能创建2T 分区的盘,超过 2T 使用parted

显示硬盘及所属分区情况。在终端窗口中输入如下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
liupei@I620-G20:~$ sudo fdisk -l
Disk /dev/sda:931.5 GiB,1000204886016 字节,1953525168 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:135AABA1-1AB1-4C64-816B-28AEC718E091

设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 1050623 1048576 512M EFI 系统
/dev/sda2 1050624 1953523711 1952473088 931G Linux 文件系统


Disk /dev/sdb:2.7 TiB,3000592982016 字节,5860533168 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x86393e69

设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 4294967294 4294965247 2T 83 Linux

可以看到要挂在的 3T 磁盘,fdisk 分区最大只能 2T ,所以这里使用 parted 来分区.

因为MBR 分区表不支持容量大于2.2 TB(2.2 × 1012字节)的分区,所以也有一些 BIOS 系统为了支持大容量硬盘而用 GPT 分区表取代MBR 分区表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
liupei@I620-G20:~$ sudo parted /dev/sdb 
GNU Parted 3.2
使用 /dev/sdb
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] 打印通用求助信息,或 COMMAND 的帮助
mklabel,mktable LABEL-TYPE 创建新的磁盘卷标 (分区表)
mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区
name 编号 名称 将指定“编号”的分区命名为“名称”
print [devices|free|list,all|数字] 显示分区表、可用设备、剩余空间、所有分区或特殊分区
quit 退出程序
rescue 起始点 终止点 挽救临近“起始点”、“终止点”的遗失的分区
resizepart NUMBER END 改变 NUMBER 的大小
rm NUMBER 删除编号为 NUMBER 的分区
select 设备 选择要编辑的设备
disk_set 旗标 状态 变更已选设备上的旗标
disk_toggle [旗标] 切换已选设备上的旗标状态
set 编号 旗标 状态 改变指定“编号”分区的旗标
toggle [编号 [旗标]] 切换“编号”分区上的“旗标”状态
unit 单位 设置缺省的“单位”
version 显示目前 GNU Parted 的版本与版权信息
(parted) print
型号:ATA ST3000NM0033-9ZM (scsi)
磁盘 /dev/sdb: 3001GB
扇区大小 (逻辑/物理):512B/512B
分区表:msdos
磁盘标志:

编号 起始点 结束点 大小 类型 文件系统 标志
建立磁盘标签
(parted) mklabel gpt
警告: 现有 /dev/sdb 上的磁盘卷标将被销毁,而所有在这个磁盘上的数据将会丢失。您要继续吗?
是/Yes/否/No? Yes
(parted) print
型号:ATA ST3000NM0033-9ZM (scsi)
磁盘 /dev/sdb: 3001GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:

编号 起始点 结束点 大小 文件系统 名称 标志

创建分区,并分配合适的大小
(parted) mkpart primary 0% 67%
(parted) mkpart primary 68% 100%
(parted) print
型号:ATA ST3000NM0033-9ZM (scsi)
磁盘 /dev/sdb: 3001GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:

编号 起始点 结束点 大小 文件系统 名称 标志
1 1049kB 2010GB 2010GB primary
2 2040GB 3001GB 960GB primary

(parted) quit
信息: 你可能需要 /etc/fstab。

执行 fdisk -l ,可以看到 sdb1sdb2 分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
liupei@I620-G20:~$ sudo fdisk -l                                   

Disk /dev/sda:931.5 GiB,1000204886016 字节,1953525168 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:135AABA1-1AB1-4C64-816B-28AEC718E091

设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 1050623 1048576 512M EFI 系统
/dev/sda2 1050624 1953523711 1952473088 931G Linux 文件系统


Disk /dev/sdb:2.7 TiB,3000592982016 字节,5860533168 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:0C98E626-D1C5-472F-AA76-E9BA7E8F2A39

设备 起点 末尾 扇区 大小 类型
/dev/sdb1 2048 3926556671 3926554624 1.8T Linux 文件系统
/dev/sdb2 3985162240 5860532223 1875369984 894.3G Linux 文件系统

格式化分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
iupei@I620-G20:~$ sudo mkfs.ext4 /dev/sdb1 
mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb1 有一个 ext4 文件系统
创建于 Mon Feb 22 09:05:26 2021
无论如何也要继续?(y,N) y
创建含有 490819328 个块(每块 4k)和 122707968 个inode的文件系统
文件系统UUID:92e10b8f-eb9f-49e2-8678-31ba84c8ea26
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

正在分配组表: 完成
正在写入inode表: 完成
创建日志(262144 个块) 完成
写入超级块和文件系统账户统计信息: 已完成

(base) liupei@I620-G20:~$ sudo mkfs.ext4 /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)
创建含有 234421248 个块(每块 4k)和 58605568 个inode的文件系统
文件系统UUID:6938ad59-a5dc-4402-bebb-9551b11bbaad
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

正在分配组表: 完成
正在写入inode表: 完成
创建日志(262144 个块) 完成
写入超级块和文件系统账户统计信息: 已完成

挂载硬盘

1
2
3
4
5
6
7
8
9
liupei@I620-G20:~$ sudo mount /dev/sdb1 /mnt/t31
liupei@I620-G20:~$ sudo mount /dev/sdb2 /mnt/t32
liupei@I620-G20:~$ sudo df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 48G 0 48G 0% /dev
/dev/sda2 916G 660G 210G 76% /
/dev/sda1 511M 6.1M 505M 2% /boot/efi
/dev/sdb1 1.8T 77M 1.8T 1% /mnt/t31
/dev/sdb2 880G 77M 835G 1% /mnt/t32

设置开机自动挂载磁盘分区

1
2
3
4
5
6
7
8
9
# 1.执行如下命令,查询磁盘分区的UUID
# 以查询磁盘分区“/dev/vdb1”的UUID为例
blkid /dev/vdb1

# 2.使用VI编辑器打开“fstab”文件。
vi /etc/fstab

# 3.光标移至文件末尾,按“Enter”,添加如下内容
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2

云备份

1
华为云控制台->云硬盘备份,右上角“创建云硬盘备份”,在右侧云硬盘列表中找到当前云服务器的系统盘,根据指引完成系统盘备份

内存超限导致 OOM killer 问题

查看程序被 kill 的具体时间:

1
2
cd /var/log
sudo grep -r -i killed

Linux下有3种 Overcommit 的策略(参考内核文档:vm/overcommit-accounting),可以在 /proc/sys/vm/overcommit_memory 配置。取0,1和2三个值,默认是0。

0:启发式策略,比较严重的 Overcommit 将不能得逞,比如你突然申请了 128TB 的内存。而轻微的 Overcommit 将被允许。另外,rootOvercommit 的值比普通用户要稍微多些。

1:永远允许Overcommit,这种策略适合那些不能承受内存分配失败的应用,比如某些科学计算应用。

2:永远禁止Overcommit,在这个情况下,系统所能分配的内存不会超过swap+RAM*系数(/proc/sys/vm/overcmmit_ratio,默认50%,你可以调整),如果这么多资源已经用光,那么后面任何尝试申请内存的行为都会返回错误,这通常意味着此时没法运行任何新程序。

能否帮我设置成永久允许overcommit,因为我要做的就是科学计算应用。

OOM错误

1
2
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p

磁盘挂载

使用命令查看磁盘分区

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo fdisk -l   
设备 Start 末尾 扇区 Size 类型
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 998164479 997597184 475.7G Microsoft basic data
/dev/nvme0n1p4 998166528 1000214527 2048000 1000M Windows recovery environment

设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 2048 136790015 136787968 65.2G 83 Linux
/dev/sda2 136792062 250068991 113276930 54G 5 扩展
/dev/sda5 136792064 138741759 1949696 952M 83 Linux
/dev/sda6 138743808 216866815 78123008 37.3G 83 Linux
/dev/sda7 216868864 250068991 33200128 15.9G 82 Linux 交换 / Solaris

根据提供的磁盘信息确定想挂载的磁盘,以及确定挂载的位置。我此次的目的是将/dev/nvme0n1p3 (windows10的C:盘) 磁盘挂载到/mnt/win10 中去.

创建挂载目录

1
sudo mkdir /mnt/win10 

开始挂载

1
sudo mount /dev/nvme0n1p3/ /mnt/win10/   

设置开机自动挂载

1
2
3
u@T470:~$ sudo blkid /dev/nvme0n1p3

/dev/nvme0n1p3: LABEL=”Windows” UUID=”2C2CB6B02CB67504″ TYPE=”ntfs” PARTLABEL=”Basic data partition” PARTUUID=”494bc468-63d1-40a3-9230-97c33ed8b6cb”

从返回信息中获取 UUID=2C2CB6B02CB67504

修改自动挂载文件

1
2
3
4
5
6
7
u@T470:~$ sudo vim /etc/fstab
# 在文档末尾添加裹在磁盘的信息
# [UUID=************] [挂载磁盘分区] [挂载磁盘格式] 0 2
UUID=2C2CB6B02CB67504 /mnt/win10 ntfs defaults 0 2
# 第一个数字:0表示开机不检查磁盘,1表示开机检查磁盘;
# 第二个数字:0表示交换分区,1代表启动分区(Linux),2表示普通分区
# 我挂载的分区是在WIn系统下创建的分区,磁盘格式为ntfs

挂载vdi固态硬盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# install nbd client
sudo apt install qemu-utils
sudo apt install nbd-server nbd-client qemu-kvm
# load the nbd kernel module
sudo modprobe nbd
# connect vdi file
sudo qemu-nbd --connect=/dev/nbd0 /media/u/5c/win7.vdi
# check disk partations
sudo fdisk -l /dev/nbd0
# mount partation
sudo mount /dev/nbd0p2 win/
# umount partation
sudo umount win/
qemu-nbd --disconnect /dev/nbd0

突然无法挂载win10

UBUNTU 16.04 平时可以正常访问WIN10系统的某个NTFS分区,因此这个 NTFS 分区上的各种文件、数据,对于WIN10 和 UBUNTU16.04 来说是共享的,最近突然出现无法挂载 WIN10 的 NTFS 分区.解决方法(Ref

根本原因是,Windows 10关机或者睡眠后,其实并没有完全关机,而是将一些缓存保存在磁盘中,便于下一次开机快速启动,为了防止其他系统对缓存文件的更改,所以才会被拒绝挂载。

解决方法:打开控制面板,在电源管理中,选择关闭盖子的功能,更改不能更改的选项,去掉\textbf{快速启动}的钩。重新进入linux就可以啦!

1
sudo ntfsfix /dev/sdb1

挂载ntfs硬盘的权限问题

查看 usernamegiduid,例如

1
2
id liupei   
uid=1000(liupei) gid=1000(liupei) groups=1000(liupei),998(wheel),991(lp),3(sys),90(network),98(power)

然后设置windows硬盘开机自动挂载

1
/dev/sda3      /mnt    ntfs    defaults,utf8,uid=1000,gid=1000,dmask=022,fmask=133     0       0

utf8 :正确显示中文

uid : 本人

dmask: 文件夹权限

fmask: 文件权限

参考文献:wgh100817

评论