原创:小姐姐味道(微信公众号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*)。
在这整块磁盘能够被使用之前,我们需要对它进行三次操作。
磁盘分区
磁盘格式化
磁盘挂载
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
对于一个以提供非法文件服务的公司来说,最大的投入,就是存储。不过,这些存储都是廉价的,可以使用最初级的硬盘完成任务。
即使是这么便宜的硬盘,也要投入很多才行。这也很可惜,现在公司花了不少钱建设这个体系,还没开始盈利,就被全部端掉了。
知道这个结果的所有人,泪水掉了下来。这是一个三输的局面:
公司员工要进去蹲几年才能出来。
警察没收了一家亏本的公司,并没什么东西能够充公。
那就是你啊。
作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。
推荐阅读:
一图解千愁,jvm内存从来没有这么简单过!
失联的架构师,只留下一段脚本
架构师写的BUG,非比寻常
nginx工程师,需要上承天命,下召九幽
实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
又一P1故障,锅比脸圆
传统企业的人才们,先别忙着跳“互联网”!
面试官很牛,逼我尿遁
又一批长事务,P0故障谁来背锅?
一天有24个小时?别开玩笑了!
《程序人生》杀机!
可怕的“浏览器指纹”,让你在互联网上,无处可藏
2w字长文,让你瞬间拥有「调用链」开发经验
996的乐趣,你是无法想象的
作为高级Java,你应该了解的Linux知识(非广告)
必看!java后端,亮剑诛仙(最全知识点)
学完这100多技术,能当架构师么?(非广告)
Linux上,最常用的一批命令解析(10年精选)
数百篇「原创」文章,助你完成技术「体系化」
▼