磁盘分区文件系统挂载与swap分区
1.本文环境
OS: Centos 6.10, 虚拟机:vm15.5
2. 什么是硬盘分区(Partition)?
硬盘是计算机中存储信息的重要设备,计算机所运行的程序,所需要的数据,包括操作系统都在硬盘上,因此硬盘的重要可想而知,但硬盘往往不能直接使用,需要对硬盘进行分区。
分区,顾名思义,就是需要对硬盘逻辑上的切割分成一块块独立磁盘分区。把硬盘划分成数个分区,将不同类的目录与文件可以存储进不同的分区。
2.1 分区的好处?
利于对硬盘的管理
安全性增加,如果一块分区出现问题,不至于影响其他分区
对不同的分区可采用不同的文件系统
实现磁盘空间配额限制
隔离系统和程序
甚至安装多个操作系统
实现磁盘空间配额限制
优化读写性能
2.2 常见的硬盘分区方式?
发现很多人有一个误区,把文件系统当作分区,比如最常见的win下的ntfs,fat16,fat32,这些都不是分区,而是文件系统,此文下面为专门介绍。
常见的分区方式MBR(Master Boot Record),GPT(GUID Partition Table)这两种分区方式算是很常见,而APM,BSD 等分区很少见,有的已经被淘汰。
本文主要介绍MBR,与GTP分区。
3. MBR分区
MBR(Master Boot Record)主引导记录分区表,此分区最多只能有四个主分区,但是一般使用mbr分区不会使用四个主分区,大多都使用三个主分区加一个扩展分区,扩展分区不能直接存储数据,扩展分区相当于是硬盘分区的一种特定的标记。扩展分区下可以分逻辑分区,理论上逻辑分区可以分N个,这也是为什么你的电脑是MBR分区却可以有多个分区了。
MBR 有两种寻址方式,CHS 与 LBA
CHA : 采用24bit位寻址 最大寻址空间8GB 意味着最大只能对8GB硬盘进行分区,所以现在的MBR分区都是使用LBA
LBA : LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址,寻址有28位与48位最大对硬盘分区可达128GB与128PB
在我的系统中(CentOS6.10),查看分区的方式使用有很多方式,比如 parted /dev/sda print 在 7上(此处7代表centos7 下面同义) 使用的查看方法更多
1 [root@CentOS-10-64-2019-0921 ~]$parted /dev/sda print 2 Model: VMware, VMware Virtual S (scsi) 3 Disk /dev/sda: 215GB 4 Sector size (logical/physical): 512B/512B 5 Partition Table: msdos 6 7 Number Start End Size Type File system Flags 8 1 1049kB 1075MB 1074MB primary ext4 boot 9 2 1075MB 106GB 105GB primary ext4 10 3 106GB 158GB 52.4GB primary ext4 11 4 158GB 215GB 56.4GB extended 12 5 158GB 179GB 21.0GB logical ext4 13 6 179GB 181GB 2147MB logical linux-swap(v1)
请看上面的代码,Partition Table: msdos 这行 msdos代表的就是mbr分区,然后看第五列(type列) 三个主分区(primary)一个扩展分区(extended)然后两个逻辑分区(logical)这就是我系统上的分区
3.1 MBR原理简单的介绍
讲一下讲简单的MBR原理,太底层的东西我也不会,在MBR中分区表中,有512字节记录这主分区的信息,512字节前446个字节是主引导程序,主要的分区表存放在后64字节
最后两个字节是分区标志位 55 aa。主分区表的64个字节 分为4个16字节的分区表项,所代表四个分区,16个字节的第一个字节代表分区状态,80为活动位,00为非活动位,第二个字节为磁头号(head),磁头8位,第三个字节的低6位代码扇区号(sector),因此扇区是6位,第三个字节的高2位加上第四个字节是柱面号(cylinder)柱面占10位。第五个字节文件系统
第6,7,8个字节是本分区的结束标志,磁头号结束标志第6个字节,扇区结束号第7个字节的低6位,柱面结束号,第7个字节的高2位和第8个字节。
第9到12个字节代表本相对扇区数,
第13到16个字节分区项的总扇区数
3.2 MBR分区创建使用
在我的系统中对MBR系统的创建可使用parted gdisk fdisk 其中parted的操作是即时生效,不建议使用。
fdisk主要是针对MBR分区使用的,不能对GTP创建,不过7上可以使用。
fdisk doesn’t understand GUID Partition Table (GPT) and it is not designed for large partitions. In particular case use more advanced GNU parted(8)
下面使用fdisk进行分区创建
1.对硬盘进行分区,我以一个20g的硬盘为例
1 [root@CentOS-10-64-2019-0921 ~]$fdisk /dev/sdb #使用fdisk 对硬盘sdb分区,而不是对分区,分区
2
3 WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
4 #这个警告是我这个硬盘之前进行过GTP的分区,上面有残留的GTP分区信息,请忽略,看后面在CentOS6上fdisk不支持GTP分区
5
6 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
7 switch off the mode (command 'c') and change display units to
8 sectors (command 'u').
9
10 Command (m for help): m #使用m看帮助 ,
11 Command action
12 a toggle a bootable flag
13 b edit bsd disklabel
14 c toggle the dos compatibility flag
15 d delete a partition
16 l list known partition types
17 m print this menu
18 n add a new partition
19 o create a new empty DOS partition table
20 p print the partition table
21 q quit without saving changes
22 s create a new empty Sun disklabel
23 t change a partition's system id
24 u change display/entry units
25 v verify the partition table
26 w write table to disk and exit
27 x extra functionality (experts only)
28
29 Command (m for help): n # 新建分区
1 Command (m for help): n # 新建分区
2 Command action #选择分区类型 e 扩展 p 主分区
3 e extended
4 p primary partition (1-4)
5 p #我选的P 6 Partition number (1-4): 1 #分区编号1
7 First cylinder (1-2610, default 1): #开始柱面位置,6的分区以柱面划分 7的分区是以扇区划分
8 Using default value 1 #我回车直接默认
9 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +6G
#输入容量的话输入+号和单位,纯数字系统会作为柱面来识别
2 Command (m for help): p #打印硬盘信息 看 没有刚刚分好的区,这样误操作的话安全性很高
3
4 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
5 255 heads, 63 sectors/track, 2610 cylinders
6 Units = cylinders of 16065 * 512 = 8225280 bytes
7 Sector size (logical/physical): 512 bytes / 512 bytes
8 I/O size (minimum/optimal): 512 bytes / 512 bytes
9 Disk identifier: 0x00000000
10
11 Device Boot Start End Blocks Id System
12 /dev/sdb1 1 784 6297448+ 83 Linux
13
14 Command (m for help): n
15 Command action
16 e extended
17 p primary partition (1-4)
18 e #这里创建了一个扩展分区
19 Partition number (1-4): 2
20 First cylinder (785-2610, default 785):
21 Using default value 785
22 Last cylinder, +cylinders or +size{K,M,G} (785-2610, default 2610): +3G #3G的扩展分区
Command (m for help): w #w 保存刚刚分好的分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
这里成功了,有时候会报一个警告,内存和硬盘同步。使用 partx -a /dev/sda 对硬盘 就好了
1 [root@CentOS-10-64-2019-0921 ~]$lsblk -l /dev/sdb #查看刚刚的分区 2 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 3 sdb 8:16 0 20G 0 disk 4 sdb1 8:17 0 6G 0 part 5 sdb2 8:18 0 1K 0 part
看见没有,sdb2 居然只有1K??? 不对啊 我刚刚分的明明可是3G啊
之前就说了扩展分区不存数据,只是一个标志而已,这个1K保存着刚刚分区的信息,而扩展分区下的逻辑分区只能对这3G使用
1 [root@CentOS-10-64-2019-0921 ~]$fdisk -l /dev/sdb #这样查看
2
3 WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
4
5
6 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
7 255 heads, 63 sectors/track, 2610 cylinders
8 Units = cylinders of 16065 * 512 = 8225280 bytes
9 Sector size (logical/physical): 512 bytes / 512 bytes
10 I/O size (minimum/optimal): 512 bytes / 512 bytes
11 Disk identifier: 0x00000000
12
13 Device Boot Start End Blocks Id System
14 /dev/sdb1 1 784 6297448+ 83 Linux
15 /dev/sdb2 785 1177 3156772+ 5 Extended
4. GTP分区介绍
GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区, 使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block) 用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表 自动备份在头和尾两份,并有CRC校验位
4.1 GPT创建
在Centos6.10上没有gdisk命令,因此需要安装gdisk命令
1 yum install gdisk
GPT创建使用gdisk 与上面的fdisk使用方法基本一致
我先格掉刚刚的20G硬盘分区,还是对它进行GPT分区。
1 [root@CentOS-10-64-2019-0921 ~]$gdisk /dev/sdb
2 GPT fdisk (gdisk) version 0.8.10
3
4 Caution: invalid main GPT header, but valid backup; regenerating main header
5 from backup!
6
7 Caution! After loading partitions, the CRC doesn't check out!
8 Warning! Main partition table CRC mismatch! Loaded backup partition table
9 instead of main partition table!
10
11 Warning! One or more CRCs don't match. You should repair the disk!
12
13 Partition table scan:
14 MBR: not present
15 BSD: not present
16 APM: not present
17 GPT: damaged
18
19 Found invalid MBR and corrupt GPT. What do you want to do? (Using the
20 GPT MAY permit recovery of GPT data.)
21 1 - Use current GPT
22 2 - Create blank GPT
23
24 Your answer: 2 #由于这个硬盘还残留这之前的分区信息所以会与这样的显示,选择2 创建新的GPT分区
1 Command (? for help): ?
2 b back up GPT data to a file
3 c change a partition's name
4 d delete a partition
5 i show detailed information on a partition
6 l list known partition types
7 n add a new partition
8 o create a new empty GUID partition table (GPT)
9 p print the partition table
10 q quit without saving changes
11 r recovery and transformation options (experts only)
12 s sort partitions
13 t change a partition's type code
14 v verify disk
15 w write table to disk and exit
16 x extra functionality (experts only)
17 ? print this menu #基本用法与fdisk一样
18
19 Command (? for help):
1 Command (? for help): n # n 建分区
2 Partition number (1-128, default 1): #GPT没有扩展分区,创建的都是主分区
3 First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: #First sector 在6上 gdisk以扇区划分的
4 Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +10G # 10g的分区
5 Current type is 'Linux filesystem'
6 Hex code or GUID (L to show codes, Enter = 8300):
7 Changed type of partition to 'Linux filesystem'
8
9 Command (? for help):
1 Command (? for help): w # 跟fdisk 一样保存更改的分区
2
3 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
4 PARTITIONS!!
5
6 Do you want to proceed? (Y/N): y #确认继续
7 OK; writing new GUID partition table (GPT) to /dev/sdb.
8 The operation has completed successfully.
9 [root@CentOS-10-64-2019-0921 ~]$
看看分区表写入了没有
1 [root@CentOS-10-64-2019-0921 ~]$lsblk
2 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3 sr0 11:0 1 3.7G 0 rom
4 sda 8:0 0 200G 0 disk
5 ├─sda1 8:1 0 1G 0 part /boot
6 ├─sda2 8:2 0 97.7G 0 part /
7 ├─sda3 8:3 0 48.8G 0 part /data
8 ├─sda4 8:4 0 1K 0 part
9 ├─sda5 8:5 0 19.5G 0 part /IMP
10 └─sda6 8:6 0 2G 0 part [SWAP]
11 sdb 8:16 0 20G 0 disk
12 └─sdb1 8:17 0 10G 0 part
13 [root@CentOS-10-64-2019-0921 ~]$lsblk -l /dev/sdb1
14 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
15 sdb1 8:17 0 10G 0 part
分区表已经出来了 sdb1 10G
小结:对磁盘分区的提示信息看清楚,跟随提示来完成基本没问题,当然还可以使用脚本分区。
5.文件系统
5.1 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即 在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的 软件结 构称为文件管理系统,文件系统是对文件存储设备的空间进行组织和分配,负责文 件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立 文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
5.2 常见文件系统
ext系类,fat16,fat32,xfs,swap,光盘,ntfs,ffs,ufs等,raw是未经处理或者未经格式化产生的文件系统 。
在我的系统中查看系统支持的文件系统
1 cat /proc/filesystems
1 [root@CentOS-10-64-2019-0921 ~]$ls /lib/modules/2.6.32-754.el6.x86_64/kernel/fs/ 2 autofs4 cachefiles configfs dlm exportfs ext3 fat fuse jbd jffs2 mbcache.ko nfs_common nls ubifs xfs 3 btrfs cifs cramfs ecryptfs ext2 ext4 fscache gfs2 jbd2 lockd nfs nfsd squashfs udf 4 [root@CentOS-10-64-2019-0921 ~]$
5.3 文件系统创建
创建文件系统使用mkfs
1 [root@CentOS-10-64-2019-0921 ~]$mkfs. 2 mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat 3 [root@CentOS-10-64-2019-0921 ~]$mkfs.
当然一下命令也是可以的
1 mkdosfs [mkfs] (8) - create an MS-DOS file system under Linux 2 mke2fs [mkfs] (8) - create an ext2/ext3/ext4 filesystem 3 mkfs (8) - build a Linux file system
下面来使用mkfs.ext4 创建ext4文件系统 XFS文件系统 CentOS 6 好像不支持
1 [root@CentOS-10-64-2019-0921 ~]$mkfs.ext4 /dev/sdb1 2 mke2fs 1.41.12 (17-May-2010) 3 Filesystem label= 4 OS type: Linux 5 Block size=4096 (log=2) 6 Fragment size=4096 (log=2) 7 Stride=0 blocks, Stripe width=0 blocks 8 655360 inodes, 2621440 blocks 9 131072 blocks (5.00%) reserved for the super user 10 First data block=0 11 Maximum filesystem blocks=2684354560 12 80 block groups 13 32768 blocks per group, 32768 fragments per group 14 8192 inodes per group 15 Superblock backups stored on blocks: 16 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 17 18 Writing inode tables: done 19 Creating journal (32768 blocks): done 20 Writing superblocks and filesystem accounting information: done 21 22 This filesystem will be automatically checked every 34 mounts or 23 180 days, whichever comes first. Use tune2fs -c or -i to override. 24 [root@CentOS-10-64-2019-0921 ~]$
查看文件系统 blkid
1 [root@CentOS-10-64-2019-0921 ~]$blkid 2 /dev/sda1: UUID="bd77c2f9-ed4a-46ec-972b-9c905fa97c8d" TYPE="ext4" 3 /dev/sda2: UUID="d18fb14c-1a2f-4925-b68a-41988aca5c4c" TYPE="ext4" 4 /dev/sda3: UUID="f91bf801-129a-4679-96d4-0567b5102ffc" TYPE="ext4" 5 /dev/sda5: UUID="ece4577f-d929-45dd-81a9-59f5c7e6e625" TYPE="ext4" 6 /dev/sda6: UUID="9d141267-bb3b-47d3-b3bb-6d22eba6d85d" TYPE="swap" 7 /dev/sdb1: UUID="ef04113b-fb79-4a8f-a21a-b09963266399" TYPE="ext4" 8 [root@CentOS-10-64-2019-0921 ~]$
管理文件系统的命令 tune2fs
1 [root@CentOS-10-64-2019-0921 ~]$tune2fs -l /dev/sdb1 2 tune2fs 1.41.12 (17-May-2010) 3 Filesystem volume name: <none> 4 Last mounted on: <not available> 5 Filesystem UUID: ef04113b-fb79-4a8f-a21a-b09963266399 6 Filesystem magic number: 0xEF53 7 Filesystem revision #: 1 (dynamic) 8 Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize 9 Filesystem flags: signed_directory_hash 10 Default mount options: (none) 11 Filesystem state: clean 12 Errors behavior: Continue 13 Filesystem OS type: Linux 14 Inode count: 655360 15 Block count: 2621440 16 Reserved block count: 131072 17 Free blocks: 2541777 18 Free inodes: 655349 19 First block: 0 20 Block size: 4096 21 Fragment size: 4096 22 Reserved GDT blocks: 639 23 Blocks per group: 32768 24 Fragments per group: 32768 25 Inodes per group: 8192 26 Inode blocks per group: 512 27 Flex block group size: 16 28 Filesystem created: Thu Oct 17 02:42:18 2019 29 Last mount time: n/a 30 Last write time: Thu Oct 17 02:42:20 2019 31 Mount count: 0 32 Maximum mount count: 34 33 Last checked: Thu Oct 17 02:42:18 2019 34 Check interval: 15552000 (6 months) 35 Next check after: Tue Apr 14 02:42:18 2020 36 Lifetime writes: 291 MB 37 Reserved blocks uid: 0 (user root) 38 Reserved blocks gid: 0 (group root) 39 First inode: 11 40 Inode size: 256 41 Required extra isize: 28 42 Desired extra isize: 28 43 Journal inode: 8 44 Default directory hash: half_md4 45 Directory Hash Seed: 4fe081ea-af2b-4d07-ab0a-5feabef490e2 46 Journal backup: inode blocks 47 [root@CentOS-10-64-2019-0921 ~]$
1 [root@CentOS-10-64-2019-0921 ~]$tune2fs --help # tune2fs 帮助查看 还可以使用dumpe2fs 查看块组的信息
2 tune2fs 1.41.12 (17-May-2010)
3 tune2fs: invalid option -- '-'
4 Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g group]
5 [-i interval[d|m|w]] [-j] [-J journal_options] [-l]
6 [-m reserved_blocks_percent] [-o [^]mount_options[,...]]
7 [-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label]
8 [-M last_mounted_dir] [-O [^]feature[,...]]
9 [-E extended-option[,...]] [-T last_check_time] [-U UUID]
10 [ -I new_inode_size ] device
11 [root@CentOS-10-64-2019-0921 ~]$
小结:创建文件分区并不复杂,使用相应的工具可以好了。在Centos6 上手动建立的文件系统没有acl权限需要自己加上
1 [root@CentOS-10-64-2019-0921 /mnt]$touch acl
2 [root@CentOS-10-64-2019-0921 /mnt]$setfacl -m u:example:rw acl
3 setfacl: acl: Operation not supported
4 [root@CentOS-10-64-2019-0921 /mnt]$
6.swap分区
6.1 什么是swap分区
严格来说swap是一种文件系统。先创建swap分区,然后为swap分区创建swap文件系统。
swap交换分区是系统RAM的补充,即交换区,系统在物理运行内存不够时,没有足够的 RAM 保存系统处理的数据时会将数据写入 swap 分区 与swap进行交换,swap分区可以当作虚拟内存。.
6.2 查看swap分区
1 [root@CentOS-10-64-2019-0921 /mnt]$swapon -s
2 Filename Type Size Used Priority
3 /dev/sda6 partition 2097148 0 -1
4 [root@CentOS-10-64-2019-0921 /mnt]$
6.3 创建swap分区,swap分区可以使用单独的swap,也可使用一个文件作为swap。当然使用单独的分区效果更好。分别介绍
6.3.1 使用独立分区作为swap
我在上面对磁盘分区使用过fdisk,gdisk,那么创建swap分区时也可以任用其一,两个命令的基本使用方法基本一样。
因为gdisk在CentOS6上是需要安装的,我这里就使用fdisk了
1 [root@CentOS-10-64-2019-0921 /]$fdisk /dev/sdb #使用fdisk 对硬盘分区 2 3 WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted. 4 5 6 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to 7 switch off the mode (command 'c') and change display units to 8 sectors (command 'u'). 9 10 Command (m for help): n #n 跟前面的一样 11 Command action 12 e extended 13 p primary partition (1-4) 14 p 15 Partition number (1-4): 1 16 First cylinder (1-2610, default 1): 17 Using default value 1 18 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +8g 19 Unsupported suffix: 'g'. #这里小写g还不支持而报错,7上我记得小写是可以的 20 Supported: 10^N: KB (KiloByte), MB (MegaByte), GB (GigaByte) 21 2^N: K (KibiByte), M (MebiByte), G (GibiByte) 22 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +8G #创建8G的分区 23 24 Command (m for help): p # p 是打印分区信息 25 26 Disk /dev/sdb: 21.5 GB, 21474836480 bytes 27 255 heads, 63 sectors/track, 2610 cylinders 28 Units = cylinders of 16065 * 512 = 8225280 bytes 29 Sector size (logical/physical): 512 bytes / 512 bytes 30 I/O size (minimum/optimal): 512 bytes / 512 bytes 31 Disk identifier: 0x00000000 32 33 Device Boot Start End Blocks Id System 34 /dev/sdb1 1 1045 8393931 83 Linux 35 36 Command (m for help): t #因为swap分区需要换分区号 输入t 37 Selected partition 1 38 Hex code (type L to list codes): 82 #swap的分区号是82 当然果然不知道可以使用L查看 39 Changed system type of partition 1 to 82 (Linux swap / Solaris) 40 #这里已经更改好了 41 Command (m for help): w #w保存更改
以上的对swap分区的创建,然后需要对swap进行创建swap文件系统
1 [root@CentOS-10-64-2019-0921 /]$lsblk #查看创建好的分区
2 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3 sr0 11:0 1 3.7G 0 rom
4 sda 8:0 0 200G 0 disk
5 ├─sda1 8:1 0 1G 0 part /boot
6 ├─sda2 8:2 0 97.7G 0 part /
7 ├─sda3 8:3 0 48.8G 0 part /data
8 ├─sda4 8:4 0 1K 0 part
9 ├─sda5 8:5 0 19.5G 0 part /IMP
10 └─sda6 8:6 0 2G 0 part [SWAP]
11 sdb 8:16 0 20G 0 disk
12 └─sdb1 8:17 0 8G 0 part
13 [root@CentOS-10-64-2019-0921 /]$mkswap /dev/sdb1 #创建swap
14 Setting up swapspace version 1, size = 8393924 KiB
15 no label, UUID=2e2c378c-0966-42dc-89da-488602e89531
先看看我系统的swap
1 [root@CentOS-10-64-2019-0921 /]$free -h
2 total used free shared buffers cached
3 Mem: 979M 393M 586M 260K 93M 129M
4 -/+ buffers/cache: 170M 809M
5 Swap: 2.0G 0B 2.0G
使用swap /dev/sdb1 命令挂载swap
1 [root@CentOS-10-64-2019-0921 /]$swapon /dev/sdb1
2 [root@CentOS-10-64-2019-0921 /]$free -h
3 total used free shared buffers cached
4 Mem: 979M 398M 580M 260K 94M 129M
5 -/+ buffers/cache: 175M 803M
6 Swap: 10G 0B 10G #现在的swap已经挂载好了 一共10g
7 [root@CentOS-10-64-2019-0921 /]$
6.4 使用文件创建swap
1 [root@CentOS-10-64-2019-0921 /data]$dd if=/dev/zero of=/data/swap bs=10M count=500 #使用dd创建一个5G的文件
2 500+0 records in
3 500+0 records out
4 5242880000 bytes (5.2 GB) copied, 17.67 s, 297 MB/s
5 [root@CentOS-10-64-2019-0921 /data]$ll swap
6 -rw-r--r--. 1 root root 5242880000 Oct 17 04:40 swap
7 [root@CentOS-10-64-2019-0921 /data]$ll -h swap
8 -rw-r--r--. 1 root root 4.9G Oct 17 04:40 swap
9 [root@CentOS-10-64-2019-0921 /data]$
1 [root@CentOS-10-64-2019-0921 /data]$mkswap /data/swap #对文件创建swap系统
2 mkswap: /data/swap: warning: don't erase bootbits sectors
3 on whole disk. Use -f to force.
4 Setting up swapspace version 1, size = 5119996 KiB
5 no label, UUID=ae10e648-2e0a-40b1-9d38-a8c7c2083503
6 [root@CentOS-10-64-2019-0921 /data]$blkid /data/swap #查看/data/swap 已经是swap了
7 /data/swap: UUID="ae10e648-2e0a-40b1-9d38-a8c7c2083503" TYPE="swap"
然后跟上面一样挂载swap 使用swapon /data/swap
1 [root@CentOS-10-64-2019-0921 /data]$free -h
2 total used free shared buffers cached
3 Mem: 979M 900M 78M 260K 69M 660M
4 -/+ buffers/cache: 170M 808M
5 Swap: 10G 0B 10G #现在是swap是10G
6 [root@CentOS-10-64-2019-0921 /data]$
挂载/data/swapon
1 [root@CentOS-10-64-2019-0921 /data]$free -h
2 total used free shared buffers cached
3 Mem: 979M 905M 74M 260K 69M 661M
4 -/+ buffers/cache: 174M 805M
5 Swap: 14G 0B 14G
已经出来了
总结:在分区的创建与文件系统的创建时,注意分区磁盘与分区,对每一步的操作要确认没有问题,看看对硬盘更改是否同步到内存。不同步的话需要解决。
在使用挂载的时候,mount的挂载会下次失效,因此持久挂载需要写入/etc/fstab文件下。对照系统分区时的格式写就好了,主要注意的是用文件当作swap时持久挂载最好是写文件名,不要写uuid,因为文件太多。
另,文件可以挂载到文件目录,先把文件使用mkfs命令把文件做成一个文件系统,然后挂载就可以了。系统可以识别为loop设备,甚至当作优盘用。
但是 在Centos 6中挂载文件到文件需要先配对loop 设备,7不用匹配
1 [root@CentOS-10-64-2019-0921 /data]$dd if=/dev/zero of=/data/file bs=10M count=10 #创建文件 2 10+0 records in 3 10+0 records out 4 104857600 bytes (105 MB) copied, 0.271914 s, 386 MB/s 5 [root@CentOS-10-64-2019-0921 /data]$ll file 6 -rw-r--r--. 1 root root 104857600 Oct 17 05:09 file 7 [root@CentOS-10-64-2019-0921 /data]$mkfs.ext4 /data/f 8 f1.txt f2.txt file 9 [root@CentOS-10-64-2019-0921 /data]$mkfs.ext4 /data/file #对文件创建ext4文件系统 10 mke2fs 1.41.12 (17-May-2010) 11 /data/file is not a block special device. 12 Proceed anyway? (y,n) y #是否继续 Y继续 13 Filesystem label= 14 OS type: Linux 15 Block size=1024 (log=0) 16 Fragment size=1024 (log=0) 17 Stride=0 blocks, Stripe width=0 blocks 18 25688 inodes, 102400 blocks 19 5120 blocks (5.00%) reserved for the super user 20 First data block=1 21 Maximum filesystem blocks=67371008 22 13 block groups 23 8192 blocks per group, 8192 fragments per group 24 1976 inodes per group 25 Superblock backups stored on blocks: 26 8193, 24577, 40961, 57345, 73729 27 28 Writing inode tables: done 29 Creating journal (4096 blocks): done 30 Writing superblocks and filesystem accounting information: done 31 32 This filesystem will be automatically checked every 36 mounts or 33 180 days, whichever comes first. Use tune2fs -c or -i to override. 34 [root@CentOS-10-64-2019-0921 /data]$
接下如果直接挂载file文件会报错 如下
1 [root@CentOS-10-64-2019-0921 /data]$mount /data/file /mnt
2 mount: /data/file is not a block device (maybe try `-o loop'?) #可以使用 -o loop 我下面的代码使用配对的方式
3 [root@CentOS-10-64-2019-0921 /data]$
[root@CentOS-10-64-2019-0921 ~]$losetup /dev/loop0 /data/file #先将文件与loop设备关联
[root@CentOS-10-64-2019-0921 ~]$mount /dev/loop0 /mnt #然后把loop设备挂载到文件目录上
[root@CentOS-10-64-2019-0921 ~]$ #然后可以使用文件