5장. librbd(Python)
rbd
python 모듈은 RBD 이미지에 파일와 유사한 액세스를 제공합니다. 이 기본 제공 툴을 사용하려면 rbd
및 rados
모듈을 가져와야 합니다.
생성 및 이미지에 쓰기
RADOS에 연결하고 IO 컨텍스트를 엽니다.
cluster = rados.Rados(conffile='my_ceph.conf') cluster.connect() ioctx = cluster.open_ioctx('mypool')
cluster = rados.Rados(conffile='my_ceph.conf') cluster.connect() ioctx = cluster.open_ioctx('mypool')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지를 생성하는 데 사용하는
:class:rbd.RBD
오브젝트를 인스턴스화합니다.rbd_inst = rbd.RBD() size = 4 * 1024**3 # 4 GiB rbd_inst.create(ioctx, 'myimage', size)
rbd_inst = rbd.RBD() size = 4 * 1024**3 # 4 GiB rbd_inst.create(ioctx, 'myimage', size)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지에서 I/O를 수행하려면
:class:rbd.Image
오브젝트를 인스턴스화합니다.image = rbd.Image(ioctx, 'myimage') data = 'foo' * 200 image.write(data, 0)
image = rbd.Image(ioctx, 'myimage') data = 'foo' * 200 image.write(data, 0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 이미지의 처음 600바이트에 'foo'를 씁니다. 데이터는
:type:unicode
-librbd
는:c:type:char
보다 광범위한 문자를 처리하는 방법을 알 수 없습니다.이미지, IO 컨텍스트, RADOS에 대한 연결을 종료합니다.
image.close() ioctx.close() cluster.shutdown()
image.close() ioctx.close() cluster.shutdown()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 안전하려면 각 호출이 별도의
:finally
블록에 있어야합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이는 번거로움일 수 있으므로 Rados,Ioctx, Image 클래스는 자동으로 닫히거나 종료되는 컨텍스트 관리자로 사용할 수 있습니다. 컨텍스트 관리자로 이를 사용하면 위의 예는 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow