storage / knowledge
Debian에 새 디스크 붙여 마운트하기
VM에 디스크를 하나 더 붙였으면 게스트 안에서 파티션을 잡고 마운트해줘야 한다. Docker 데이터를 담을 128GB 디스크를 /srv/docker 에 붙인 과정이다.
지금 뭐가 붙어 있나
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 30.3G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 1.7G 0 part [SWAP]
sdb 8:16 0 128G 0 disk
sdb 가 새로 붙인 것이다. 아래에 파티션이 없다.
$ sudo parted /dev/sdb print
Error: /dev/sdb: unrecognised disk label
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 137GB
Partition Table: unknown
label 자체가 없는 빈 디스크다.
파티션 만들기
$ parted /dev/sdb --script mklabel gpt
$ parted /dev/sdb --script mkpart primary ext4 0% 100%
GPT로 label을 만들고 전체를 파티션 하나로 잡는다. 0% 100% 로 주면 parted가 정렬을 알아서 맞춘다. 섹터 번호를 직접 넣으면 어긋나기 쉽다.
--script 는 확인 프롬프트를 띄우지 않는다. 대상 디스크를 잘못 적으면 그대로 날아가니 lsblk 로 한 번 더 확인하고 친다.
포맷과 마운트
$ mkfs.ext4 -L docker-data /dev/sdb1
$ mkdir -p /srv/docker
-L 로 label을 붙여두면 나중에 이 디스크가 뭐였는지 알아보기 쉽다.
$ blkid /dev/sdb1
여기서 나온 UUID를 fstab에 적는다.
UUID=<blkid로 확인한 값> /srv/docker ext4 defaults 0 2
장치 이름(/dev/sdb1)이 아니라 UUID로 적는다. 디스크를 더 붙이거나 순서가 바뀌면 sdb 가 sdc 가 될 수 있는데, 그러면 부팅할 때 엉뚱한 걸 마운트하거나 실패한다.
마지막 2 는 fsck 순서다. 루트가 아닌 파일 시스템은 2를 준다.
$ mount -a
mount -a 로 fstab을 지금 적용해본다. 재부팅 전에 여기서 확인해야 한다. fstab에 오타가 있으면 다음 부팅에서 시스템이 못 올라온다.
소유권
$ chown -R dockeruser:dockeruser /srv/docker
$ chmod 755 /srv/docker
마운트하면 소유가 root 로 돌아가므로 마운트한 뒤에 잡아준다. 마운트 전에 만들어둔 디렉토리에 권한을 줘봐야 가려진다.