前言:
下面将总结磁盘管理相关的知识,主要包括磁盘的分区,格式化,挂载,我觉得学习linux的磁盘管理应该和windos结合起来,要明白两种操作系统对磁盘管理的相同点与不同的地方,这样横向总结效果更好。
Windos与Linux对磁盘管理的对比:
1.Windos下的磁盘管理:
1)分区;
说明:我们的电脑磁盘出厂经过初始化后,要想使用,就要对其进行分区,由于受MBR分区表的限制,最多分成4个主分区,如果想要更多的分区,那么可以分成3个主分区和1个扩展分区,其中的扩展分区进而分成多个逻辑分区。
2)格式化;
说明:为分区分配文件系统类型,例如设置为FAT16、或FAT32又或者NTFS。
3)分配盘符;
说明:例如D盘,也可以想象成把其中的一个分区挂载到我的电脑/D盘目录下面。
4)直接对磁盘文件进行读写操作。
2.linux下的磁盘管理:
1)与windos相同,要使用该磁盘首先为磁盘分区;
2)与windos相同,要对磁盘进行格式化,为分区分配文件系统类型,不同的是linux的文件系统通常为ext2、ext3、ext4;
3)在Linux下面无法看到分区,无法像windos有图形化界面直接为磁盘分配盘符,而是给每个分区起了个名字,以文件形式存在,例如sda1,其中sd表示sata接口的磁盘,a表示第一块磁盘,在这使用磁盘方面,windos比linux操作更方便;
4)将磁盘的某一个分区挂载到特定目录,例如把sda2 挂载到/home目录;
5)与windos一样,直接对文件的读写操作。
Linux下的磁盘操作:
1.分区:
分区命令:fdisk + 设备名称
说明:
因为系统管理硬盘,一定要有root权限才能进行分区
fdisk 设备名称
查看硬盘的详细信息:
- [xianzan@centos ~]$ sudo fdisk -l /dev/sdb
- Disk /dev/sdb: 21.5 GB, 21474836480 bytes
- 255 heads, 63 sectors/track(扇区), 2610 cylinders(柱面)
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- [xianzan@centos ~]$ sudo fdisk -l /dev/sda
- Disk /dev/sda: 32.2 GB, 32212254720 bytes
- 255 heads, 63 sectors/track, 3916 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x0007d77e
- Device Boot Start End Blocks Id System
- /dev/sda1 1 262 2097152 82 Linux swap / Solaris
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 * 262 3917 29359104 83 Linux
- [xianzan@centos ~]$ sudo fdisk /dev/sdb
- 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
- 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): n //添加一个新的分区
- Command action
- e extended //扩张分区
- p primary partition (1-4) //主分区
- p
- Partition number (1-4): 1 //分区标号
- First cylinder (1-2610, default 1): 1 //分区的大小,默认是以柱面大小进行分配
- Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 1305
- Command (m for help): p //打印当前的分区表
- Command (m for help): w //写分区表到磁盘并且退出
- [xianzan@centos ~]$ sudo fdisk /dev/sdb
- 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): n
- Command action
- e extended
- p primary partition (1-4)
- e
- Partition number (1-4): 2
- First cylinder (1306-2610, default 1306):
- Using default value 1306
- Last cylinder, +cylinders or +size{K,M,G} (1306-2610, default 2610):
- Using default value 2610
- Command (m for help): w
- Disk /dev/sdb: 21.5 GB, 21474836480 bytes
- 255 heads, 63 sectors/track, 2610 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xeb3b51ab
- Device Boot Start End Blocks Id System
- /dev/sdb1 1 1305 10482381 83 Linux
- Command (m for help): d
- Partition number (1-5): 2
- Command (m for help): p
- Disk /dev/sdb: 21.5 GB, 21474836480 bytes
- 255 heads, 63 sectors/track, 2610 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xf622ac89
- Device Boot Start End Blocks Id System
- /dev/sdb1 1 1305 10482381 83 Linux
2.格式化:
命令:mkfs -t fstype device
说明:
-t fstype fstype是要创建的文件系统的类型,如ext2、ext3、ext4等,不同版本的Linux具有不同的默认文件系统;
device 为要在其上面创建文件系统的设备的名称。
将sdb1格式化为ext4格式:
- [xianzan@centos ~]$ sudo mkfs -t ext4 /dev/sdb1
- mke2fs 1.41.12 (17-May-2010)
- 文件系统标签=
- 操作系统:Linux
- 块大小=4096 (log=2)
- 分块大小=4096 (log=2)
- Stride=0 blocks, Stripe width=0 blocks
- 655360 inodes, 2620595 blocks
- 131029 blocks (5.00%) reserved for the super user
- 第一个数据块=0
- Maximum filesystem blocks=2684354560
- 80 block groups
- 32768 blocks per group, 32768 fragments per group
- 8192 inodes per group
- Superblock 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 20 mounts or
- 180 days, whichever comes first. Use tune2fs -c or -i to override.
3.挂载:
命令:mout -t 文件系统 挂载设备 挂载点
说明:
挂载点通常要挂载/mnt目录下
通常在/mnt目录下创建文件夹,作为挂载点:
- [xianzan@centos ~]$ cd /mnt/
- [xianzan@centos mnt]$ sudo mkdir sdb1
- [xianzan@centos mnt]$ sudo mv sdb1 data
- [xianzan@centos mnt]$ sudo mount -t ext4 /dev/sdb1 /mnt/data/
- [xianzan@centos mnt]$ ls
- cdrom data hgfs
- [xianzan@centos mnt]$ mount
- /dev/sda2 on / type ext4 (rw)
- proc on /proc type proc (rw)
- sysfs on /sys type sysfs (rw)
- devpts on /dev/pts type devpts (rw,gid=5,mode=620)
- tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
- none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
- .host:/ on /mnt/hgfs type vmhgfs (rw,ttl=1)
- vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
- /dev/sr0 on /media/CentOS_6.7_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=500,gid=500,iocharset=utf8,mode=0400,dmode=0500)
- /dev/sdb1 on /mnt/data type ext4 (rw)
对挂载点的分区进行操作:
- [xianzan@centos mnt]$ cd data/
- [xianzan@centos data]$ ls
- lost+found
- [xianzan@centos data]$ sudo rm -rf *
- [xianzan@centos data]$ sudo touch sql.db
- [xianzan@centos data]$ ls
- sql.db
- [xianzan@centos ~]$ sudo umount /mnt/data/
- [xianzan@centos ~]$ ls /mnt/data/
- 你找不到sql.db文件,只有重新挂载才能找到sql.db文件
- [xianzan@centos data]$ sudo touch hello.txt
- [xianzan@centos data]$ ls
- hello.txt
- [xianzan@centos data]$ sudo mount /dev/sdb1 /mnt/data/
- [xianzan@centos data]$ ls
- sql.db
问题:
只存在挂载点创建的sql.db文件,为挂载是在挂载点创建的hello.txt没有找到,那文件在哪里了?
可以这样理解:
1)在挂载点挂载之前创建的文件夹或者文件是属于根的;
2)在挂载点挂载之后创造的文件或者文件夹是属于挂载的磁盘的;
3)就像在Windos下,没有插U盘时,在文件夹下创建文件或者文件夹,和插U盘后在U盘创建文件或者文件夹。