首先在电脑的主板上插入一块你想添加的磁盘,后面所涉及的知识请继续往下读。
fdisk命令用于管理磁盘分区,格式为:“fdisk [磁盘名称]”。
管理Linux系统中的硬盘设备最常用的方法就当属是用fdisk命令了,这条命令提供了添加、删除、转换分区等等功能于一身的“一站式分区服务”,不过这条命令的参数是交互式的,而不是像咱们以前直接写到命令后面的参数一样,因此在管理硬盘设备的时候特别方便,可以根据需求动态的调整。
参数 | 作用 |
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区表信息 |
w | 保存并退出 |
q | 不保存直接退出 |
第1步:首先使用fdisk命令尝试管理/dev/sdb硬盘设备,看到提示信息后输入参数p来查看硬盘设备内已有的分区信息,这其中包括了硬盘的容量大小,扇区个数等等信息:
[root@linuxprobe ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). 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 Building a new DOS disklabel with disk identifier 0x47d24a34. Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x47d24a34 Device Boot Start End Blocks Id System
第2步:输入参数n来尝试新建分区信息,系统会要求选择继续输入参数p来创建主分区,或者输入参数e来创建扩展分区,因此输入参数p来创建一个主分区:
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p
第3步:确认创建一个主分区后,系统要求您先输入分区的编号,既然已经知道主分区的编号范围是1-4,因此默认输入1就可以了,接下来系统会提示定义下起始的扇区,这一项默认不需要改动,系统会自动计算出最靠前空闲的扇区位置,咱们敲击一下回车就可以,最后系统会要求定义分区的结束扇区位置,这其实就是想要去定义下整个分区的大小是多少,但其实不用去算扇区的个数,只需要输入+2G即可创建出一个容量为2G的硬盘分区。
Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048):此处敲击回车 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G Partition 1 of type Linux and of size 2 GiB is set
第4步:再次使用参数p来查看下硬盘设备中的分区信息,果然就能看到一个名称为/dev/sdb1,起始扇区为2048,结束扇区是4196351的分区啦,这时候千万不要直接关闭窗口,而应该敲击参数w后回车,这样分区信息才是真正的写入成功啦。
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x47d24a34
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
第5步:当做完上面所说的所有步骤后,Linux系统会自动把这个硬盘分区抽象成/dev/sdb1这个设备文件,可以用file命令来看到这个文件的属性,但是刘遄老师在讲课和工作中发现有些时候系统并没有自动的把分区信息同步给Linux内核,而且这种情况似乎还比较常见,但不能算作是严重的bug,因为如果设备信息没有被抽象为文件,也可以输入partprobe命令来手动的同步信息到内核,而且一般推荐敲击两次会效果更佳,但一旦遇到连这个命令都不能解决的时候,那么就重启计算机吧,这个杀手锏百试百灵,一定会有用的。
[root@linuxprobe ]# file /dev/sdb1 /dev/sdb1: cannot open (No such file or directory) [root@linuxprobe ]# partprobe [root@linuxprobe ]# partprobe [root@linuxprobe ]# file /dev/sdb1 /dev/sdb1: block special
Linux系统对于没有被格式化的存储设备是不知道怎么样写入数据的,因此当咱们对存储设备分区后需要再进行一次格式化操作,很类似于平时给白纸划上横线,这样再写字的时候就会十分规整有条理啦,在Linux系统中用于格式化的是mkfs命令,这条命令很有意思,因为在Shell终端中输入mkfs后再敲击两下Tab键补齐命令就会有这样的效果:
[root@linuxprobe ~]# mkfs mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
对!这个mkfs命令作为一款格式化的工具非常贴心,它把常用的文件系统名称用后缀的方式保存成了文件,使用方法非常的简单:"mkfs.文件类型名称",例如要格式分区为xfs文件系统,则命令应为"mkfs.xfs/dev/sdb1"。
[root@linuxprobe ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=524288, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
终于把存储设备给分区、格式化好了,接下来就是要来挂载并使用啦。这些步骤也非常的简单,首先是创建一个用于挂载设备的挂载点目录,然后使用mount命令将存储设备与挂载点进行关联,最后还可以用df -h命令来查看下挂载状态和硬盘使用量信息。
[root@linuxprobe ~]# mkdir /newFS [root@linuxprobe ~]# mount /dev/sdb1 /newFS/ [root@linuxprobe ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.5G 15G 20% / devtmpfs 905M 0 905M 0% /dev tmpfs 914M 140K 914M 1% /dev/shm tmpfs 914M 8.8M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sr0 3.5G 3.5G 0 100% /media/cdrom /dev/sda1 497M 119M 379M 24% /boot /dev/sdb1 2.0G 33M 2.0G 2% /newFS
du命令用于查看文件的数据占用量,格式为:“ du [选项] [文件]”。
既然存储设备已经顺利的挂载完毕,就可以来尝试通过挂载点目录往存储设备中写入文件了,顺便再给同学们介绍一下用于查看文件数据占用量的du命令,简单来说就是看一个或多个文件占用了多大的硬盘空间,还可以用du -sh /*命令来查看在Linux系统根目录下所有一级目录分别占用的空间大小,那么比如可以先从某些目录中复制过来一批文件,然后查看下这些文件总共占用了多大的容量:
[root@linuxprobe ~]# cp -rf /etc/* /newFS/ [root@linuxprobe ~]# ls /newFS/ abrt hosts pulse adjtime hosts.allow purple aliases hosts.deny qemu-ga aliases.db hp qemu-kvm alsa idmapd.conf radvd.conf alternatives init.d rc0.d anacrontab inittab rc1.d ………………省略部分输入信息……………… [root@linuxprobe ~]# du -sh /newFS/ 33M /newFS/
细心的同学一定想到刚刚讲过使用mount命令挂载的设备文件会在下一次重启的时候失效,因此如果您还想让这个设备文件的挂载永久的有效下去,需要把挂载的信息项目写入到配置文件才可以:
[root@linuxprobe ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 4 19:26:23 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/rhel-root / xfs defaults 1 1 UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 /dev/sdb1 /newFS xfs defaults 0 0
SWAP交换分区是一种类似于Windows系统虚拟内存的功能,通过把一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况。但由于SWAP毕竟是用硬盘资源虚拟的,速度上比真实物理内存要慢很多,所以一般只有当真实物理内存耗尽时才会调用SWAP交换分区,把内存中暂时不常用的数据临时存放到硬盘中,腾出内存空间让更活跃的程序服务来使用。
第1步:SWAP交换分区的创建过程非常类似于上一个小节所讲到的分区设备挂载使用的方法,首先第一步就是再进行对/dev/sdb存储设备分区操作,取出一个大小为5GB的主存储分区然后保存退出即可:
[root@linuxprobe ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). 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 Building a new DOS disklabel with disk identifier 0xb3d27ce1. Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extendedSelect (default p): p Partition number (2-4, default 2): First sector (4196352-41943039, default 4196352): 此处敲击回车 Using default value 4196352 Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +5G Partition 2 of type Linux and of size 5 GiB is set Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xb0ced57f Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux /dev/sdb2 4196352 14682111 5242880 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
第2步:把新建的存储分区使用SWAP交换分区专用的格式化mkswap命令进行格式化操作:
[root@linuxprobe ~]# mkswap /dev/sdb2 Setting up swapspace version 1, size = 5242876 KiB no label, UUID=2972f9cb-17f0-4113-84c6-c64b97c40c75
第3步:接下来使用swapon命令把准备好的SWAP交换分区设备正式的挂载到系统中,并可以使用free -m 命令来看到交换分区大小的变化(由2047M提升至了7167M):
[root@linuxprobe ~]# free -m total used free shared buffers cached Mem: 1483 782 701 9 0 254 -/+ buffers/cache: 526 957 Swap: 2047 0 2047 [root@linuxprobe ~]# swapon /dev/sdb2 [root@linuxprobe ~]# free -m total used free shared buffers cached Mem: 1483 785 697 9 0 254 -/+ buffers/cache: 530 953 Swap: 7167 0 7167
第4步:对了~为了能够让新的SWAP交换分区设备在重启后依然生效,需要按照下面的格式写入到配置文件中,记得保存哦~
[root@linuxprobe ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 4 19:26:23 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/rhel-root / xfs defaults 1 1 UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 /dev/sdb1 /newFS xfs defaults 0 0 /dev/sdb2 swap swap defaults 0 0