# 《调教命令行09》磁盘很廉价,放小电影最合适了
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。
《调教命令行01》选Linux发行版,就像挑女朋友 (opens new window)
《调教命令行02》准备一个冰清玉洁的Linux系统 (opens new window)
《调教命令行03》认识一下,感觉不是说来就来的 (opens new window)
《调教命令行04》触碰Linux的每个角落(长文) (opens new window)
《调教命令行05》对文件的基本操作 (opens new window)
《调教命令行06》条条大道通罗马,罗马罗马你在哪 (opens new window)
《调教命令行07》压缩解压(有64KB彩蛋) (opens new window)
《调教命令行08》一文搞懂Linux权限体系 (opens new window)
接上文。
下面的场景非常的恐怖,对有些程序员来说可以是一场噩梦。
一大早刚刚去上班,煎饼果子刚啃了一半,几个全副武装的警察就闯进了公司。二话不说控制住了工作人员,并守株待兔的等着鱼儿来上班。
原因就是:公司涉嫌存储和扩散非法文件,需要查封所有的服务器进行彻查。
这些文件,有的简单的放在磁盘上,有的放在文件存储服务器上,有的,被切成了多片放在了不同的廉价机器上。
接下来会发生什么,要看技术人员的水平,但估计结果并不会太好。
在上一小节,我们创建了两个普通用户,这两个用户没什么本事,和默认的用户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
对于一个以提供非法文件服务的公司来说,最大的投入,就是存储。不过,这些存储都是廉价的,可以使用最初级的硬盘完成任务。
即使是这么便宜的硬盘,也要投入很多才行。这也很可惜,现在公司花了不少钱建设这个体系,还没开始盈利,就被全部端掉了。
知道这个结果的所有人,泪水掉了下来。这是一个三输的局面:
- 公司员工要进去蹲几年才能出来。
- 警察没收了一家亏本的公司,并没什么东西能够充公。
- 那就是你啊。
10 mkfs.* 9 dd 4 fdisk 5 mount 2 lsblk 3 df 3 swapon 2 swapoff 1 mkswap