Parted 命令

知道Gparted吧? 这个parted就是它的无图形化界面.

我还是推荐大家用Gparted, 因为操作很直观嘛. 当然, 学了parted更好啦, 有些时候没有图形化界面, 就得需要命令行界面了.

还要记住一点, 每次操作的时候, 你必须清楚地明白你在做什么, 否则没有后悔药给你吃的.

你也知道数据恢复是多么的昂贵.

正餐开始(看看就好, 不必上手操作的):

选择要操作的分区

当你直接输入parted的时候, 默认的操作对象是系统中第一个可用的分区.

下面的例子中, 它自动选择了/dev/sda 做为操作对象, 因为这是系统中第一个可用的分区.

  1. # parted
  2. GNU Parted 2.3
  3. Using /dev/sda
  4. Welcome to GNU Parted! Type 'help' to view a list of commands.
  5. (parted)
  6. To choose a different hard disk, use the select command as shown below.
  7. (parted) select /dev/sdb

当他找不到所选择的分区时, 就会抛出一个错误:

  1. Error: Error opening /dev/sdb: No medium found
  2. Retry/Cancel? y

用print显示所有可操作的磁盘

用这个命令可以显示出所有可操作的磁盘分区, 他还能够显示一些磁盘的属性, 比如模式, 大小, 蔟大小, 分区表信息等等.

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended
  11. 5 266GB 269GB 2682MB logical ext4
  12. 7 269GB 270GB 524MB logical ext4
  13. 8 270GB 366GB 96.8GB logical lvm
  14. 6 366GB 370GB 3999MB logical linux-swap(v1)
  15. 9 370GB 500GB 130GB logical ext4

用mkpart在硬盘中创建主分区

mkpart命令可以创建主分区和逻辑分区, 他所需要的参数是 STARTEND.也就是标记从哪儿分, 分到哪儿. 单位是MB.

下面的例子分了一个15G的区:

  1. (parted) mkpart primary 106 16179

你也可以用下面的例子来开启磁盘的boot标志, 使之作为一个启动硬盘. Linux保留了1-4或者1-3作为主分区, 把其他的数字所谓扩展分区.

  1. (parted) set 1 boot on

用mkpart在硬盘中创建逻辑分区

在执行操作之前, 我们先看看磁盘的信息:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended
  11. 5 266GB 316GB 50.0GB logical ext4
  12. 6 316GB 324GB 7999MB logical linux-swap(v1)
  13. 7 324GB 344GB 20.0GB logical ext4
  14. 8 344GB 364GB 20.0GB logical ext2

用下面的命令来创建一个128G的逻辑分区:

  1. (parted) mkpart logical 372737 500000

现在我们再来查看一下磁盘信息:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended
  11. 5 266GB 316GB 50.0GB logical ext4
  12. 6 316GB 324GB 7999MB logical linux-swap(v1)
  13. 7 324GB 344GB 20.0GB logical ext4
  14. 8 344GB 364GB 20.0GB logical ext2
  15. 9 373GB 500GB 127GB logical

用mkfs创建文件系统

有了磁盘还不算完, 还要在里面创建文件系统, 当然, 这种操作也是极其危险的, 因为格式化之后的数据将会全部丢失. Parted支持的文件系统有:ext2, mips, fat16, fat32, linux-swap 和 reiserfs(如果安装了libreiserfs的话).

下面的例子把第八块儿分区的格式从ext4变为了ext2:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended 5 266GB 316GB 50.0GB logical ext4
  11. 6 316GB 324GB 7999MB logical linux-swap(v1)
  12. 7 324GB 344GB 20.0GB logical ext4
  13. 8 344GB 364GB 20.0GB logical ext4
  14. 9 364GB 500GB 136GB logical ext4

然后开始格式化:

  1. (parted) mkfs
  2. Warning: The existing file system will be destroyed and
  3. all data on the partition will be lost. Do you want to
  4. continue?
  5. Yes/No? y
  6. Partition number? 8
  7. File system type?
  8. [ext2]? ext2

执行完成之后我们再来看一下:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended 5 266GB 316GB 50.0GB logical ext4
  11. 6 316GB 324GB 7999MB logical linux-swap(v1)
  12. 7 324GB 344GB 20.0GB logical ext4
  13. 8 344GB 364GB 20.0GB logical ext2
  14. 9 364GB 500GB 136GB logical ext4

(没错我就是复制上面的内容然后再把4改成2的.)

用mkpartfs既划分磁盘又对分区进行格式化

其实就是把上面的两条命令组合了起来, 可以这么理解.

先是看一下原分区什么样:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended 5 266GB 316GB 50.0GB logical ext4
  11. 6 316GB 324GB 7999MB logical linux-swap(v1)
  12. 7 324GB 344GB 20.0GB logical ext4
  13. 8 344GB 364GB 20.0GB logical

然后我们新建一个分区并格式化:

  1. (parted) mkpartfs logical fat32 372737 500000

然后再看看新的磁盘信息:

  1. (parted) print
  2. Model: ATA WDC WD5000BPVT-7 (scsi)
  3. Disk /dev/sda: 500GB
  4. Sector size (logical/physical): 512B/4096B
  5. Partition Table: msdos
  6. Number Start End Size Type Filesystem Flags
  7. 1 1049kB 106MB 105MB primary fat16 diag
  8. 2 106MB 15.8GB 15.7GB primary ntfs boot
  9. 3 15.8GB 266GB 251GB primary ntfs
  10. 4 266GB 500GB 234GB extended 5 266GB 316GB 50.0GB logical ext4
  11. 6 316GB 324GB 7999MB logical linux-swap(v1)
  12. 7 324GB 344GB 20.0GB logical ext4
  13. 8 344GB 364GB 20.0GB logical 9 373GB 500GB 127GB logical fat32 lba
  14. (parted)

用resize来改变分区大小

  1. (parted) resize 9
  2. Start? [373GB]? 373GB
  3. End? [500GB]? 450GB

很简单的, 选中要操作的对象, 然后选择开始, 在选择结束, 就OK了.(其实用Gparted更简单, 直接拖动就好了…)

然后下面还是一堆磁盘信息, 节省篇幅, 我就不贴了.

用cp来复制分区

这个命令有点厉害, 类似于dd, 他可以把整个分区都复制到别处(别的分区). 需要注意的是, 保存被复制的分区的大小一定要足够, 还有, 这是一个覆盖操作.

(作者又打印了一遍磁盘信息, 我在此略过)

建议把要操作的两块磁盘都先卸载, 以免有其他的程序对他们进行读写.

  1. # mount /dev/sda8 /mnt
  2. # cd /mnt
  3. # ls -l
  4. total 52
  5. -rw-r--r-- 1 root root
  6. -rw-r--r-- 1 root root
  7. 0 2011-09-26 22:52 part8
  8. 20 2011-09-26 22:52 test.txt
  9. # umount /mnt
  10. # mount /dev/sda10 /mnt
  11. # cd /mnt
  12. # ls -l
  13. total 48
  14. -rw-r--r-- 1 root root 0 2011-09-26 22:52 part10

cp命令把8复制到10:

  1. (parted) cp 8 10
  2. growing file system... 95% (time left 00:38)

下面是复制完成之后的结果:

  1. # mount /dev/sda10 /mnt
  2. # cd /mnt
  3. # ls -l
  4. total 52
  5. -rw-r--r-- 1 root root 0 2011-09-26 22:52 part8
  6. -rw-r--r-- 1 root root 20 2011-09-26 22:52 test.txt

另外需要注意的是, 如果目标磁盘和被复制的磁盘的文件系统不一致, 这个复制操作将会重建目标磁盘的文件系统使其和被复制的磁盘分区一样.(也就是说, 复制操作使得两个分区一模(mu)一样.)

用rm命令移除某个分区

  1. (parted) rm
  2. Partition number? 9
  3. (parted)

也很简单…

这样一删的话, 里面的东西就全没了 :)