[Linux/Ubuntu 파일 시스템 관리] File system 생성하고 관리하기 (parted로 파티션 크기 변경하기) (02)
sfdisk로 partition 복사하기
sfdisk를 이용하여 partition table을 백업하거나 복사할 수 있다.
- sudo sfdisk -d /dev/sdb > sdb-part-table
; partition table을 파일로 백업한다. - sudo sfdisk /dev/sdb < sdb-part-table
; partition table 정보 파일을 가지고 복원한다. - sudo sfdisk /dev/sdb | sfdisk /dev/sda
; partition table 정보를 복사한다.
참고)
sfdisk는 GUID partition table (GPT)를 지원하지 않으며, 대용량의 partition을 위해 설계되지 않았다고 기술되어 있다. 되도록 parted 사용을 권고하고 있다(익숙하지 않다면, gui로 구성된 gparted를 사용할 수 있다).
parted로 disk 파티션(partition) 크기 변경하기
fdisk 이외에도 parted를 이용하여 disk의 partition을 변경할 수 있다. 물론, parted에 좀더 유용한 기능들이 많다.
~$ sudo parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 5049MB 5049MB primary ntfs
2 5049MB 42.9GB 37.9GB extended
5 5049MB 42.4GB 37.4GB logical ext4
6 42.4GB 42.9GB 535MB logical linux-swap(v1)
~$
interactive하게 실행하려면 그냥 "parted" 명령만 사용하면 되며, 사용할 device(예, /dev/sda)를 함께 적어줘도 된다.
~$ sudo parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
좀더 interactive한 사용을 위해 bash shell과 유사하게 Tab 키를 사용할 수 있으며, 명령과 argument를 한번에 전달하거나, 명령만 전달하고 guide를 통해 argument를 입력할 수도 있다.
~$ sudo parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart primary ext3 1MB 10GB
(parted)
...
~$ sudo parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext3
Start? 1MB
End? 10GB
(parted)
이렇게 만들어진 partition은 makefs.ext3 명령으로 format할 수 있다. ext3 partition은 다음과 같이 크기 조절할 수 있다.
~$ ls /dev/sd?
/dev/sda /dev/sdb /dev/sdc
~$ ls /dev/sda?
ls: cannot access /dev/sda?: No such file or directory
즉, /dev/sda harddisk가 새로 추가됨이 확인된다. 이는 파티션이 현재 없는 것으로 가정하였다.
~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sda: unrecognised disk label
(parted) mklabel
New disk label type? msdos
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 1MB
End? 2GB
(parted)
그래서 위와 같이 parted의 mklabel을 실행한뒤 mkpart로 파티션 하나를 추가하였다.
그리고, 아래와 같이 ext4 filesystem으로 format한다.
~$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
122160 inodes, 487936 blocks
24396 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=503316480
15 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
그럼 아래와 같이 파티션 정보를 확인할 수 있다.
~$ sudo parted /dev/sda print
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 2000MB 1999MB primary ext4
그럼 이제 파티션의 크기를 2.5GB로 늘려보도록 하자.
~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resize
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Partition number? 1
Start? [1049kB]?
End? [2000MB]? 2500MB
Error: File system has an incompatible feature enabled. Compatible features are
has_journal, dir_index, filetype, sparse_super and large_file. Use tune2fs or
debugfs to remove features.
(parted)
위와같이 2.5GB로 크기를 변경하려고 하는데, 해당 file system에는 has_journal, dir_index, filetype, sparse_super 그리고 large_file 속성만 허용되고 그 이외는 허용되지 않는듯 하다.
그래서 아래와 같이 현재 해당 file system의 속성을 살펴보도록 한다.
~$ sudo debugfs /dev/sda1
debugfs 1.41.14 (22-Dec-2010)
debugfs: features
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
debugfs: q
~$
즉, 해당 file system에는 has_journal, ext_attr, ..., 그리고 extra_isize 속성이 포함되어 있다.
이들중, 허용되지 않은 속성을 아래와 같이 삭제하도록 하자.
~$ sudo debugfs -w /dev/sda1 -R "features ^ext_attr ^resize_inode ^extent ^flex_bg ^huge_file ^uninit_bg ^dir_nlink ^extra_isize"
debugfs 1.41.14 (22-Dec-2010)
Filesystem features: has_journal dir_index filetype sparse_super large_file
~$
그럼 위와 같이 현재 남아있는 속성은 parted에서 알려준 허용되는 속성만 포함되어 있어 성공할 것 같지만, 아래와 같이 여전히 실패하게 된다.
~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 2000MB 1999MB primary ext3
(parted) resize
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Partition number? 1
Start? [1049kB]?
End? [2000MB]? 2500MB
Warning: The file system has the 'dir_index' feature enabled. Parted can only
resize the file system if it disables this feature. You can enable it later by
running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD DEVICE'.
Ignore/Cancel? Cancel
(parted) q
Warning: You should reinstall your boot loader before rebooting. Read section 4
of the Parted User documentation for more information.
~$
즉, dir_index 속성도 비활성화 시켜 달라고 한다. 예로 나온 tune2fs대신 debugfs를 사용하여 제거하도록 한다.
~$ sudo debugfs -w /dev/sda1 -R "features ^dir_index"
debugfs 1.41.14 (22-Dec-2010)
Filesystem features: has_journal filetype sparse_super large_file
그럼 다음과 같이 parted를 통해 파티션 크기가 성공적으로 변경된것이 확인된다.
~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 2000MB 1999MB primary ext3
(parted) resize
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Partition number? 1
Start? [1049kB]?
End? [2000MB]? 2500MB
Warning: A resize operation on this file system will use EXPERIMENTAL code
that MAY CORRUPT it (although no one has reported any such damage yet).
You should at least backup your data first, and run 'e2fsck -f' afterwards.
OK/Cancel? OK
(parted) print
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 2500MB 2499MB primary ext3
(parted)
(참고)
- 파티션의 크기 변경은 parted 대신 GUI가 지원되는 gparted를 사용하고, GUI 환경이 아닌 부득이한 경우에, parted를 이용하도록 한다.
- 파티션의 크기 변경은 EXPERIMENTAL하므로, 중요한 경우, 사전에 백업이 필요할 수 있다.
- tune2fs 보다는 debugfs가 좀더 실행에 문제가 없었다.
'Research > Ubuntu' 카테고리의 다른 글
[Linux/Ubuntu 파일 시스템 관리] File system 포맷(format)하기 (0) | 2013.12.13 |
---|---|
[Linux/Ubuntu 파일 시스템 관리] File system label 작업하기 (0) | 2013.12.13 |
[Linux/Ubuntu 파일 시스템 관리] 기초 (0) | 2010.12.10 |
Linux/Ubuntu의 awk, cut, od, unix2dos (0) | 2010.12.09 |
Linux/Ubuntu에서 diff로 차이점 체크하기 (0) | 2010.12.08 |