###磁盘空间之浪费问题
一个 block 只能放置一个文件, 因此太多小文 件将会浪费非常多的磁盘容量。但你有没有注意到,整个文件系统中包括 superblock, inode table 与其他中介数据等其实都会浪费磁盘容量。所以当我们在 /dev/vda4, /dev/vda5 创建 起 xfs/ext4 文件系统时, 一挂载就立刻有很多容量被用掉了。
当你使用 ls -l 去查询某个目录下的数据时,第一行都会出现 一个“total”的字样! 那是啥东西?其实那就是该目录下的所有数据所耗用的实际 block 数量 * block 大小的值。
###利用GUN的parted进行分区行为(Optional)
parted 可以直接在一行命令行就完成分区,是一个非常好用的指令!它常用的语法如下:
[root@study ~]# parted [设备] [指令 [参数]]
选项与参数:
指令功能:
新增分区:mkpart [primary|logical|extended] [ext4|vfat|xfs]
显示分区:print
删除分区:rm [partition]
范例一:以 parted 列出目前本机的分区表数据
[root@study ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk) <==磁盘接口与型号
Disk /dev/vda: 42.9GB <==磁盘文件名与容量
Sector size (logical/physical): 512B/512B <==每个扇区的大小
Partition Table: gpt <==是 GPT 还是 MBR 分区
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 33.3GB 32.2GB lvm
4 33.3GB 34.4GB 1074MB xfs Linux filesystem
5 34.4GB 35.4GB 1074MB ext4 Microsoft basic data
6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
上述的分区表示意拆成六部分来说明:
- Number : 这个就是分区的号码啦!举例来说,1号代表的是/dev/vda1的意思;
- Start : 分区的起始位置在这颗磁盘的多少MB处?有趣吧!他以容量作为单位喔! 3. End:此分区的结束位置在这颗磁盘的多少MB处?
- Size : 由上述两者的分析,得到这个分区有多少容量;
- Filesystem : 分析可能的文件系统类型为何的意思!
- Name : 就如同gdisk的SystemID之意。
不过 start 与 end 的单位竟然不一致!如果你想要固定单位,例如都用 MB 显示的话, 可以这样做:
[root@study ~]# parted /dev/vda unit mb print
如果你想要将原本的MBR改成GPT分区表,或原本的GPT分区表改成MBR分区表,也能使用parted!但是请不要使用vda来测试!因为分区表格式不能转换,因为进行下面的测试后,在该磁盘的系统应该是会损坏的。所以用一颗没有使用U盘来测试。
范例二 : 将/dev/sda这个原本的MBR分区表变成GPT分区表(危险!危险!勿乱搞!无法复原)
[root@study ~]# parted /dev/sda print
Model: ATA QEMU HARDDISK (scsi)
Disk /dev/sda: 2148MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos # 确实显示的是 MBR 的 msdos 格式喔!
[root@study ~]# parted /dev/sda mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
[root@study ~]# parted /dev/sda print
# 你应该就会看到变成 gpt 的模样!只是...后续的分区就全部都死掉了!
接下来我们尝试来创建一个全新的分区吧,再次的创建一个512MB的分区来格式化为vfat,且挂载于/data/win。
范例三 : 创建一个约为512MB容量的分区
[root@study ~]# parted /dev/vda print
.....(前面省略).....
Number Start End Size File system Name Flags
.....(中间省略).....
6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap # 要先找出来下一个分区的起始点!
[root@study ~]# parted /dev/vda mkpart primary fat32 36.0GB 36.5GB
# 由于新的分区的起始点在前一个分区的后面,所以当然要先找出前面那个分区的 End 位置!
# 然后再请参考 mkpart 的指令功能,就能够处理好相关的动作!
[root@study ~]# parted /dev/vda print
.....(前面省略).....
Number Start End Size File system Name Flags
7 36.0GB 36.5GB 522MB primary
[root@study ~]# partprobe
[root@study ~]# lsblk /dev/vda7
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda7 252:7 0 498M 0 part # 要确定它是真的存在才行!
[root@study ~]# mkfs -t vfat /dev/vda7
[root@study ~]# blkid /dev/vda7
/dev/vda7: SEC_TYPE="msdos" UUID="6032-BF38" TYPE="vfat"
[root@study ~]# nano /etc/fstab
UUID="6032-BF38" /data/win vfat defaults 0 0
[root@study ~]# mkdir /data/win
[root@study ~]# mount -a
[root@study ~]# df /data/win
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda7 509672 0 509672 0% /data/win