linux-磁盘管理小结这篇博文主要总结了Linux磁盘的一些操作,主要是硬盘的加载,分区(MBR分区和GPT分区),分区的挂载,以及swap分区的加载设置。
基础命令
df查看磁盘分区使用状况-l //仅显示本地磁盘(默认)-a //显示所有文件系统的磁盘使用情况,包含比如/PRoc/-h //以1024进制计算最合适的单位显示磁盘容量-H //以1000进制计算最合适的单位显示磁盘容量-t //显示指定类型文件系统的磁盘分区-T //显示磁盘分区类型-x //不显示指定类型文件系统的磁盘分区du统计磁盘上的文件大小-b //以byte为单位统计文件-k //以KB为单位统计文件-m //以MB为单位统计文件-h //以1024进制计算最合适的单位显示磁盘容量-H //以1000进制计算最合适的单位显示磁盘容量-s //统计指定目标常用命令df -lhTdf -lhT -t ext4(分区类型)df -lhT -x ext4du -s [指定目录]du -sb *.zip //模糊匹配du -sm *.zipdu -sh *.zip回顾磁盘分区时的注意事项:
主分区和扩展分区总数不能超过4个。扩展分区最多只能有一个扩展分区不能直接存取数据小知识:Linux系统中硬件设备都是以文件的形式存在于根目录下的Dev目录下。硬件设备都是有Linux系统自动识别的。添加的新硬盘,必须进行分区、格式化、挂载后才能使用。MBR分区模式:主分区不超过4个,单个分区容量最大为2TBGPT分区模式:主分区个数“几乎”没有限制,单个分区容量“几乎”没有限制。GPT分区中,最多可以支持128个主分区,且每个分区的大小突破了MBR分区的2TB的限制,最大为18EB=18432PB=18874368TB。缺点是GPT的主分区中,不适合安装X86架构的系统。当硬盘空间消耗殆尽时怎么办?
比较好的做法应该是:在保留原硬盘的基础上,给服务器添加新的硬盘。
为虚拟机添加硬盘
将虚拟机关机(poweroff)。(当然,也有服务器的主板支持热插拔的。可以带电连接新硬盘。)虚拟机设置->下面的“添加”->类型选择“硬盘”->下一步->选择硬盘类型(默认的(SCSI)就好)->创建一个新的虚拟机硬盘(下一步)->设置磁盘最大值;(没什么特殊要求,基本都是下一步,最后一步OK)。重启Linux系统,使用fdisk -l//显示每个硬盘的分区列表(新添加的硬盘是没有分区表的)可以看到Disk /dev/sdb:和Disk /dev/sda:2块硬盘,以及sda的分区表,没有sdb的分区表。先使用MBR分区模式为sdb分区。[root@joe dev]#
fdisk /dev/sdb //进入分区模式Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x9ce83f46.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').Command (m for help):
m //查看帮助Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition //删除一个分区 l list known partition types m print this menu n add a new partition //添加新的分区 o create a new empty DOS partition table p print the partition table //打印分区表 q quit without saving changes //取消保存并退出 s create a new empty Sun disklabel t change a partition's system id //修改分区的系统ID u change display/entry units v verify the partition table w write table to disk and exit //写分区表并退出 x extra functionality (experts only)Command (m for help): nCommand action e extended //扩展分区 p primary partition (1-4)//主分区pPartition number (1-4):
1First cylinder (1-2610, default 1): //扇区的范围(1-2610),默认开始1,直接回车则使用默认数值Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 500MCommand (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux //分配好的主分区1//添加第二个分区Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): Value out of range.Partition number (1-4): 2First cylinder (501-2610, default 501): Using default value 501Last cylinder, +cylinders or +size{K,M,G} (501-2610, default 2610): 500MValue out of range.Last cylinder, +cylinders or +size{K,M,G} (501-2610, default 2610): Using default value 2610Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 2610 16948575 83 Linux //第二个分区//由于分配不合适主观意愿,想删除分区Command (m for help): dPartition number (1-4):
2 //分区编号Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux //第二个分区已经删除Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4):
2First cylinder (501-2610, default 501): Using default value 501Last cylinder, +cylinders or +size{K,M,G} (501-2610, default 2610): 1000Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 1000 4016250 83 LinuxCommand (m for help): nCommand action e extended p primary partition (1-4)e //建立扩展分区Partition number (1-4):
3First cylinder (1001-2610, default 1001): Using default value 1001Last cylinder, +cylinders or +size{K,M,G} (1001-2610, default 2610): Using default value 2610Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 1000 4016250 83 Linux/dev/sdb3 1001 2610 12932325 5 ExtendedCommand (m for help): nCommand action l logical (
5 or over) //此时扩展分区e没有了,说明MBR只能有一个扩展分区,接下来是逻辑分区 p primary partition (1-4)lFirst cylinder (1001-2610, default 1001): Using default value 1001Last cylinder, +cylinders or +size{K,M,G} (1001-2610, default 2610): 1500Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 1000 4016250 83 Linux/dev/sdb3 1001 2610 12932325 5 Extended/dev/sdb5 1001 1500 4016218+ 83 Linux //逻辑分区是从5开始的,1-4只能是主分区和扩展分区的编号Command (m for help): nCommand action l logical (5 or over) p primary partition (1-4)lFirst cylinder (1501-2610, default 1501): Using default value 1501Last cylinder, +cylinders or +size{K,M,G} (1501-2610, default 2610): Using default value 2610Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 1000 4016250 83 Linux/dev/sdb3 1001 2610 12932325 5 Extended/dev/sdb5 1001 1500 4016218+ 83 Linux/dev/sdb6 1501 2610 8916043+ 83 LinuxCommand (m for help):
w //保存写The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@joe dev]# fdisk
-lDisk
/dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x9ce83f46 Device Boot Start End Blocks Id System/dev/sdb1 1 500 4016218+ 83 Linux/dev/sdb2 501 1000 4016250 83 Linux/dev/sdb3 1001 2610 12932325 5 Extended/dev/sdb5 1001 1500 4016218+ 83 Linux/dev/sdb6 1501 2610 8916043+ 83 LinuxDisk
/dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000a030a Device Boot Start End Blocks Id System/dev/sda1 * 1 26 204800 83 LinuxPartition 1 does not end on cylinder boundary./dev/sda2 26 281 2048000 82 Linux swap / SolarisPartition 2 does not end on cylinder boundary./dev/sda3 281 536 2048000 83 LinuxPartition 3 does not end on cylinder boundary./dev/sda4 536 2611 16669696 5 Extended/dev/sda5 536 2611 16668672 83 Linux
使用GPT分区模式分区(同时GPT的分区工具parted也可以MBR分区)[root@joe dev]# partedGNU Parted 2.1使用
/dev/sda //注意正在使用的是sdaWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) print all Model: VMware, VMware Virtual S (scsi)Disk /dev/sda: 21.5GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system 标志 1 1049kB 211MB 210MB primary ext4 启动 2 211MB 2308MB 2097MB primary linux-swap(v1) 3 2308MB 4405MB 2097MB primary ext4 4 4405MB 21.5GB 17.1GB extended 5 4406MB 21.5GB 17.1GB logical ext4Model: VMware, VMware Virtual S (scsi)Disk
/dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: msdos //sdb的应该是我们需要的gptNumber Start End Size Type File system 标志警告: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。错误: /dev/sr0: unrecognised disk label (parted)
select /dev/sdb //选择sdb 使用 /dev/sdb(parted) mkpart //如果不进行gpt的选择设置,直接mkpart那么我们还是使用的MBR模式 分区类型? primary/主分区/extended/扩展分区? primary 文件系统类型? [ext2]? ^Z--------------------------------------------------------------------------------------------------(parted)
select /dev/sdb 使用 /dev/sdb(parted) mklabel gpt 警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do youwant to continue?是/Yes/否/No? yes(parted) print all Model: VMware, VMware Virtual S (scsi)Disk
/dev/sda: 21.5GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system 标志 1 1049kB 211MB 210MB primary ext4 启动 2 211MB 2308MB 2097MB primary linux-swap(v1) 3 2308MB 4405MB 2097MB primary ext4 4 4405MB 21.5GB 17.1GB extended 5 4406MB 21.5GB 17.1GB logical ext4Model: VMware, VMware Virtual S (scsi)Disk
/dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志警告: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。错误: /dev/sr0: unrecognised disk label (parted) mkpart 分区名称? []? test1 文件系统类型? [ext2]? ext4起始点?
1 //以1开始,默认单位是M unit GB 指定为GB为单位 结束点? 1000M (parted) print Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志 1 1049kB 1000MB 999MB test1(parted)
rm 1 //删除分区 (parted) print Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志(parted) mkpart 分区名称? []? test1 文件系统类型? [ext2]? ext4 起始点?0 //以0开始,出现了警告,这里是字节对齐的原因造成的,所以一般为了避免警告,我们不以0开始。 结束点? 1000M警告: The resulting partition is not properly aligned for best performance.忽略/Ignore/放弃/Cancel? cancel (parted) mkpart分区名称? []? test1 文件系统类型? [ext2]? ext4 起始点?1 结束点?1000M (parted) print Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志 1 1049kB 1000MB 999MB test1(parted) mkpart 分区名称? []? test2 文件系统类型? [ext2]? ext4 起始点? 1000M 结束点? 1500M (parted) printModel: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志 1 1049kB 1000MB 999MB test1 2 1000MB 1500MB 500MB test2//上面是交互模式,下面是命令模式(parted) mkpart test3
1500 3000 //使用一条命令直接搞定 分区名 起始位 结束位 警告: The resulting partition is not properly aligned for best performance. //出现分区的原因是起始的1500和上次结束的1500重叠了。忽略/Ignore/放弃/Cancel? cancel (parted) mkpart test3 1501M 1700M (parted) mkpart test4 1701M 1800M (parted) mkpart test5 1801M 1900M (parted) print Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志 1 1049kB 1000MB 999MB test1 2 1000MB 1500MB 500MB test2 3 1501MB 1700MB 199MB test3 4 1701MB 1800MB 99.6MB test4 5 1801MB 1900MB 98.6MB test5(parted)
rm 5(parted) quit
分区完以后,就是格式化和挂载分区了。也就是设置文件系统。在这里需要注意以下内容:MBR分区只能格式化主分区和扩展分区,逻辑分无不能格式化 GPT分区,在格式化以后,只能使用parted 的print查看格式结果 挂载分区:分区默认的挂载目录/mnt目录挂载点必须存在。[root@joe dev]#
ls -l /dev/sdb*
brw-rw----. 1 root disk 8, 16 5月 7 01:18 /dev/sdbbrw-rw----. 1 root disk 8, 17 5月 7 01:18 /dev/sdb1brw-rw----. 1 root disk 8, 18 5月 7 01:18 /dev/sdb2brw-rw----. 1 root disk 8, 19 5月 7 01:18 /dev/sdb3brw-rw----. 1 root disk 8, 21 5月 7 01:18 /dev/sdb5brw-rw----. 1 root disk 8, 22 5月 7 01:18 /dev/sdb6[root@joe dev]# mkfs.ext3
/dev/sdb1 //第一种设置方式mke2fs 1.41.12 (17-May-2010)文件系统标签=操作系统:Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks502944 inodes, 2008117 blocks100405 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=205940326462 block groups32768 blocks per group, 32768 fragments per group8112 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632正在写入inode表: 完成 Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成This filesystem will be automatically checked every 23 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.[root@joe dev]# mkfs
-t ext4 /dev/sdb2 //第二种方法mke2fs 1.41.12 (17-May-2010)文件系统标签=操作系统:Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks50288 inodes, 200812 blocks10040 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=2097152007 block groups32768 blocks per group, 32768 fragments per group7184 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840正在写入inode表: 完成 Creating journal (4096 blocks): 完成Writing superblocks and filesystem accounting information: 完成This filesystem will be automatically checked every 26 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.[root@joe dev]#
mkdir -p /mnt/joetest //首先建立挂载点[root@joe dev]#
mount /dev/sdb1 /mnt/joetest/ //挂载分区[root@joe dev]#
umount /mnt/joetest/ //卸载挂载点上面这中挂载方式是临时的,永久性的应该如下:vim
+ /etc/fstab在末尾插入一行
/dev/sdb1 /mnt/imooc ext3 default 0 0设备名称 挂载点 文件系统类型保存退出即可
swap交换分区(步骤为:建立一个普通的Linux分区,修改分区类型的16进制编码,格式化交换分区,启用交换分区。[root@joe dev]#
fdisk /dev/sdbWARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/sdb1 1 1000 8032468+ 83 Linux/dev/sdb2 1001 1100 803250 83 Linux/dev/sdb3 1101 2610 12129075 5 Extended/dev/sdb5 1101 1500 3212968+ 83 Linux/dev/sdb6 1501 2610 8916043+ 83 LinuxCommand (m for help): tPartition number (1-6):
2 //修改IDHex code (type L to list codes): L 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9
82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic
83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-Hex code (type L to list codes): 82Changed system type of partition 2 to 82 (Linux swap / Solaris)Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@joe dev]# fdisk
/dev/sdbWARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/sdb1 1 1000 8032468+ 83 Linux/dev/sdb2 1001 1100 803250
82 Linux swap / Solaris/dev/sdb3 1101 2610 12129075 5 Extended/dev/sdb5 1101 1500 3212968+ 83 Linux/dev/sdb6 1501 2610 8916043+ 83 LinuxCommand (m for help): q[root@joe dev]# mkswap
/dev/sdb2 //设置交换区Setting up swapspace version 1, size = 803244 KiBno label, UUID=c7d31434-4013-4bbb-b68e-29b501934377[root@joe dev]# swapon
/dev/sdb2 //开启交换区[root@joe dev]# free total used free shared buffers cachedMem: 1030612 132468 898144 0 13612 51388-/+ buffers/cache: 67468 963144Swap:
2851232 0 2851232[root@joe dev]# swapoff
/dev/sdb2 //关闭交换区[root@joe dev]#