Arch Linux 가이드에 따라 parted를 사용하여 스크립트에서 스왑 파티션을 생성하려고 합니다.
https://wiki.archlinux.org/title/Parted#Partition_schemes
어쨌든 항상 파일 시스템 유형을 건너뛰고 대신 파티션 레이블로 사용합니다.
parted를 수동으로 실행하면 올바른 파일 시스템 linux-swap(v1)이 생성됩니다.
root@NAS[~]# parted /dev/sdb
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you
want to continue?
Yes/No? y
(parted) mkpart
Partition name? []?
File system type? [ext2]? linux-swap
Start? 0%
End? 100%
다음 명령으로 parted를 실행하면 "빈" 파일 시스템이 생성되고 파티션 레이블 "linux-swap"이 할당됩니다.
root@NAS[~]# parted /dev/sdb -s mklabel gpt -- mkpart linux-swap 0% 100%
비교하다
parted (manually) - CORRECT FILESYSTEM
=================
root@NAS[~]# parted /dev/sdb print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4294MB 4293MB linux-swap(v1)
parted (script command) - WRONG FILESYSTEM
=======================
root@NAS[~]# parted /dev/sdb print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4294MB 4293MB linux-swap
내가 무엇을 놓치고 있나요?
답변1
parted
명령에서는 스왑 공간을 만들 수 없습니다 . 스왑 파티션임을 나타내기 위해 파티션 레이블을 설정할 수 있지만 다음과 같은 것은 아닙니다.
dd bs=1M count=100 if=/dev/zero >/tmp/100m.img
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.687057 s, 153 MB/s
lo=$(losetup --show --find /tmp/100m.img); echo $lo
/dev/loop0
parted $lo --script --align optimal unit MiB mklabel gpt mkpart primary linux-swap 1 100% print
Model: Loopback device (loopback)
Disk /dev/loop0: 200MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1.00MiB 100MiB 99.0MiB linux-swap(v1) primary
이제 스왑 파티션이 준비되면 mkswap
덮어썼다는 경고가 표시되지만 그렇지 않습니다.
mkswap ${lo}p1
Setting up swapspace version 1, size = 99 MiB (103784448 bytes)
no label, UUID=1abc5a9d-9c2e-452f-be16-d63f7e8e6af1
덮어쓰기("이전 스왑 서명 지우기")를 보여주기 위해 스왑 공간 준비를 반복해 보겠습니다.
mkswap ${lo}p1
mkswap: /dev/loop0p1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 99 MiB (103784448 bytes)
no label, UUID=2af1524b-101b-4e30-bdc0-2dfcadc1cde8
마지막으로 루프백 장치를 제거하고 임시 이미지 파일을 삭제합니다.
losetup -d $lo
rm -f /tmp/100m.img
여기서 결론은 parted
스왑 파티션은 즉시 사용할 준비가 되어 있지 않으며 실제로 준비할 수도 없다는 것입니다.
답변2
parted
다음 명령을 사용하여 mkswap
스왑 공간을 포맷 할 수 있습니다.
sudo mkswap /dev/sdb
답변3
mkpart linux-swap 0% 100%
사이에 파티션 이름을 놓친 것 같아서 파일 시스템 유형 mkpart
이 linux-swap
아닌 파티션 이름으로 후자가 사용됩니다.