百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

《调教命令行09》磁盘很廉价,放小电影最合适了

nanshan 2024-11-26 06:59 15 浏览 0 评论

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。


《调教命令行01》选Linux发行版,就像挑女朋友


《调教命令行02》准备一个冰清玉洁的Linux系统


《调教命令行03》认识一下,感觉不是说来就来的


《调教命令行04》触碰Linux的每个角落(长文)


《调教命令行05》对文件的基本操作


《调教命令行06》条条大道通罗马,罗马罗马你在哪


《调教命令行07》压缩解压(有64KB彩蛋)


《调教命令行08》一文搞懂Linux权限体系

接上文。

下面的场景非常的恐怖,对有些程序员来说可以是一场噩梦。

一大早刚刚去上班,煎饼果子刚啃了一半,几个全副武装的警察就闯进了公司。二话不说控制住了工作人员,并守株待兔的等着鱼儿来上班。

原因就是:公司涉嫌存储和扩散非法文件,需要查封所有的服务器进行彻查。

这些文件,有的简单的放在磁盘上,有的放在文件存储服务器上,有的,被切成了多片放在了不同的廉价机器上。

接下来会发生什么,要看技术人员的水平,但估计结果并不会太好。

在上一小节,我们创建了两个普通用户,这两个用户没什么本事,和默认的用户root比起来,它们的权限就小得多。除了自己目录下的文件,其他的,它几乎都没有权限去修改。

这些文件,肯定是要存在磁盘上的。对磁盘的管理,有非常多的命令,这一小节的内容,对于系统管理员来说,经常使用;但对于开发来说,就要求比较低一些。因为开发只需要知道小电影存在什么地方了,不需要知道小电影是怎么存的。

那定罪的时候,运维和程序员,到底是谁的锅更大一些?其实是个悖论。运维人员在发呆的时候,脑子里回忆起了下面的知识。

1.添加新硬盘

你要是一个系统管理员,甚至是一个上了云的系统管理员,现在买了一块aws的扩展盘,它是不能被使用的。需要经过格式化挂载以后,才能投入生产。

还记得在安装系统的时候么?其中有一步,需要对虚拟机的磁盘,进行划分,我们直接采用默认的方式。不过现在已经改不了了,它已经是过去式了。

为了模拟对磁盘的管理,我们需要首先给虚拟机新加一块虚拟磁盘。首先,使用shutdown -h now命令关闭机器,进行下面的操作。

1、 进入settings选项,然后切换到storage,添加磁盘

2、 点击创建一块磁盘

3、 选择VDI

4、 动态扩容,用多少扩多少

5、 我们创建一块2GB大的,叫做disk2的磁盘

启动机器。远程连接192的ip,别忘了执行dhclient命令。

首先使用fdisk看一下目前的磁盘状况。

root@localhost ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 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: 0x000c2410

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    16777215     7339008   8e  Linux LVM

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 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 /dev/mapper/centos-root: 6652 MB, 6652166144 bytes, 12992512 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 /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 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/sda和/dev/sdb,其中sda已经被分配,已经被我们的文件系统所占用。现在,回忆一下/dev目录的用途,在这个目录下,存放了一些设备文件,假如我们再添加一块磁盘,它的句柄就应该是sdc (sd*)。

在这整块磁盘能够被使用之前,我们需要对它进行三次操作。

  1. 磁盘分区
  2. 磁盘格式化
  3. 磁盘挂载

2.分区

对磁盘分区依然是fdisk命令,以下命令,将进入交互模式。在交互模式中,输入n新建分区。由于我们的磁盘只有2GB,所以只创建一个分区就好。根据向导,一路确定向下,最后,输入w确定写入分区表,同时退出命令交互。

再次执行fdisk -l,可以看到已经多了一块2gb大小的分区。

[root@localhost ~]# fdisk /dev/sdb
...
[root@localhost ~]# fdisk -l
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4194303     2096128   83  Linux
...

3.格式化

在命令行,输入mkfs,然后按<TAB>进行补全,将会显示一批命令。

[root@localhost ~]# mkfs.
mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs

这批命令,都可以对磁盘进行格式化。目前,最常用的磁盘格式是ext4。但我们并没有找到windows操作系统的FAT以及NTFS等格式,但它们在概念上是等同的。

下面介绍一下Linux下常用的磁盘格式。

  • btrfs GPL授权。是为了替换ext系统而发起的。不熟悉,不过多评价。
  • cramfs 门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,很少用
  • ext2 ext的早先版本。
  • ext3 ext2的改进。
  • ext4 使用最多。如果对其他的不熟悉,老老实实用ext4吧。
  • minix 比较古老,也不常用。
  • xfs XFS 文件系统是扩展文件系统的一个扩展,是 64 位高性能日志文件系统。centos7.0开始的默认文件系统。

我们就录乡随俗,将磁盘给格式化成xfs。

[root@localhost ~]# mkfs.xfs /dev/sdb1

注意:如果想要把磁盘格式化成fat32的格式,需要安装一个软件。

 yum install dosfstools -y

4.挂载

最后一步,是使用mount命令挂载磁盘。我们把它挂载到/data目录。

df命令能够看到系统的磁盘使用状况,参数h是human的意思,以比较容易读的方式展现信息;lsblk则以另一个角度查看系统磁盘挂载情况。

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 908M     0  908M   0% /dev
tmpfs                    920M     0  920M   0% /dev/shm
tmpfs                    920M  8.6M  911M   1% /run
tmpfs                    920M     0  920M   0% /sys/fs/cgroup
/dev/mapper/centos-root  6.2G  1.4G  4.9G  22% /
/dev/sda1               1014M  149M  866M  15% /boot
tmpfs                    184M     0  184M   0% /run/user/0
/dev/sdb1                2.0G   33M  2.0G   2% /data

root@localhost ~]# lsblk  -f
NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1          xfs               ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4   /boot
└─sda2          LVM2_member       3GzmOd-TUc1-p2ZN-wT5q-ttky-to9l-PF495o
  ├─centos-root xfs               9f86f663-060a-4450-90f9-3005ad9c5d92   /
  └─centos-swap swap              cf8709b0-b0ab-4d44-a23e-ad76f85efad6   [SWAP]
sdb
└─sdb1          xfs               0a7c861c-1a31-45b3-bf37-c72229f35704   /data

为了能够在开机的时候加载磁盘,我们需要修改/etc/fstab文件。这种文件修改的时候一定要小心,否则会造成系统无法启动。

[root@localhost ~]# echo "/dev/sdb1  xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults        0 0
UUID=ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4 /boot  xfs     defaults        0 0
/dev/mapper/centos-swap swap    swap    defaults        0 0
/dev/sdb1                       xfs     defaults        0 0

5.交换分区

由于内存的容量有限,现在的操作系统,都会使用磁盘模拟一个虚拟内存区域,用于缓冲一些数据。由于磁盘的速度和内存不可同日而语,通常会造成应用程序的卡顿。卡归卡,应用进程却可以因此苟延残喘,续命。

swap分区,即交换区,系统在物理内存不够时,与swap进行交换。即当系统的物理内存不够用时,把硬盘中一部分空间释放出来,以供当前运行的程序使用。当那些程序要运行时,再从swap分区中恢复保存的数据到内存中。

现代互联网公司,一般对接口的响应时间有比较高的要求,swap分区一般是禁用的。关于swap,有下面几个相关的命令。

# 制作交换分区
[root@localhost ~]# mkswap /dev/sdb1

# 禁用所有交换分区
[root@localhost ~]# swapoff -a

# 启用交换分区
[root@localhost ~]# swapon

5.使用dd命令进行备份

下面的命令,将直接备份磁盘A到磁盘B。

# dd if=/dev/sda of=/dev/sdb

在上面的命令中,if代表输入的文件,of代表输出的文件。根据Linux下一切皆文件的原理,这里的文件指的就是设备。

dd命令还可以将整个磁盘打包成一个镜像文件。比如下面的命令。

# dd if=/dev/hda of=~/hdadisk.img

当然,恢复磁盘的时候,也是相当简单的,我们只需要逆向操作就可以了。

# dd if=hdadisk.img of=/dev/hda

End

对于一个以提供非法文件服务的公司来说,最大的投入,就是存储。不过,这些存储都是廉价的,可以使用最初级的硬盘完成任务。

即使是这么便宜的硬盘,也要投入很多才行。这也很可惜,现在公司花了不少钱建设这个体系,还没开始盈利,就被全部端掉了。

知道这个结果的所有人,泪水掉了下来。这是一个三输的局面:

  1. 公司员工要进去蹲几年才能出来。
  2. 警察没收了一家亏本的公司,并没什么东西能够充公。
  3. 那就是你啊。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:


一图解千愁,jvm内存从来没有这么简单过!


失联的架构师,只留下一段脚本


架构师写的BUG,非比寻常


nginx工程师,需要上承天命,下召九幽


实力解剖一枚挖矿脚本,风骚操作亮瞎双眼


又一P1故障,锅比脸圆


传统企业的人才们,先别忙着跳“互联网”!


面试官很牛,逼我尿遁


又一批长事务,P0故障谁来背锅?


一天有24个小时?别开玩笑了!


《程序人生》杀机!


可怕的“浏览器指纹”,让你在互联网上,无处可藏


2w字长文,让你瞬间拥有「调用链」开发经验


996的乐趣,你是无法想象的


作为高级Java,你应该了解的Linux知识(非广告)


必看!java后端,亮剑诛仙(最全知识点)


学完这100多技术,能当架构师么?(非广告)


Linux上,最常用的一批命令解析(10年精选)


数百篇「原创」文章,助你完成技术「体系化」

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: